以下是使用getchar函数编写的统计字符串字符频率的程序示例:
#include
#define MAX_SIZE 100
void countFrequency(char str[], int freq[]) {
int i = 0;
char ch;
// 初始化频率数组为0
for (i = 0; i < 26; i++) {
freq[i] = 0;
}
// 读取字符并增加对应字符的频率
while ((ch = getchar()) != '\n') {
if (ch >= 'a' && ch <= 'z') { // 统计小写字母频率
freq[ch - 'a']++;
} else if (ch >= 'A' && ch <= 'Z') { // 统计大写字母频率
freq[ch - 'A']++;
}
}
}
int main() {
char str[MAX_SIZE];
int freq[26]; // 存储字符频率的数组,下标0-25表示a-z的频率
printf("请输入字符串:");
fgets(str, MAX_SIZE, stdin);
countFrequency(str, freq);
printf("字符频率统计结果:\n");
for (int i = 0; i < 26; i++) {
if (freq[i] > 0) {
printf("%c: %d\n", 'a' + i, freq[i]);
}
}
return 0;
}
运行示例:
请输入字符串:Hello World!
字符频率统计结果:
H: 1
e: 1
l: 3
o: 2
r: 1
W: 1
d: 1
该程序使用getchar函数逐个读取输入的字符,然后根据字符的范围判断是小写字母还是大写字母,并相应地增加频率数组中对应字符的频率。最后打印出统计结果。