读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
时间: 2023-06-27 10:01:16 浏览: 47
下面是一个Python代码实现:
```python
text = input("请输入一段文字:")
# 统计汉字出现次数
han_dict = {}
for char in text:
if '\u4e00' <= char <= '\u9fff':
han_dict[char] = han_dict.get(char, 0) + 1
# 统计英文字母出现次数
eng_dict = {}
for char in text:
if char.isalpha():
eng_dict[char.lower()] = eng_dict.get(char.lower(), 0) + 1
# 输出结果
print("汉字出现次数:")
for char, count in han_dict.items():
print(char, count)
print("英文字母出现次数:")
for char, count in eng_dict.items():
print(char, count)
```
运行代码后,用户可以在屏幕上输入一段文字,程序会统计其中汉字和字母的出现次数,并输出结果。
相关问题
c读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
以下是一个简单的C程序,可以实现读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
```
#include <stdio.h>
#include <ctype.h>
#define MAX_SIZE 1000
int main()
{
char text[MAX_SIZE];
int chinese_count[256] = {0};
int english_count[26] = {0};
printf("请输入一段文本:\n");
fgets(text, MAX_SIZE, stdin);
for (int i = 0; text[i] != '\0'; i++)
{
if (isalpha(text[i]))
{
english_count[tolower(text[i]) - 'a']++;
}
else if ((text[i] & 0x80) && (text[i + 1] & 0x80))
{
chinese_count[(unsigned char)text[i]]++;
chinese_count[(unsigned char)text[i + 1]]++;
i++;
}
}
printf("汉字\t\t出现次数\n");
for (int i = 0; i < 256; i++)
{
if (chinese_count[i] > 0)
{
printf("%c%c\t\t%d\n", i, i + 1, chinese_count[i] / 2);
}
}
printf("\n字母\t\t出现次数\n");
for (int i = 0; i < 26; i++)
{
if (english_count[i] > 0)
{
printf("%c\t\t%d\n", 'a' + i, english_count[i]);
}
}
return 0;
}
```
这个程序使用了两个数组 `chinese_count` 和 `english_count` 分别记录汉字和英文字母的出现次数。在循环读取用户输入的文本时,使用了 `isalpha` 函数判断当前字符是否是英文字母,如果是,则增加相应字母的计数器;如果不是,则判断当前字符是否是汉字,如果是,则增加相应汉字的计数器。由于汉字占用两个字节,所以在增加汉字计数器时需要同时增加两个字节的计数器。
最后,使用循环遍历两个计数器数组,将出现过的汉字和英文字母及其出现次数输出到屏幕上。
2、 请根据以下要求,编写一段C程序代码: 读取用户在屏幕上输入的一段文字,统计其中每一个汉字的出现次数、每一个英文字母(不区分大小写)的出现次数,并将出现过的汉字和字母以及它们的出现次数输出到屏幕上。
以下是一个基本的实现方式:
```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()` 将大写字母转换为小写字母。在输出汉字和字母的时候,程序只输出出现过的汉字和字母及其出现次数。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)