# 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个
应该是小小失误吧,呵呵!
所以必需在你再输一个数的时候,for才不成立。才会跳出来。
然后往下走。
最后一个数,相当是终止符。你换成什么都可以的,他也不会存储到你的电脑里的
改成{scanf("%d",&a[i]);}
scanf之后本来就是要用回车结束的~你再加\n不是多此一举了么
这与你的输入语句有关注意到"%d\n"中的“\n”
for(i=0;i<=9;i++)
scanf("%d\n",&a[i]);
如果改为 scanf("%d",&a[i]);那就只要输入10个