C语言问题

# include<stdio.h>
int main()
{
int i,n,m;
int a[11]={0,0,0,0,0,0,0,0,0,0,0};
int b,temp;
printf("Please input 10 numbers!!!\n");
for(i=0;i<=9;i++)
{scanf("%d\n",&a[i]);}
for(n=0;n<=8;n++)
{for(m=0;m<=8-n;m++)
{
if(a[m]<a[m+1])
{temp=a[m];a[m]=a[m+1];a[m+1]=temp;}
}
}
for(n=0;n<=10;n++)
printf("%d\n",a[n]);
getch();
return 0;
}
我的问题是:为什么一定要输入11个数才输出数组???
{scanf("%d\n",&a[i]);} 中的“\n”为什么加了\n就要输入11个数了???

首先你定义了数组int a[11]={0,0,0,0,0,0,0,0,0,0,0};有11个元素,但是这与你的问题没多大关系。

 

接着执行  for(i=0;i<=9;i++)

           {scanf("%d\n",&a[i]);}  for循环从0到9总共是10个元素,并没有越界,for循环并未结束。接着在执行 i++  ,i变成10 判断i>9条件不成立, 退出此for循环,也没有要求你输入第11个数。 

问题出在这:注意{scanf("%d\n",&a[i]);}  中的“\n”

如果改为   scanf("%d",&a[i]);那就只要输入10个

应该是小小失误吧,呵呵!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-25
因为。当你i=9时你已经输了10个数了。可是还是符合for的判断。所以他还没有跳出for的循环,也就是不往下面的语句执行。

所以必需在你再输一个数的时候,for才不成立。才会跳出来。
然后往下走。

最后一个数,相当是终止符。你换成什么都可以的,他也不会存储到你的电脑里的
第2个回答  2009-07-25
{scanf("%d\n",&a[i]);}
改成{scanf("%d",&a[i]);}

scanf之后本来就是要用回车结束的~你再加\n不是多此一举了么
第3个回答  2009-07-25

这与你的输入语句有关注意到"%d\n"中的“\n”

for(i=0;i<=9;i++)

    scanf("%d\n",&a[i]);

如果改为   scanf("%d",&a[i]);那就只要输入10个

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网