这道题目是要求统计一个包含空格字符的字符串(长度不超过200)中每个英文字母出现的次数,不区分大小写。输出字母a~z的出现次数,数据间以英文逗号分隔。非英文字母不统计。 输入:包含空格字符的字符串。 输出:26个整数,以英文逗号分隔,数据间以英文逗号分隔。C语言
时间: 2023-06-11 17:07:10 浏览: 91
下面是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[201];
int freq[26] = {0};
int len, i;
printf("请输入一个字符串(长度不超过200):\n");
fgets(str, 200, stdin);
len = strlen(str);
for (i = 0; i < len; i++) {
if (isalpha(str[i])) { // 判断是否为英文字母
freq[tolower(str[i]) - 'a']++; // 统计字母出现次数
}
}
printf("出现次数:");
for (i = 0; i < 26; i++) {
printf("%d", freq[i]);
if (i < 25) {
printf(","); // 以英文逗号分隔数据
}
}
printf("\n");
return 0;
}
```
代码解析:
1. 定义字符数组 `str` 用于存储输入的字符串,大小为 201,保证了输入的长度不超过 200,加上一个字符结尾符。
2. 定义整型数组 `freq` 用于存储每个字母出现的次数,长度为 26,表示 26 个英文字母。
3. 使用函数 `fgets()` 从标准输入(即键盘)读入字符串,并存储到 `str` 中。
4. 使用字符串函数 `strlen()` 计算 `str` 的长度,并存储到变量 `len` 中。
5. 使用循环遍历 `str` 中的每个字符,判断是否是英文字母,如果是,则将其转换为小写字母,并在 `freq` 中对应的位置加 1。
6. 最后使用循环遍历 `freq` 数组,依次输出每个字母出现的次数,以英文逗号分隔数据。
注意事项:
1. 判断是否是英文字母可以使用 C 标准库中的函数 `isalpha()`,它的返回值为非零表示是英文字母,否则不是。
2. 转换为小写字母可以使用 C 标准库中的函数 `tolower()`。
3. 输出时要注意最后一个数据后不需要加逗号。
阅读全文