这道题目是要求统计一个包含空格字符的字符串(长度不超过200)中每个英文字母出现的次数,不区分大小写。输出字母a~z的出现次数,数据间以英文逗号分隔。非英文字母不统计。 输入:包含空格字符的字符串。 输出:26个整数,以英文逗号分隔,数据间以英文逗号分隔。C语言
时间: 2023-06-10 20:08:12 浏览: 161
java代码-4、编写这样一个程序找出字符串“My name is Tom, I come from China.”中的大写字母,并打印输出。
以下是C语言代码实现:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[201];
int count[26] = {0}; // 初始化计数器数组为0
fgets(str, 201, stdin); // 读取字符串
for(int i = 0; str[i] != '\0'; i++) {
if(isalpha(str[i])) { // 判断是否为英文字母
count[tolower(str[i]) - 'a']++; // 统计出现次数,不区分大小写
}
}
for(int i = 0; i < 26; i++) {
printf("%d%s", count[i], i == 25 ? "\n" : ","); // 输出结果,注意最后一个数据后不要输出逗号
}
return 0;
}
```
解释:
1. 定义一个字符数组 `str`,用于存储输入的字符串,长度为 201,保证可以存储任何输入的字符串。
2. 定义一个整型数组 `count`,用于存储每个英文字母出现的次数,数组长度为 26,对应字母表中的 26 个字母。
3. 使用 `fgets()` 函数读取字符串,保证可以读取包含空格字符的字符串。
4. 使用 `isalpha()` 函数判断字符是否为英文字母,如果是,就将对应的计数器加 1。注意不区分大小写,所以需要使用 `tolower()` 函数将大写字母转换为小写字母,再减去字符 'a',即可得到对应字母在计数器数组中的下标。
5. 使用循环遍历计数器数组,依次输出每个字母出现的次数,数据间以英文逗号分隔,最后一个数据后不要输出逗号,输出完毕后换行。
注意事项:
1. 需要包含头文件 `stdio.h` 和 `ctype.h`。
2. 在 Windows 系统下,使用 `fgets()` 函数读取字符串时,输入的字符串末尾会包含一个换行符(\n),需要在判断字符是否为英文字母时,将换行符排除在外。
3. 在输出结果时,需要判断是否为最后一个数据,如果是,就不要输出逗号,否则会导致格式错误。
阅读全文