如何统计输入的字符中出现频率最高的大小写字母

如何统计输入的字符中出现频率最高的大小写字母用字符数组的方式

可以先用scanf()函数来获取一个字符串输入存入一个字符数组;然后遍历这个字符数组,把每个字母的频次存储另外一个int型数组;接着遍历这个存储字母频次的数组,寻找出现最多的字母下标;最后计算出现最多的字母,然后打印出现次数即可。代码如下:


#include <stdio.h>

int main(void){
    
    char str[100]; // 存储输入的字符串的字符数组 
    int nums[52]={0}; // 存储26个小写字母和26个大写字母出现次数的数组 
    char ch;
    
    printf("请输入一个字符串:\n");
    scanf("%s",str);
    
    int i=0;
    int pos;
    // 遍历输入的字符串,计算每个字母出现的频次 
    while(str[i]!='\0'){
        
        ch=str[i];
        if(ch>='a'&&ch<='z'){
            pos = ch-'a';// 小写字母的个数存储在数组前26个的位置 
            nums[pos]++;
        }
        
        if(ch>='A'&&ch<='Z'){
            pos=ch-'A'+26; //大写的个数存储在数组后26个的位置 
            nums[pos]++; 
        }
        i++; 
    }
    
    int max=0,index;
    // 遍历存放字母频次的数组nums,寻找出现最多的字母下标 
    for(i=0;i<52;i++){
        if(nums[i]>max){
            max=nums[i];
            index=i;
        }
    }
    
    // 根据下标来计算对应的字母 
    if(index>=26){ 
        ch = 'A'+index-26;
    } else {
        ch = 'a'+index;
    }
    
    // 打印结果 
    printf("输入的字符中出现频率最高的大小写字母是:%c,出现的次数是:%d\n",ch,nums[index]);
    
    return 0;
    
} 

img