C语言如何统计各字符出现次数?

99ANYc3cd6
预计阅读时长 8 分钟
位置: 首页 C语言 正文

C语言统计字符出现次数

以下是一个完整的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;
}

程序说明:

  1. 输入处理

    • 使用fgets()读取用户输入,可以包含空格
    • 输入字符串最大长度为99个字符(留1位给字符串结束符'\0')
  2. 统计逻辑

    • 创建一个大小为256的数组count,对应ASCII字符集
    • 遍历字符串,每个字符对应的计数器加1
  3. 输出结果

    • 只输出出现次数大于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次

扩展功能:

如果需要统计特定字符(如只统计字母或数字),可以修改统计部分的代码:

c语言 统计字符出现的次数
(图片来源网络,侵删)
// 只统计字母
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]]++;
    }
}
-- 展开阅读全文 --
头像
dede后台无法登录怎么办?
« 上一篇 今天
C语言中1 2 3 4 n的规律是什么?
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]