有一个已排好序的数组,要求输入两个数后,按原来排序的规律将它插入数组中

后,按原来排序的规律将它插入数组中

for(i=0;i<5;i++) // 循环,因为你的原数组是升序排列,他的目的是将输入的数,与数组的第一个开始一一比较大小
if(x<a[i]) // 判断,条件是如果输入的数小于,当前循环的那个数
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;
温馨提示:答案为网友推荐,仅供参考
相似回答