如何使用C语言编程实现字符频率的统计?
时间: 2024-10-27 15:13:32 浏览: 51
在C语言中,可以使用数组或哈希表(如C++中的`std::map`或自定义结构体)来统计字符串中每个字符的出现频率。这里给出一个基本的示例,使用数组和循环来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
#define CHAR_FREQ_TABLE_SIZE 26 // 假设只考虑小写字母
// 自定义结构体存储字符及其频率
typedef struct {
char ch;
unsigned int freq;
} CharFreq;
void count_char_freq(char* str) {
CharFreq freq_table[CHAR_FREQ_TABLE_SIZE] = {0}; // 初始化频率为0
// 遍历字符串
for (char c : str) {
if ('a' <= c && c <= 'z') { // 只统计小写字母
freq_table[c - 'a'].freq++; // 更新对应字符的频率
}
}
// 打印结果
for (int i = 0; i < CHAR_FREQ_TABLE_SIZE; i++) {
if (freq_table[i].freq > 0) {
printf("%c appears %d times.\n", freq_table[i].ch, freq_table[i].freq);
}
}
}
int main() {
char input[] = "Hello, World!";
count_char_freq(input);
return 0;
}
```
这段代码首先初始化一个大小为26的字符频率数组,接着遍历输入字符串,对每个小写字母更新对应的频率。最后,打印出每个出现过的字母及其频率。
阅读全文