c语言编程实现以下功能: 从键盘输入一串英文字母,统计这串字母中每个字母的频率,输入的字母可以是大写或小写 统计输入的这串字母中a-z每个字母的出现频率,并输出每个字母的频率。统计频率时不区分大小写 对统计出来的频率从小到大排序,并输出排序后的频率值
时间: 2024-10-23 12:17:19 浏览: 53
在 C 语言中,你可以通过使用数组、字符计数和结构体来实现这个功能。以下是一个简单的示例程序,它会读取用户输入的字符串,统计其中 a-z 的出现频率并按字母顺序输出频率。
```c
#include <stdio.h>
#include <ctype.h>
// 定义字母频率的结构体
typedef struct {
char letter;
int frequency;
} LetterFrequency;
// 比较函数,用于排序字母频率
int compareLetterFrequencies(const void *a, const void *b) {
return ((LetterFrequency *)a)- ((LetterFrequency *)b)->frequency;
}
int main() {
char input[1000];
scanf("%s", input); // 从键盘读取输入字符串
// 初始化字母频率数组,所有字母初值设为0
LetterFrequency alphabet[26] = { {'a', 0}, {'b', 0}, ..., {'z', 0} };
// 遍历输入字符串,统计每个字母的频率
for (int i = 0; input[i]; i++) {
char lower_char = tolower(input[i]); // 转换为小写
if (isalpha(lower_char)) {
alphabet[lower_char - 'a'].frequency++;
}
}
// 对字母频率数组进行排序
qsort(alphabet, 26, sizeof(LetterFrequency), compareLetterFrequencies);
// 输出排序后的字母频率
printf("Sorted letter frequencies:\n");
for (int i = 0; i < 26; i++) {
if (alphabet[i].letter != '\0') {
printf("%c: %d\n", alphabet[i].letter, alphabet[i].frequency);
}
}
return 0;
}
```
阅读全文