描述
我们知道,英语中每个字母出现的频率是不同的。
字母E出现的频率很高,而X则出现得较少。类似地,ST、NG、TH,以及QU等双字母组合出现的频率非常高,NZ、QJ组合则极少。
传统的电报破译就是基于这个原理。
现在我们就简单的实现一下统计字母吧。
输入
输入一串长度小于1000的字符串,统计里面的大小写字母的出现次数
输出
按字母ASCALL码由低到高的顺序输出每个字母的个数。
输入样例
BLACK
输出样例
A:1 B:1 C:1 K:1 L:1
代码
#include <stdio.h>
#include <string.h>
int main () {
char a[1000];
scanf ("%s",&a);
int n = strlen(a);
int num[123];
for (int i = 65;i <= 122;i++) {
num[i] = 0;
for (int j = 0;j < n;j++) {
if (a[j] == i) {
num[i]++;
}
}
}
for (int i = 65;i <= 122;i++) {
if (num[i] != 0) {
printf ("%c:%d",(char)i,num[i]);
int flag = 0;
for (int j = i + 1;j <= 122;j++) {
if (num[j] != 0)
flag = 1;
}
if (flag == 1)
printf ("\n");
}
}
return 0;
}