C语言 输入语句应该是10次 为什么要输11次 第11次没记录

来源:百度知道 编辑:UC知道 时间:2024/05/15 10:35:09
main()
{
int array[10];
int i,
j,
min,
temp;
for(i=0;i<10;i++) scanf("%d\n",&array[i]);
for(i=0;i<9;i++)
{
min=array[i];
for(j=i+1;j<10;j++)
if(min>array[j])
{
min=array[j];
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
for(i=0;i<10;i++) printf(" %d",array[i]);
printf("\n");
getch();
}

你语句for(i=0;i<10;i++) scanf("%d\n",&array[i]);
scanf 函数中的"\n"去掉就可以了。"\n"属于空白符

之所以要多输入一次是因为用空白符结尾时,scanf会跳过空白符去读下一个字符,scanf在之前只读了10个数给数组初始化,后面必须多读一个数来作为结束信号,所以你必须再输入一个数。这里的空白符包括空格,制表符,换行符,回车符和换页符。所以如果你用scanf("%d ",&a)也会出现同样的问题。

不应该吧!!