编写一个函数,统计字符串中各个字母(区分大、小写)出现的频率,同时找出频率出现最高的字母及次数。

2025-04-15 02:39:09
推荐回答(2个)
回答1:

/*
* Author: 吾好梦中杀猪
* 2013-14. All rights reserved.
*/
#include
#include
#define N 200
#define M 52
int main()
{
char str[N];
char chBuf[M];
char freq[M];
int len;
int count = 0;
int i, j;
int found;
char chMax;
gets(str);
len = strlen(str);
memset(chBuf, 0, sizeof(chBuf));
memset(freq, 0, sizeof(freq));
for (i=0; i{
if ((str[i] >= 'a' && str[i] <= 'z')
|| (str[i] >= 'A' && str[i] <='Z'))
{
found = 0;
for (j=0; j{
if (chBuf[j] == str[i])
{
found = 1;
freq[j]++;
break;
}
}
if (!found)
{
chBuf[count++] = str[i];
freq[count-1] = 1;
}
}
}
for (i=0; iprintf("%3d", freq[i]);
chMax = 0;
for (i=1; iif (freq[i] > freq[chMax])
chMax = i;
printf("\nMax letter is: %c , it appears %d times!\n", chBuf[chMax], freq[chMax]);
return 0;
}

回答2:

#include 
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
    int count[256]={0};
    char str[]="hsahksahdisahdashkdhiwdfhqi";
    int len=strlen(str);
    for(int i=0;i        count[str[i]]++;
    int maxindex=0;
    int max=-1;
    for(int i=0;i<256;i++)
    {
        if(count[i]>max)
            maxindex=i;
    }
    for(int i='A';i<'Z';i++)
    {
        printf("%c %d\n",i,count[i]);
    }
    for(int i='a';i<'z';i++)
    {
        printf("%c %d\n",i,count[i]);
    }
    return 0;
}