谁能帮我解释一下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]);
}
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个数又从小到大排列,最后显示屏幕.
这么多字全部手动录入的。。。。