c语言问题:为什么我输入1时程序直接结束? #include <stdio.h> #include
c语言问题:为什么我输入1时程序直接结束?#include<stdio.h>#include<string.h>intmain(){intn,i,j;chara[22][...
c语言问题:为什么我输入1时程序直接结束?
#include <stdio.h>
#include <string.h>
int main()
{ int n,i,j; char a[22][22],d[22],temp,huan[22];
scanf("%d",&n);
{for (i=0;i<n;i++)
{gets(a[i]);
d[i]=a[i][0];
}
for (i=0;i<n-1;i++)
{ for (j=0;i+j<n-1;j++)
{ if (d[j]>d[j+1])
{ temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
strcpy(huan,a[j+1]);
strcpy(a[j+1],a[j]);
strcpy(a[j],huan);
}}}}
for (i=0;i<n;i++)
{ puts(a[i]);} } 展开
#include <stdio.h>
#include <string.h>
int main()
{ int n,i,j; char a[22][22],d[22],temp,huan[22];
scanf("%d",&n);
{for (i=0;i<n;i++)
{gets(a[i]);
d[i]=a[i][0];
}
for (i=0;i<n-1;i++)
{ for (j=0;i+j<n-1;j++)
{ if (d[j]>d[j+1])
{ temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
strcpy(huan,a[j+1]);
strcpy(a[j+1],a[j]);
strcpy(a[j],huan);
}}}}
for (i=0;i<n;i++)
{ puts(a[i]);} } 展开
2013-12-20
展开全部
问题出在scanf("%d",&n)之后,gets函数和scanf函数有点不一样的地方,你在输入1之后,会按了一下回车。而这一下回车被scanf函数认为是输入结束,但是gets函数会认为你输入的是回车。如果你用调试工具看一下就可以发先,a[0][0]里面放的是回车的ASCII码10,即\n。其实你细心看一下也能发现,在结束前,多了个空行的。你可以在scanf函数下面加这样的代码:char t;getchar(t);把回车处理掉就不会被干扰了。
追问
奥,非常感谢,但是别人已经和我说了。非常不好意思!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |