1、字符型数据Teacher teaching designCONTENTS 目 录自主学习 明确考点案例剖析 交流提升案例分析 仿真演练自主学习 明确考点PART 01自主学习 明确考点考点一、字符型常量的定义形式是:用单引号括起来的一个字符。例如:a、b、=、+、?都是合法字符常量。在语言中,字符常量有以下特点:1、字符常量只能用单引号括起来,不能用双引号或其它括号。2、字符常量只能是单个字符,不能是字符串。3、字符可以是字符集中任意字符。但数字被定义为字符型之后就不能参与数值运算。如5和5 是不同的。5是字符常量,不能参与运算。考点二、在C语言中,字符型常量的表示形式有:(1)单引号作定界符
2、;(2)转义字符:以反斜线“”开头,后面跟上特定的字符,或者跟上13位八进制整数(前面不要加0)或12位十六进制整数(前面加小写字母x),反斜线后面的整数表示对应字符的ASCII。注意在程序中转义字符的左右同样要以单引号定界。例如:101 x41在统计字符个数时,只能记为一只能记为一个A字符。71 x39表示什么字符。自主学习 明确考点常用的转义字符及其含义转义字符转义字符转义字符的意义转义字符的意义ASCIIASCII代码代码 n n回车换行回车换行1010 t t横向跳到下一制表位置横向跳到下一制表位置9 9 b b退格退格8 8 r r回车回车1313 f f走纸换页走纸换页1212反斜
3、线符反斜线符9292单引号符单引号符3939”双引号符双引号符3434 a a鸣铃鸣铃7 7 dddddd1 13位八进制数所代表的字符位八进制数所代表的字符 xhhxhh1 12位十六进制数所代表的字符位十六进制数所代表的字符广义地讲,语言字符集中的任何一个字符均可用转义字符来表示。表中的ddd和xhh正是为此而提出的。ddd和hh分别为八进制和十六进制的ASCII代码。如101表示字母A,102表示字母B,134表示反斜线,XOA表示换行等。自主学习 明确考点考点三、字符数据在内存中的存储形式及使用方法每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式
4、存放在变量的内存单元之中的。如x的十进制ASCII码是120,y的十进制ASCII码是121。对字符变量a,b赋予x和y值:a=x;b=y;实际上是在a,b两个单元内存放120和121的二进制代码:a:b:所以也可以把它们看成是整型量。语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低八位字节参与处理。考点四、字符型变量的定义及对应的格式控制符字符变量的类型说明符是char。字符变量类型定义的格式和书写规则都与整型变量相同。例如:char a,b;字符变
5、量的格式说明符是%c。0111100001111001自主学习 明确考点考点五、字符串常量的组成及与字符常量的区别字符串常量是由一对双引号括起的字符序列。例如:CHINA,“C program”,$12.5 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别:1)字符常量由单引号括起来,字符串常量由双引号括起来。2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在语言中没有相应的字符串变量。这是与其他语言不同的。但是可以用一个字符数组来存放一个字符串常量,在数组一章内予以介绍
6、。4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符0(ASCII码为0)。这是字符串结束的标志。例如:字符串 C program 在内存中所占的字节为:字符常量a和字符串常量a虽然都只有一个字符,但在内存中的情况是不同的。a在内存中占一个字节,可表示为:a在内存中占二个字节,可表示为:C program0aa0案例剖析 交流提升PART 02案例剖析 交流提升【例1】字符型常量的应用(转义字符的使用)。main()int a=5;printf(“at an101tx21n”);程序运行的结果为:5 5A !思考:为什么是这样的输出结果?
7、【例2】main()char ch1=o,ch2=n,ch3=e;prinft(“%c%c%cn”,ch1,ch2,ch3);运行结果为:one思考:在Turbo C中规定以一个字节来存放一个字符。将一个字符放到一个字符变量中,并不是把该字符放到内存单元中,而是将该字符的ASCII码存放到变量的内存单元之中的。如a的十进制ASCII码是97,b的十进制ASCII码是98。如果对字符变量ch1,ch2赋予x和y值。实际上是在ch1,ch2两个单元内存放97和98的二进制代码:ch1:00110001ch2:01111010所以在单字节的范围内,字符与整数是有联系的。案例剖析 交流提升【例3】字符
8、赋值给整型变量,整数赋值给字符变量。main()int i,j;char ch1,ch2;i=a;/*字符赋值给整型变量*/j=b;ch1=97;/*整数赋值给字符变量*/ch2=98;printf(%c,%cn,i,j);printf(%d,%dn,ch1,ch2);程序运行结果:a,b97,98思考:允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,同样也允许允许对整型变量赋以字符值,把整型量按字符量输出。仿真演练 体验探索PART 03案例分析 仿真演练1、下面不正确的字符串常量是()A)abc B)1212 C)0 D)“2、在C语言中,char型数据在内存中存储形式是(
9、)A)补码 B)反码 C)原码 D)ASCII码3、下面正确的字符常量是()A)c B)C)w D)“4、以下所列的C语言常量中,错误的是()A)0 xFF B)1.2e0.5 C)2L D)725、下面四个选项中,均是合法的浮点数的选项是()A)+1e+1 5e-9.4 03e2B)-60 12e-4 -8e5C)123e 1.2e-4 -8e5D)-e3 8e-4 5.e-0案例分析 仿真演练6、若有以下定义和语句:int u=010,v=0 x10,w=10;printf(%d,%d,%dn,u,v,w);则输出结果是()A)8,16,10 B)10,10,10 C)8,8,10 D)8,10,107、有如下程序main()printf(abt123n);printf(a101x41tb102x42)思考:转义字符对程序结果输出的影响?8、若有说明语句:char c=72;则变量c()A)包含1个字符 B)包含2个字符 C)包含3个字符 D)说明不合法,c的值不确定说明选择理由: