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

编写一个函数,统计字符串中各个字母(不区分大、小写)出现的频率,同时找出频率出现最高的字母及次数。我有不区分大小写的题目的完整程序:
void main()
{ int p[26],i,max;
char s[80],chmax;
gets(s);
freq(s,p,chmax,max);
for(i=0;i<26;i++)
if(p[i])
cout<<char(i+97)<<"----"<<p[i]<<endl;
cout<<chmax<<"----"<<max<<endl;
}
请告诉我个区分大小写的结果。

/*
* Author: 吾好梦中杀猪
* 2013-14. All rights reserved.
*/
#include <stdio.h>
#include <string.h>
#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<len; i++)
{
if ((str[i] >= 'a' && str[i] <= 'z')
|| (str[i] >= 'A' && str[i] <='Z'))
{
found = 0;
for (j=0; j<count; j++)
{
if (chBuf[j] == str[i])
{
found = 1;
freq[j]++;
break;
}
}
if (!found)
{
chBuf[count++] = str[i];
freq[count-1] = 1;
}
}
}
for (i=0; i<count; i++)
printf("%3d", freq[i]);
chMax = 0;
for (i=1; i<count; i++)
if (freq[i] > freq[chMax])
chMax = i;
printf("\nMax letter is: %c , it appears %d times!\n", chBuf[chMax], freq[chMax]);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-24
#include <stdio.h>
#include <iostream>
#include <string.h>
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<len;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;
}

相似回答