#include
int main()
{
int a[11]={1,4,6,9,13,16,19,28,40,100};
int temp,i=0,j=0;
scanf("%d",&temp);
for(i=9;i>=0;i--)
{
for(i=0;i<5;i++) // 循环,因为你的原数组是升序排列,他的目的是将输入的数,与数组的第一个开始一一比较大小
if(x break; // 如果上述判断成立,则直接跳出for循环,否则执行下一个循环,也就是说输入的数比当前数组中的数大,那么他需要和后面一个数组的数继续来做比较,一旦确认这个数比当前数小,就说明这个数应该插入在这个数组数的前面了
for(j=5;j>i;j--) //通过上面的循环,就能确定一个i,输入的数应该插入第i个数组数的前面,但是插入后,所有从i开始的数组数都应该往后面递推一个位数才可以留出一个位置来,该循环就是将第i个数组数后面的所有数组数都往后递推一位
a[j]=a[j-1]; //交换位置,他是从最后一位开始往前交换的
a[j]=x; //将交换多出来的位置赋值x
printf("Now array a:\n"); //屏幕输出Now array a:
for(i=0;i<6;i++) //循环输出数组至屏幕
printf("%4d",a[i]);
printf("\n"); // 输出回车
return 0;
你这个程序其他都对,但好像插入点有点问题。
在for(j=5;j>i;j––)
a[j]=a[j-1]; 从后面开始,把所有数后移对吧?
但你后移到k的插入点的时候,应该
a(j-1)=k;把k得值赋予j-1啊,j-1才是空出来的位置,而不是a[j]。对吧?