用c语言写代码不使用函数相关知识:统计英文字符串的字符分布,即统计该宇符串中每个字符的数量,只统计英文字母,不区分大小写,忽路其他非字母字符。输出按照“字母:字符”显示每行一个结果,字母按照字母表升序排列
时间: 2024-03-20 18:38:34 浏览: 58
C语言 不使用strcat函数实现连接两个字符串功能代码
好的,下面是代码:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 1000
int main()
{
char str[MAX_LEN];
int count[26] = {0}; // 用数组记录每个字母出现次数,初始为0
int len, i, j;
printf("请输入字符串:");
fgets(str, MAX_LEN, stdin);
len = 0;
while (str[len] != '\0') // 计算字符串长度
{
len++;
}
for (i = 0; i < len; i++)
{
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) // 如果是字母
{
if (str[i] >= 'a' && str[i] <= 'z') // 如果是小写字母,转换成大写字母
{
str[i] -= 32;
}
count[str[i] - 'A']++; // 记录字母出现次数
}
}
// 冒泡排序
for (i = 0; i < 26 - 1; i++)
{
for (j = 0; j < 26 - 1 - i; j++)
{
if (count[j] > count[j + 1])
{
int temp = count[j];
count[j] = count[j + 1];
count[j + 1] = temp;
char ch = j + 'A';
str[j] = str[j + 1];
str[j + 1] = ch;
}
}
}
// 输出结果
for (i = 0; i < 26; i++)
{
if (count[i] > 0)
{
printf("%c:%d\n", str[i], count[i]);
}
}
return 0;
}
```
代码解释:
1. 定义字符串数组 `str` 存储输入的字符串,最大长度为 `MAX_LEN`。
2. 定义整型数组 `count` 存储各个字母出现的次数,数组长度为 26,初始值为 0。
3. 使用 `fgets()` 函数从标准输入中读取字符串。
4. 计算字符串长度,遍历字符串中的每个字符。
5. 如果该字符是字母,判断是否是小写字母,如果是,转换成大写字母,并在 `count` 数组相应的位置上加 1。
6. 使用冒泡排序将 `count` 数组和对应的字母数组进行排序。
7. 遍历 `count` 数组,如果某个字母出现次数大于 0,输出该字母和出现次数。
注意事项:
1. 因为题目要求忽略大小写,所以需要手动将小写字母转换成大写字母。
2. 输出时字母应按照字母表升序排列,可以使用冒泡排序进行排序。
阅读全文