用C语言写一个算法实现统计在输入字符串中各个不同字符出现的频度。(字符串中的合法字符A~Z这26个字母和0~9这10个数字)
时间: 2024-11-03 08:23:34 浏览: 62
在C语言中,你可以使用哈希表(如数组或者结构体)来统计输入字符串中每个字符的出现次数。这里是一个简单的示例,它使用数组`freq`存储字符及其频率:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 62 // 总共考虑26个大小写字母和0-9的数字
// 结构体表示字符及其出现次数
typedef struct {
char ch;
int count;
} CharFreq;
// 初始化字符频率数组为0
void init_freq(CharFreq freq[]) {
for (int i = 0; i < MAX_CHAR; ++i) {
freq[i].count = 0;
}
}
// 更新字符计数
void update_char(CharFreq freq[], char ch) {
freq[ch - 'A' || ch - 'a' || ch - '0']++; // 根据ASCII值计算索引位置
}
// 统计并打印字符频率
void print_freq(CharFreq freq[]) {
for (int i = 0; i < MAX_CHAR; ++i) {
if (freq[i].ch != '\0') { // 非空字符
printf("Character '%c' appears %d times.\n", freq[i].ch, freq[i].count);
}
}
}
int main() {
CharFreq freq[MAX_CHAR];
char str[100];
// 输入字符串
printf("Enter a string (A-Z, a-z, and 0-9): ");
fgets(str, sizeof(str), stdin); // 注意处理换行符
str[strlen(str)-1] = '\0'; // 去掉末尾的换行符
// 初始化和更新频率
init_freq(freq);
for (char c : str) {
if ('A' <= c && c <= 'Z' || 'a' <= c && c <= 'z' || '0' <= c && c <= '9') {
update_char(freq, c);
}
}
// 打印结果
print_freq(freq);
return 0;
}
```
阅读全文