用C语言写一个算法,统计在输入字符串中各个不同字符出现的频度(字符串中的合法字符为A~Z这26个字母和0~9这10个数字)
时间: 2023-06-25 21:03:30 浏览: 223
从键盘输入一串字符,分别统计其中的字母(不区分大小写)、数字字符和其他[借鉴].pdf
以下是用C语言实现的算法,可以统计输入字符串中各个不同字符出现的频度:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
int freq[36] = {0}; // 26个字母和10个数字共36个合法字符,初始化为0
int len, i, index;
printf("请输入一个字符串:");
scanf("%s", str);
len = strlen(str);
for (i = 0; i < len; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') { // 大写字母
index = str[i] - 'A';
} else if (str[i] >= '0' && str[i] <= '9') { // 数字
index = str[i] - '0' + 26;
} else {
continue; // 非法字符,跳过
}
freq[index]++;
}
for (i = 0; i < 26; i++) {
printf("%c: %d\n", 'A' + i, freq[i]);
}
for (i = 26; i < 36; i++) {
printf("%c: %d\n", '0' + i - 26, freq[i]);
}
return 0;
}
```
该算法首先定义了一个长度为36的整型数组freq,用来存储每个字符出现的频度。然后通过循环遍历输入的字符串,如果该字符是合法字符,则根据ASCII码计算出在freq数组中的下标,并将相应的元素加1。最后再循环遍历freq数组,输出每个字符出现的频度。
阅读全文