c语言提问
大家好,我是一位计算机专业的大一新生,劳烦给看看这段程序有何错误,谢谢。
#include<stdio.h>
int main()
{
char a[1001]w[26];
int b[26]={0},i,j,t;
scanf("%s",a);
for(i=0;a[i]!='\0';i++)
for(j=97;j<=122;j++)
if(a[i]==j)b[j-97]++;
for(i=97;i<=122;i++)
w[i-97]=i;
for(i=0;i<25;i++)
if(b[i]>b[i+1])
{
t=w[i];
w[i]=w[i+1];
w[i+1]=t;
}
printf("%c\n",w[25]);
return 0;
}
我是想输入一个字符串,输出这个串中个数最多的字母,比如输入aaaaaaaaabbbbz,输出a。但这个程序总输出z.
[解决办法]
#include<stdio.h>
int main(void)
{
char a[1001], w[26];
int b[26] = {0}, i, j, t;
scanf("%s", a);
/* 统计字符串数组a中'a'-'z'字母的个数存入数组b */
for(i=0; a[i]!='\0'; i++)
for(j=97; j<=122; j++) /* j: ['a'-'z'] */
if(a[i]==j) b[j-97]++; /* b中统计'a'-'z'的个数 */
for(i=97; i<=122; i++)
w[i-97] = i;
/* 按字母的数字个数从小到大排序??? */
for(i=0; i<25; i++)
{
if(b[i]>b[i+1])
{
t=w[i];
w[i]=w[i+1];
w[i+1]=t;
}
}
/* 输出出现次数最多的字母??? */
printf("%c\n",w[25]);
return 0;
}