第6章 字符型数据[视频讲解]

6.1 字符型常量

视频二维码(扫码观看)

一、字符常量

一个字符常量代表ASCII字符集中的一个字符,用单引号把一个字符括起来作为字符常量。'A'、'C'、't'、'!'、'?'都是合法的字符常量。

【说明】

大写字母和小写字母代表不同的字符常量。

单引号中的空格符' '不能写成''。

字符常量只能包含一个字符,'abc'非法。

字符'a',字符串"a"。

字符常量在内存中占一个字节,存放的是字符的ASCII代码值。C语言规定,所有字符常量都作为整型量来处理,即ASCII代码值。

【常用】

字符常量'A'的值为65,'B'的值为66,…

字母字符'a'的值为97,'b'的值为98,…

数字字符'0'的值为48,'1'的值为49,…

空格字符' '的值为32。

二、转义字符常量

反斜线后面跟一个特定字符,用来表示某一个特定的ASCII字符。常见的:

【注意】

转义字符常量,如'\n'、'\101'、'\141'只代表一个字符。

反斜线后的八进制数可以不用0开头。如:'\101'代表的就是字符常量'A','\141'代表字符常量'a'。

反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不能用0x开头。如:'\x41'代表字符常量'A','\x6d'代表字符常量'm'。

三、字符串常量

定义:用双引号("")括起来的字符序列。

存储:每个字符串尾自动加一个'\0'作为字符串结束标志。

四、字符运算

(1)字符使用ASCII代码值来运算。

'B'-'A'=66-65=1

'a'+1=97+1=98='b'

9+'0'=9+48=57='9'

4+'0'=4+48=52='4'

(2)字符量可以进行关系运算。

如:'a'>'b'

(3)字符量可以进行逻辑运算。

如:'a'&&'b'

6.2 字符变量

视频二维码(扫码观看)

char c1,c2,c3;

int k=5;

c1='1';

c1++;

c2='A';

c3=(c2+32+k)%25;

6.3 字符输入和输出

视频二维码(扫码观看)

(1)scanf输出(<CR>代表Enter键)

#include <stdio.h>

char a,b,c;

scanf("%c%c%c",&a,&b,&c);

TH<CR>

E<CR>

【注意】在输入字符时,字符之间不应有间隔符,这时空格、回车符和横向跳格符(Tab键)都将作为字符读入。

可以在格式说明串中加入空格,如:

scanf("%c%c%c",&a,&b,&c);

输出:ABC<CR>

scanf("%c  %c  %c",&a,&b,&c);

输出:A  B  C<CR>

(2)printf输出

char a='S';

printf("a=%c\n",a);

输出形式为:a=S

a='A'

printf("a=%3c\n",a);

输出形式为:a= A

(3)getchar、putchar输入输出

putchar函数用于输出字符,其调用形式如下:

putchar(ch);

putchar('Y');

getchar函数用于输入字符,其调用形式如下:

ch=getchar();

getchar()后的一对圆括号内没有参数,但这一对圆括号不可少,getchar()函数从终端读入一个字符作为函数值。

在输入时,空格、回车符都将作为字符读入。

【注意】用户敲入Enter键时,读入才开始执行。

6.4 程序举例

视频二维码(扫码观看)

【例1】从终端输入的一行字符中所有的小写字母转换成大写字母,其他字符不变。

#include <stdio.h>
main()
{
  char c;
  while((c=getchar())!='\n')
  {
    if(c>='a'&&c<='z')c=c-'a'+'A';
    putchar(c);
  }
  putchar('\n');
}

【例2】编写程序统计输入的字符中空格符、换行符和横向跳格(制表)符的个数,用!号结束输入。

#include <stdio.h>
#include <ctype.h>
main()
{
  long n=0;
  char ch;
  while((ch=getchar())!='!')
    if(isspace(ch))n++;
  printf("n=%ld\n",n);
}

6.5 习题解析

1C语言中的简单数据类型有(  )

A.整型、实型、逻辑型

B.整型、实型、字符型

C.整型、字符型、逻辑型

D.整型、实型、逻辑型、字符型

2判断char型变量c是否为大写字母的正确的表达式是(  )

A.'A'<=c<='Z'

B.(c>='A')||(c<='Z')

C.('A'<=c)AND('Z'>=c)

D.(c>='A')&&(c<='Z')

3请编写程序统计输入的一行中小写字母的个数。