.写一个c语言算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串中的合法字符为A-Z这26个字母与0-9这10个数字)。
时间: 2024-12-02 21:18:58 浏览: 39
在C语言中,我们可以使用哈希表(如结构体数组或动态分配的数据结构)来存储字符及其频率,并将结果写入到文件中。下面是一个简单的示例算法:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 创建一个结构体来存储字符和其出现次数
typedef struct {
char ch;
int count;
} CharCount;
// 功能:统计字符串中每个字符的出现频率
void countChars(const char* str, FILE* file) {
// 初始化所有字符计数为0
CharCount counts[256] = {0};
// 遍历输入字符串
for (int i = 0; str[i]; ++i) {
if ('A' <= str[i] && str[i] <= 'Z') counts[str[i]]++; // 字母
else if ('0' <= str[i] && str[i] <= '9') counts[str[i]]++; // 数字
}
// 将结果写入文件
fprintf(file, "Character\tFrequency\n");
for (int i = 'A'; i <= 'Z'; ++i) {
if (counts[i]) {
fprintf(file, "%c\t\t%d\n", i, counts[i]);
}
}
for (int i = '0'; i <= '9'; ++i) {
if (counts[i]) {
fprintf(file, "%d\t\t%d\n", i, counts[i]);
}
}
}
int main() {
const char* inputStr = "Hello123World456!";
FILE* outputFile = fopen("output.txt", "w"); // 打开文件准备写入
if (outputFile != NULL) {
countChars(inputStr, outputFile);
fclose(outputFile); // 关闭文件
printf("Character frequencies have been written to output.txt.\n");
} else {
perror("Error opening file.");
}
return 0;
}
```
这个程序首先初始化一个大小为256的CharCount数组,然后遍历输入字符串,对每个字符进行计数。最后,它将结果显示到名为"output.txt"的文件中。
阅读全文