设计一个算法统计输入字符串中各个不同字符出现的频率并且将结果存入文件(字符串中的合法字符为A~Z这26个字母和0~9这10个数字)用c++语言来实现该算法
时间: 2024-05-05 14:20:02 浏览: 14
可以使用哈希表来实现该算法,具体步骤如下:
1. 定义一个26+10=36大小的数组hashTable,用于存储每个字符出现的次数。
2. 读入字符串并遍历每个字符,如果该字符是合法字符,则在hashTable对应的位置上加1。
3. 将hashTable中的内容输出到文件中。
以下是实现该算法的C语言代码:
```c
#include <stdio.h>
int main() {
char str[1000];
int hashTable[36] = {0}; // 初始化哈希表
printf("请输入字符串:");
scanf("%s", str);
for (int i = 0; str[i] != '\0'; i++) {
if ((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= '0' && str[i] <= '9')) {
int pos;
if (str[i] >= 'A' && str[i] <= 'Z') pos = str[i] - 'A'; // 大写字母
else pos = str[i] - '0' + 26; // 数字
hashTable[pos]++;
}
}
// 输出哈希表中的内容到文件
FILE *fp = fopen("result.txt", "w");
for (int i = 0; i < 26; i++) {
fprintf(fp, "%c:%d\n", 'A' + i, hashTable[i]);
}
for (int i = 26; i < 36; i++) {
fprintf(fp, "%c:%d\n", '0' + i - 26, hashTable[i]);
}
fclose(fp);
return 0;
}
```
输入一个字符串后,程序会将每个字符出现的次数统计到哈希表中,然后将哈希表中的内容输出到result.txt文件中。注意,要将大写字母和数字分别处理,因为它们的ASCII码不连续。