c语言高手给看一下,现在没钱,只能给20,待有钱后重谢

来源:百度知道 编辑:UC知道 时间:2024/05/31 15:23:59
main()
{char fa[24],eng[81];
int m=0,n=0,a,b,i,j,c=0,d;
gets(eng);
for(j=1;j<=81;j++)
{if(eng[j]=='\0'&&eng[j+1]=='\0') break;
for(i=n+1;i<81;i++)
{ n=n+1;
if(eng[i]=='\0') break;
m=m+1;
}
if(c<m) a=n;
d=m;
m=0;
if(c<d) c=d;}
for(b=a;b<24;b++)
{if(eng[b]=='\0') break;
fa[a]=eng[a];}
printf("%s",fa);
}

是输入一句英文,输出其中最长的那个单词

我这个空格打的对吗??用TC2.0

看不出问题出在哪
谢谢一楼,不过好像不对啊,输出总是最后一个,不过也是非常谢谢,费心了

如你用的是scanf("%s",eng)输入时!系统遇到空格或回车都会默认输入结束并且在回车和空格前一个字符后面加上'\0'!用gets(eng)输入时只有遇到回车才会做上述的操作!我明白你程序主要有'\0'做间隔!我建议你用空格进行间隔!
譬如你输入一句话 I love you然后按下回车!在数组里保存的是I love you\0\0\0\0...而不是I\0love\0you\0\0\0\0...
main()
{char fa[24],eng[81];
int m=0,n=0,a,b,i,j,c=0,d;//在这为d赋个值d=0再加个int g=0;//
gets(eng);
for(j=1;j<=81;j++)
{if(eng[j]=='\0'&&eng[j+1]=='\0') break;
// if(eng[n]=='\0')break;//
for(i=n+1;i<81;i++)
{ n=n+1;
if(eng[i]=='\0') break;
//改为if(eng[i]==' '||eng[i]=='\0')break;

m=m+1;
}
if(c<m) a=n; // 这几句改为if(m>d) {d=m;a=n;}m=0;
d=m;//
m=0;//
if(c<d) c=d;// }
for(b=a;b<24;b++)\\改为for(b=a-d;;b++)//
{if(eng[b]=='\0') break;
//改为{if(eng[b]==' '||if(eng[