c语言统计英文字符串的自符分布,即统计该字符串中每个字符的数量,只统计英文字母,不区分大小写,忽略其他非字母字符。输出按照“字符:数量”显示,每行一个结果,字符按字母表生序排序。不用ctype函数
时间: 2024-03-20 14:39:43 浏览: 123
C语言字符/字符串相关函数收藏大全
好的,我可以帮你解决这个问题。你可以使用ASCII码表中字母的编码来实现这个功能,具体步骤如下:
1. 定义一个长度为26的数组count,用于存储每个字母出现的次数,初始值全部赋为0;
2. 遍历输入的字符串,如果当前字符是英文字母,则将其转换为小写字母后,计算其在count数组中的下标,将对应位置的值加1;
3. 遍历count数组,输出每个字母出现的次数,如果该字母未出现过,则输出0。
以下是一段实现该功能的C代码:
```c
#include <stdio.h>
void count_chars(char *str) {
int count[26] = {0};
int i = 0;
while (str[i] != '\0') {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
char c = str[i] | 0x20; // 转换为小写字母
count[c - 'a']++;
}
i++;
}
for (i = 0; i < 26; i++) {
printf("%c:%d\n", 'a' + i, count[i]);
}
}
int main() {
char str[] = "Hello, world!";
count_chars(str);
return 0;
}
```
输出结果如下:
```
a:0
b:0
c:0
d:1
e:1
f:0
g:0
h:1
i:0
j:0
k:0
l:3
m:0
n:0
o:2
p:0
q:0
r:1
s:0
t:0
u:0
v:0
w:1
x:0
y:0
z:0
```
阅读全文