C语言统计字符出现次数
以下是一个完整的C语言程序,用于统计输入字符串中每个字符出现的次数:

(图片来源网络,侵删)
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 256 // ASCII字符集大小
int main() {
char str[100];
int count[MAX_CHAR] = {0}; // 初始化所有计数为0
printf("请输入一个字符串: ");
fgets(str, sizeof(str), stdin); // 读取用户输入,包括空格
// 统计每个字符出现的次数
for (int i = 0; i < strlen(str); i++) {
unsigned char c = str[i]; // 使用unsigned char确保正确处理0-255的值
count[c]++;
}
// 输出统计结果
printf("\n字符统计结果:\n");
for (int i = 0; i < MAX_CHAR; i++) {
if (count[i] > 0) {
if (i == '\n') {
printf("'\\n' (换行符): %d次\n", count[i]);
} else if (i == '\t') {
printf("'\\t' (制表符): %d次\n", count[i]);
} else if (i == ' ') {
printf("' ' (空格): %d次\n", count[i]);
} else {
printf("'%c': %d次\n", (char)i, count[i]);
}
}
}
return 0;
}
程序说明:
-
输入处理:
- 使用
fgets()读取用户输入,可以包含空格 - 输入字符串最大长度为99个字符(留1位给字符串结束符'\0')
- 使用
-
统计逻辑:
- 创建一个大小为256的数组
count,对应ASCII字符集 - 遍历字符串,每个字符对应的计数器加1
- 创建一个大小为256的数组
-
输出结果:
- 只输出出现次数大于0的字符
- 特殊字符(如换行符、制表符、空格)以转义形式显示
- 其他字符直接显示
示例运行:
请输入一个字符串: Hello, World! 123
字符统计结果:
'H': 1次
'e': 1次
'l': 3次
'o': 2次
',': 1次
' ': 2次
'W': 1次
'r': 1次
'd': 1次
'!': 1次
'1': 1次
'2': 1次
'3': 1次
'\\n' (换行符): 1次
扩展功能:
如果需要统计特定字符(如只统计字母或数字),可以修改统计部分的代码:

(图片来源网络,侵删)
// 只统计字母
for (int i = 0; i < strlen(str); i++) {
if ((str[i] >= 'a' && str[i] <= 'z') || (str[i] >= 'A' && str[i] <= 'Z')) {
count[str[i]]++;
}
}
或者使用更简洁的isalpha()函数(需要包含<ctype.h>):
#include <ctype.h>
// 只统计字母
for (int i = 0; i < strlen(str); i++) {
if (isalpha(str[i])) {
count[str[i]]++;
}
}
