2、 请根据以下要求,编写一段C程序代码: 读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
时间: 2024-02-16 15:59:59 浏览: 99
以下是一份简单的C程序代码,可实现上述要求:
```
#include <stdio.h>
#include <ctype.h>
int main() {
char text[1000]; // 最多读入1000个字符的文本
int han_count[65536] = {0}; // 统计汉字出现次数的数组
int eng_count[26] = {0}; // 统计英文字母出现次数的数组
printf("请输入一段文本:\n");
fgets(text, 1000, stdin); // 从标准输入读取文本
// 统计汉字出现次数
for (int i = 0; text[i] != '\0'; i++) {
if ((text[i] & 0x80) && (text[i + 1] & 0x80)) { // 如果是汉字
unsigned short han = (text[i] << 8) | text[i + 1]; // 转成unicode编码
han_count[han]++;
i++; // 下一个字符也属于这个汉字,跳过
}
}
// 统计英文字母出现次数
for (int i = 0; text[i] != '\0'; i++) {
if (isalpha(text[i])) { // 如果是英文字母
eng_count[tolower(text[i]) - 'a']++; // 转成小写字母并计数
}
}
// 输出结果
printf("\n汉字出现次数:\n");
for (int i = 0; i < 65536; i++) {
if (han_count[i] > 0) {
printf("0x%04x: %d\n", i, han_count[i]);
}
}
printf("\n英文字母出现次数:\n");
for (int i = 0; i < 26; i++) {
if (eng_count[i] > 0) {
printf("%c: %d\n", 'a' + i, eng_count[i]);
}
}
return 0;
}
```
注意,这仅是一份简单的实现,可能还有许多需要改进的地方,例如对于非中文字符和非英文字符的处理等。
阅读全文
相关推荐







