编写程序统计从键盘输入的一行文本中各个字母的个数。 输入以回车键结束。 不区分大小写,大写字母与相应的小写字母按照同一个字母看待。 要求输出按照各个字母出现的个数从大到小进行排序,出现的个数相同的,按照字母在字母表中的先后顺序进行排序。 ***输入格式:调用getchar()函数依次输入每个字符 ***输出格式:"%c(%c):%d\n" 例如输入以下文本: Hello World 程序将输出: L(l):3 O(o):2 D(d):1 E(e):1 H(h):1 R(r):1 W(w):1 A(a):0 B(b):0 C(c):0 F(f):0 G(g):0 I(i):0 J(j):0 K(k):0 M(m):0 N(n):0 P(p):0 Q(q):0 S(s):0 T(t):0 U(u):0 V(v):0 X(x):0 Y(y):0 Z(z):0 c语言
时间: 2024-03-24 18:42:00 浏览: 71
好的,这是一个统计文本中各个字母出现次数的问题,C语言代码如下:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_SIZE 26
int main() {
int count[MAX_SIZE] = {0}; // 存放各个字母出现次数的数组
char c;
// 逐个读入字符
while ((c = getchar()) != '\n') {
if (isalpha(c)) { // 判断是否是字母
c = tolower(c); // 转换为小写字母
count[c - 'a']++; // 对应字母出现次数加1
}
}
// 输出结果,按出现次数从大到小排序
for (int i = MAX_SIZE - 1; i >= 0; i--) {
for (int j = 0; j < MAX_SIZE; j++) {
if (count[j] == i) {
printf("%c(%c):%d\n", j + 'A', j + 'a', i);
}
}
}
return 0;
}
```
运行示例如下:
```
Hello World
L(l):3
O(o):2
D(d):1
E(e):1
H(h):1
R(r):1
W(w):1
A(a):0
B(b):0
C(c):0
F(f):0
G(g):0
I(i):0
J(j):0
K(k):0
M(m):0
N(n):0
P(p):0
Q(q):0
S(s):0
T(t):0
U(u):0
V(v):0
X(x):0
Y(y):0
Z(z):0
```
注意,代码中使用了字符处理函数 isalpha() 和 tolower(),分别判断字符是否是字母和将大写字母转换为小写字母。另外,使用了计数数组 count 来统计各个字母出现次数,最后按照出现次数从大到小排序并输出结果。
阅读全文