首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

初学者求教 为什么输入n后会出现-0,之后再输入字符串,程序运行正常,请各位大神帮帮忙

2012-11-09 
菜鸟求教 为什么输入n后会出现-0,之后再输入字符串,程序运行正常,请各位大神帮帮忙#includestdio.hint m

菜鸟求教 为什么输入n后会出现-0,之后再输入字符串,程序运行正常,请各位大神帮帮忙
#include<stdio.h>
int main()
{
char a[1000],MAX;
int n,m,j,i,k,l,b[26],max;
while(scanf("%d",&n)!=EOF)
{
for(j=1;j<=n;j++)
{
for(k=0;k<26;k++)
b[k]=0;
for(i=0;;i++)
{
scanf("%c",&a[i]);
if(a[i]=='\n')
{
m=i-1;
break;
}
}
for(k=0;k<26;k++)
{
for(i=0;i<=m;i++)
if(a[i]==k+'a')
b[k]=b[k]+1;
}  
max=b[0];
for(k=1;k<26;k++)

{
if(b[k]>max)
{
max=b[k];
l=k;
}
}
MAX=(b+l)-b+'a';
printf("%c %d\n",MAX,max);
}
}
return 0;
}

[解决办法]
我根据自己的了解修改了一下你的程序,你看看是不是这个意思:
#include<stdio.h>
int main()
{
char a[1000],MAX;
int n,m,j,i,k,tmp,b[26],max;
scanf("%d",&n);
scanf("%*c");
for(i=0;i<n;i++)
{
for(k=0;k<26;k++)
b[k]=0;
for(j=0;;j++)
{
scanf("%c",&a[j]);
if(a[j]=='\n')
{
m=j-1;
break;
}
}
for(k=0;k<26;k++)
{
for(j=0;j<=m;j++)
if(a[j]==k+'a')
b[k]++;
}
max=b[0],tmp=0;
for(k=1;k<26;k++)
{
if(b[k]>max)
{
max=b[k];
tmp=k;
}
}
MAX=tmp+'a';
printf("%c %d\n",MAX,max);
puts("===============");
}
return 0;
}

热点排行