用c语言写代码:统计英文字符串的字符分布,即统计该宇符串中每个字符的数量,只统计英文字母,不区分大小写,忽路其他非字母字符。输出按照“字母:字符”显示每行一个结果,字母按照字母表升序排列
时间: 2024-03-19 22:46:33 浏览: 372
好的,下面是代码:
```c
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define MAX_LEN 1000
int main()
{
char str[MAX_LEN];
int count[26] = {0}; // 用数组记录每个字母出现次数,初始为0
int len, i;
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin);
len = strlen(str);
for (i = 0; i < len; i++)
{
if (isalpha(str[i])) // 如果是字母
{
count[toupper(str[i]) - 'A']++; // 转换成大写字母并记录
}
}
for (i = 0; i < 26; i++)
{
if (count[i] > 0)
{
printf("%c:%d\n", i + 'A', count[i]); // 显示字母及其出现次数
}
}
return 0;
}
```
代码解释:
1. 定义字符串数组 `str` 存储输入的字符串,最大长度为 `MAX_LEN`。
2. 定义整型数组 `count` 存储各个字母出现的次数,数组长度为 26,初始值为 0。
3. 使用 `fgets()` 函数从标准输入中读取字符串。
4. 使用 `strlen()` 函数获取字符串长度,遍历字符串中的每个字符。
5. 如果该字符是字母,使用 `toupper()` 函数将其转换成大写字母,并在 `count` 数组相应的位置上加 1。
6. 遍历 `count` 数组,如果某个字母出现次数大于 0,输出该字母和出现次数。
注意事项:
1. 因为题目要求忽略大小写,所以需要使用 `toupper()` 函数将字符转换成大写字母。
2. 输出时字母应按照字母表升序排列,可以直接在遍历 `count` 数组时按照字母表的顺序输出。
阅读全文