第19节 字符数据及字符类型

一.字符常量
用单引号括起来的一个字符,如’a’,’#’,’%’,‘D’

#include <stdio.h>
int main()
{
    
    
	char c1, c2;
	c1 = 'a';
	c2 = 'b';
	printf("%c %c", c1, c2);
}

二.字符当数字用

#include <stdio.h>
int main()
{
    
    
	char c1, c2;
	int i = 100;
	c1 = 'a';
	i = i - c1;
	printf("c1:%c\n", c1);
	printf("c1:%d,i:%d\n", c1, i);
	c2 = c1 + 4;
	printf("c2:%c\n", c2);
}
运行结果:
c1:a
c1:97,i:3
c2:e

三.ASCII码对照表
在这里插入图片描述

类型 字节 范围
[signed] char 1 -128~127
unsigned char 1 0~255

四.字符数据的输入输出

①scanf()/sanf_s() 和 printf()

#include <stdio.h>
int main()
{
    
    
	int x, y, z;
	char ch;
	scanf_s("%d%c%d", &x,&ch,2, &y); 
	z = x + y;
	printf("%d%c%d=%d\n", y, ch, x, z);
}
运行结果:
1+2
2+1=3

scanf_s函数输入字符型时,要写长度参数

②getchar()和putchar()

#include <stdio.h>
int main()
{
    
    
	char c;
	c = getchar();   //输入大写字母
	putchar(c + 32); //显示小写字母
	putchar('\n');
}
运行结果:
A
a

五.获得缓存区中的输入数据

#include <stdio.h>
int main()
{
    
    
	char c1, c2;
	c1 = getchar();
	c2 = getchar();
	printf("%c %c\n", c1, c2);
	printf("%d %d\n", c1, c2);
	return 0;
}
输入不同,显示不同结果:
输入abc<回车>
abc
a b
97 98
输入a<回车>
a
a

97 10

未显示字符c存入缓冲区

六.以\开头的字符序列----转义字符常量

例如: '\n’是一个字符,代表"换行"符
诸多“控制字符”在程序中无法用一般形式的字符表示,要采用转义字符

所有的转义字符和所对应的意义

转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 7
\b 退格(BS),将当前位置移到前一列 8
\f 换页 (FF),j将当前位置移到下页开头 12
\n 换行(LF),将当前位置移到下一行开头 10
\r 回车(CR),将当前位置移到本行开头 13
\t 水平制表(HT),跳到下一个TAB位置 9
\v 垂直制表(VT) 11
\ 代表一个反斜线字符’’ 92
代表一个单引号字符 39
" 代表一个双引号字符 34
\0 空字符(NULL) 0
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制数所代表的任意字符 二位16进制

七.转义字符用法示例

#include <stdio.h>
int main()
{
    
    
	printf("%.4f%.4f%.4f\n", 1.01, 2.2334, 3.4);
	printf("%.4f\t%.4f\t%.4f\n", 1.01, 2.2334, 3.4);
}
运行结果:
1.01002.23343.4000
1.0100  2.2334  3.4000
#include <stdio.h>
int main()
{
    
    
	printf("This\nis\na\n\t\ttest\n\nShe said, \"How are you?\"\n");
}
运行结果:
This
is
a
                test

She said, "How are you?"
#include <stdio.h>
int main()
{
    
    
	printf("笑脸:\001\n");
	printf("红黑桃:\003\t\006\n");
	printf("听个响:\a\n"); \\ \007 \7效果相同
	printf("换几行:a\012 b\n c\x0A d\n"); 
	printf("看字母:AB\n");
	printf("再看字母:\101\102\n");
	printf("再看字母:\101\b\102\n");
	printf("还看字母:\101\r\102\n");
}
运行结果:
笑脸:    /缺少字体显示方框
红黑桃:             /缺少字体显示方框
听个响:    /been响铃一声
换几行:a
 b
 c
 d
看字母:AB
再看字母:AB
再看字母:B
B看字母:A

八.ASCII编码与汉字编码的区别

ASCII编码:①标准只需要7位 ②实际占用1字节 ③最高位为0

"汉字"编码:①每个汉字2字 ②为和西文混合使用,每字节最高位均为1

九.字符串常量及存储
1.用双引号括起来的部分就是字符串常量
如:“abc”,“hello”,“a+b”,“He Lijian”
2.字符串常量"abc"在内存中占4个字节,而不是3字节

a b c \0

3.编译系统会自动加一个’\0’作为字符串结束标志
4.’\0’不是字符串的一部分,它只作为字符串的结束标志.如printf(“abc”);输出3个字符abc,不包’\0’;
5.“丁进"占5个字节
6.空字符串” "占1个字节
7.辨析:
① "a"和’a’的区别
char c;
c=‘a’; //正确
c=“a”; //错误
‘a’,“a”; //正确
‘aa’,“aa”; //有错误
②字符串常量"abc\n"包含4个字符,占5个字节

a b c \n \0

③分析"abc\\n"与"abc\\\n"的存储方式

a b c \ n \0
a b c \ \n \0

点击自测

实践项目
1.输入一个小写字母,输出对应的大写字母和ASCII码

#include <stdio.h>
int main()
{
    
    
	char ch;
	printf("输入一个小写字母: ");
	scanf_s("%c", &ch,1);
	ch = ch - 32;
	printf("与对应的大写字母: %c\n",ch);
	printf("大写字母 ASCII码: %d\n", ch);
}
运行结果:
输入一个小写字母: a
与对应的大写字母: A
大写字母 ASCII码: 65

2.利用\t对齐输出项

#include <stdio.h>
int main()
{
    
    
    printf("Name\tAge\tSalary\taddr\n");
    printf("Tom\t%d\t%6.1f\t%s\n", 20, 314.2, "NewYork");
    printf("Jerry\t%d\t%6.1f\t%s\n", 22, 7876.4, "BingJing");
    printf("Blotu\t%d\t%6.1f\t%s\n", 9, 5.5, "ShangHai");
    return 0;
}
运行结果:
Name    Age     Salary  addr
Tom     20       314.2  NewYork
Jerry   22      7876.4  BingJing
Blotu   9          5.5  ShangHai

猜你喜欢

转载自blog.csdn.net/m0_51439429/article/details/114712304
今日推荐