用c语言完成这样一段程序:请读入一段英文内容,然后统计并输出这段英语中各个字母(不区分大小写)的出现次数。输入:一段英文,以换行符结束。输出:按a~z顺序一次输出出现次数不为0的字母,每个字母占一行。以“字母 次数”的格式输出
时间: 2024-11-27 11:22:04 浏览: 10
你可以使用C语言中的字符数组、循环结构以及哈希表(这里可以用`std::unordered_map`或者自定义结构体数组)来实现这个功能。以下是一个简单的示例:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <cctype>
// 自定义结构体存储字母及其计数
typedef struct {
char letter;
int count;
} AlphabetCount;
int main() {
char input[1000]; // 假设输入不超过1000个字符
fgets(input, sizeof(input), stdin); // 从标准输入读取一行
// 将所有输入转换为小写并计算字符计数
for (size_t i = 0; input[i] != '\0'; ++i) {
input[i] = tolower(input[i]); // 转换为小写
}
// 使用哈希表存储字母计数
AlphabetCount alphabet[26] = {0}; // 初始化26个字母的计数为0
for (size_t i = 0; input[i] != '\0'; ++i) {
if (isalpha(input[i])) { // 只统计字母
alphabet[input[i] - 'a'].count++;
}
}
// 输出结果
for (int i = 0; i < 26; ++i) {
if (alphabet[i].count > 0) {
printf("%c %d\n", 'a' + i, alphabet[i].count);
}
}
return 0;
}
```
运行此程序后,它会读取输入的一段英文,统计其中各字母的出现次数,并按照字母顺序打印非零计数值。
阅读全文