题目描述
输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
输入格式
无
输出格式
无
样例输入
0 z,
样例输出
1 1 1 1
代码解析
-
定义主函数:
int main(void)
是C程序的入口点,void
表示这个函数不接受任何参数。 -
定义变量:
char ch[1000]
:定义了一个字符数组,用于存储用户输入的字符串,数组大小为1000个字符。int i
:用于记录当前读取字符的索引位置,初始化为0。int number
:用于计数输入字符串中的数字字符数量,初始化为0。int english
:用于计数输入字符串中的英文字母数量,初始化为0。int space
:用于计数输入字符串中的空格数量,初始化为0。int other
:用于计数输入字符串中的其他字符数量,初始化为0。
-
输入字符串:
- 使用
while (1)
创建一个无限循环,用于持续读取用户的输入直到遇到换行符\n
。 scanf("%c", &ch[i]);
这个函数调用用于从标准输入(通常是键盘)读取一个字符,并将其存储在ch
数组的当前索引位置。- 如果读取的字符是换行符
\n
,则使用break
语句退出循环。
- 使用
-
分类统计字符:
- 对于每次读取的字符
ch[i]
,使用一系列的if
语句来判断它属于哪一类,并相应地增加计数器的值:- 如果字符是数字(在ASCII码中,'0'到'9'之间的字符),则增加
number
的计数。 - 如果字符是英文字母(在ASCII码中,'a'到'z'或'A'到'Z'之间的字符),则增加
english
的计数。 - 如果字符是空格,增加
space
的计数。 - 如果字符不属于以上任何一类,则增加
other
的计数。
- 如果字符是数字(在ASCII码中,'0'到'9'之间的字符),则增加
- 对于每次读取的字符
-
输出统计结果:
printf("%d\n%d\n%d\n%d\n", english, space, number, other);
这个函数调用用于按顺序输出英文字母的数量、空格的数量、数字的数量以及其他字符的数量。 -
函数返回:
return 0;
表示main
函数执行成功并返回0。在C语言中,main
函数的返回值通常用于表示程序的退出状态,其中0表示成功。
源代码
#include <stdio.h>
int main(void)
{
char ch[1000];
int i = 0;
int number = 0;
int english = 0;
int space = 0;
int other = 0;
while (1)
{
scanf("%c", &ch[i]);
if (ch[i] == '\n')
break;
if (ch[i] >= '0' && ch[i] <= '9')
number++;
else if (ch[i] >= 'a' && ch[i] <= 'z' || ch[i] >= 'A' && ch[i] <= 'Z')
english++;
else if (ch[i] == ' ')
space++;
else
other++;
}
printf("%d\n%d\n%d\n%d\n", english, space, number, other);
return 0;
}