题为c程序设计(第五版) 谭浩强 第5章第4题
代码如下:
#include <stdio.h>
#include <ctype.h>
int main()
{
char c;
int letter = 0, space = 0, digit = 0, other = 0;
printf("请输入一行字符:\n");
while ((c = getchar()) != '\n')
{
if (isalpha(c))
letter++;
else if (isspace(c))
space++;
else if (isdigit(c))
digit++;
else
other++;
}
printf("字母个数:%d\n", letter);
printf("空格个数:%d\n", space);
printf("数字个数:%d\n", digit);
printf("其他字符个数:%d\n", other);
return 0;
}
运行结果:
代码分析:
- 第 1 行:包含了两个头文件,
stdio.h
和ctype.h
。stdio.h
包含了输入输出函数,而ctype.h
包含了字符处理函数。 - 第 3 行:定义了一个
main()
函数。 - 第 5 行:定义了一个字符变量
c
,用于存储输入的字符。 - 第 6 行:定义了四个整型变量
letter
、space
、digit
和other
,分别用于存储英文字母、空格、数字和其他字符的数量。 - 第 8 行:使用
printf()
函数输出提示信息。 - 第 9 行:使用
getchar()
函数逐个读取输入的字符,并将其赋值给变量c
。 - 第 10~17 行:使用
if...else if...else...
结构判断字符的类型,并将其加入相应类型的计数器中。 - 第 19~22 行:使用
printf()
函数输出各种类型字符的数量。 - 第 24 行:返回值为 0,表示程序正常结束。
对字符处理函数的解释:
当我们需要对字符进行处理时,C 语言提供了一些非常有用的字符处理函数,这些函数都定义在 ctype.h
头文件中。以下是本程序中用到的三个字符处理函数的作用:
isalpha()
:判断一个字符是否为英文字母。如果是英文字母,返回非零值(真),否则返回零值(假)。isspace()
:判断一个字符是否为空格字符。如果是空格字符,返回非零值(真),否则返回零值(假)。isdigit()
:判断一个字符是否为数字字符。如果是数字字符,返回非零值(真),否则返回零值(假)。
需要注意的是,如果输入的其他字符的ASCII码值不在范围之内的话,系统将会编译出错。