用C语言设计一个算法来统计输入字符串中每个不同字符出现的频率?
时间: 2024-11-22 07:38:15 浏览: 30
在C语言中,我们可以设计一个简单的哈希表(如数组或结构体数组)来统计输入字符串中每个字符及其出现的次数。以下是一个简单的示例,它使用一个字符数组作为哈希表:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 128 // 假设ASCII字符集大小
// 结构体表示字符及其频率
typedef struct {
char ch;
int freq;
} CharFreq;
void count_chars(char* str) {
int len = strlen(str);
CharFreq freq_table[MAX_CHAR] = {0}; // 初始化所有元素为0
for (int i = 0; i < len; i++) {
if (freq_table[str[i]]) { // 如果字符已存在
freq_table[str[i]].freq++;
} else { // 如果字符不存在
freq_table[str[i]].ch = str[i]; // 新增字符并设置初始频次为1
}
}
// 打印结果
printf("Character frequencies:\n");
for (int i = 0; i < MAX_CHAR; i++) {
if (freq_table[i].ch != '\0') {
printf("%c: %d times\n", freq_table[i].ch, freq_table[i].freq);
}
}
}
int main() {
char input[100];
printf("Enter a string: ");
fgets(input, sizeof(input), stdin);
// 移除换行符
input[strlen(input) - 1] = '\0';
count_chars(input);
return 0;
}
```
这个程序会提示用户输入一个字符串,然后计算其中每个不同字符的出现频率,并打印出来。
阅读全文