程序应用字符数组存储从键盘输入的一行英文(100个以内),统计各个字符出现的次数。请完善程序。 裁判测试程序样例: #include <stdio.h> int main(){ char c[100]; gets(c); { /* 请在这里填写答案 */ } return 0; } 输入格式: 请输入一行字符(字符个数小于100)。 输出格式: 统计个字符的数量,一行一个字符地按照以下格式输出数量不为0的字符及其数量: <字符>--><数量>
时间: 2023-12-06 09:45:02 浏览: 94
完整程序如下:
```
#include <stdio.h>
int main() {
char c[100];
int count[26] = {0}; // 用于存储每个字母出现的次数,初始化为0
gets(c);
for (int i = 0; c[i] != '\0'; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
count[c[i] - 'a']++; // 将小写字母转换为数组下标
} else if (c[i] >= 'A' && c[i] <= 'Z') {
count[c[i] - 'A']++; // 将大写字母转换为数组下标
}
}
for (int i = 0; i < 26; i++) {
if (count[i] != 0) {
printf("%c-->%d\n", 'a' + i, count[i]); // 将数组下标转换为对应的字母
}
}
return 0;
}
```
程序思路:
1. 声明一个字符数组 `c`,用于存储从键盘输入的一行英文字符串。
2. 声明一个整型数组 `count`,用于存储每个字母出现的次数。由于只有 26 个字母,所以数组大小为 26。数组初始化为 0。
3. 使用 `gets` 函数从键盘读取一行字符串,并存储到字符数组 `c` 中。
4. 遍历字符串 `c` 中的每个字符,如果是小写字母,则将其转换为对应的数组下标,将对应的计数器加 1;如果是大写字母,则同理。
5. 最后遍历整型数组 `count`,输出计数器不为 0 的字母及其出现次数。注意:需要将数组下标转换为对应的字母输出。
注意事项:
1. `gets` 函数可能存在安全问题,建议使用 `fgets` 函数代替。但是 `fgets` 会将换行符 `\n` 一起读入,需要通过下标遍历字符串,将 `\n` 替换成 `\0`。
2. 由于题目只考虑英文字符,所以不需要对其他字符进行处理。但是如果需要统计其他字符(如数字、标点符号等),可以在遍历字符串时加入相应的判断。
阅读全文