用c语言读入任意一篇英文短文并统计不同字符出现的频率
时间: 2024-02-24 12:57:46 浏览: 151
好的,以下是解决方案:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_CHAR 256 // 最大字符数
int main() {
int freq[MAX_CHAR] = {0}; // 用于存储不同字符的出现频率
printf("请输入英文短文:\n");
// 读入英文短文
int c;
while ((c = getchar()) != EOF) {
if (isalpha(c)) { // 判断是否为英文字母
c = tolower(c); // 转换为小写字母
freq[c]++; // 对应字符出现次数加1
}
}
printf("不同字符出现频率如下:\n");
// 输出不同字符出现频率
for (int i = 0; i < MAX_CHAR; i++) {
if (freq[i] > 0) {
printf("%c: %d\n", i, freq[i]);
}
}
return 0;
}
```
解释一下:
首先定义了一个 `freq` 数组,用于存储不同字符的出现频率。由于 ASCII 码表共有 256 个字符,因此 `freq` 数组的大小为 `MAX_CHAR`,即 256。
然后通过 `getchar()` 逐个读入英文短文中的字符,如果该字符为英文字母,则将其转换为小写字母,并在 `freq` 数组中对应字符出现次数加 1。
最后遍历 `freq` 数组,输出不同字符的出现频率。由于 `freq` 数组中的下标代表字符的 ASCII 码值,因此需要将其转换为对应的字符。
希望这个解决方案对您有所帮助!
阅读全文