📜  C测验– 107 |问题1(1)

📅  最后修改于: 2023-12-03 15:00:12.632000             🧑  作者: Mango

C测验-107 | 问题1

该题主要测试C语言中的字符串处理知识。

问题描述

编写一个程序,计算一个字符串中出现次数最多的字符及其出现次数。

输入样例
Hello World! This is a test.
输出样例
Character ' ' appears max times: 6
思路分析

首先需要将输入的字符串进行遍历,统计每个字符出现的次数。这里可以开一个数组,将每个字符对应的 ASCII 码作为下标进行计数。得到出现次数后,再遍历一遍数组,找出出现次数最多的字符及其出现次数。

参考代码
#include <stdio.h>
#include <string.h>

#define MAXN 1000

int main() {
    char str[MAXN];
    int cnt[128] = {0};
    int len, i, max = -1;
    char ans;
    
    gets_s(str);  // 注意: gets() 函数已经过时,推荐使用 gets_s()。
    len = strlen(str);
    
    // 统计每个字符出现的次数
    for (i = 0; i < len; i++) {
        cnt[str[i]]++;
    }
    
    // 找出出现次数最多的字符及其出现次数
    for (i = 0; i < 128; i++) {
        if (cnt[i] > max) {
            max = cnt[i];
            ans = i;
        }
    }
    
    printf("Character '%c' appears max times: %d\n", ans, max);
    
    return 0;
}

这里再提醒一下,由于输入的字符串不一定是 ASCII 字符集,所以在实际应用中,需要使用更高级的字符串处理函数来处理字符串。