2、 请根据以下要求,编写一段C程序代码: 读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
时间: 2024-02-21 20:59:42 浏览: 92
以下是一个基本的实现方式:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LENGTH 1000
int main() {
char str[MAX_LENGTH];
int zh_count[65536] = {0}; // 汉字统计数组
int en_count[26] = {0}; // 英文字母统计数组
int i, len;
fgets(str, MAX_LENGTH, stdin); // 读取用户输入
len = strlen(str);
for (i = 0; i < len; i++) {
if (isalpha(str[i])) { // 如果是英文字母
en_count[tolower(str[i]) - 'a']++; // 统计字母出现次数
} else if (str[i] >= 0 && str[i] <= 65535) { // 如果是汉字
zh_count[str[i]]++; // 统计汉字出现次数
}
}
// 输出汉字出现次数
printf("汉字出现次数:\n");
for (i = 0; i < 65536; i++) {
if (zh_count[i] > 0) {
printf("%c: %d\n", i, zh_count[i]);
}
}
// 输出字母出现次数
printf("字母出现次数:\n");
for (i = 0; i < 26; i++) {
if (en_count[i] > 0) {
printf("%c: %d\n", 'a' + i, en_count[i]);
}
}
return 0;
}
```
这个程序使用了两个数组分别统计汉字和英文字母的出现次数,其中汉字统计数组的大小为 65536,因为汉字可能出现在 Unicode 编码的任意位置。程序使用了 `isalpha()` 函数判断是否为英文字母,使用 `tolower()` 将大写字母转换为小写字母。在输出汉字和字母的时候,程序只输出出现过的汉字和字母及其出现次数。
阅读全文