谁能帮我解释一下c语言程序,特别是else后面的那部分

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:51:57
#include<stdio.h>
void main()

{

int a[11]={1,4,6,9,13,16,19,28,40,100};

int temp1,temp2,number,end,i,j;

printf(" 初始数组如下: ");

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

printf("%5d",a[i]);

printf("\n");

printf(" 输入插入的数据: ");

scanf("%d",&number);

end=a[9];

if(number>end)

a[10]=number;

else

{

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

{

if(a[i]>number)

{

temp1=a[i];

a[i]=number;

for(j=i+1;j<11;j++)

{

temp2=a[j];

a[j]=temp1;

temp1=temp2;

}
break;
}

}

}

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

printf("%6d",a[i]);
}

基本功能是原来有10个数从小到大排列,让你键盘输入一个数,判断这个数和原来10个数的大小,把它插入适当的位置,使一共11个数从小到大排列。
else之前很键盘,直接判断这个数和原数列第10个数的大小,如果比第10个大,直接把它放后面,放第11个位置。

else之后复杂一点,先要判断这个数位于原10个数的哪2个数之间。
for(i=0;i<10;i++)

{

if(a[i]>number)
是让i从0开始++,把原来10个数一个一个的和新加的数相比,假设到a[3]时成立,即新数位于第4,5个数之间,要把新数放第5个,后面的数依次往后移,移动的功能由j实现。
让a[4],也就是第5个数=number,但要先 temp1=a[i]; ,把以前a[4]的数存起来,此时i=4,所以j=5
temp2=a[j];

a[j]=temp1;

temp1=temp2;
是让a[5]保存到temp2,让a[5]=temp1(也就是刚才的a[4]的内容),然后temp1=temp2; ,以便下一步继续循环,全部循环后,a[4]后面的数都往后挪了一位,新的11个数又从小到大排列,最后显示屏幕.

这么多字全部手动录入的。。。。