kkk聪 发表于 2022-4-27 14:42:21

题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

#include<stdio.h>
int main()
{
    int a={1,4,6,9,13,16,19,28,40,100};
    int temp1,temp2,number,end,i,j;
    printf("原始数组是:\n");
    for(i=0;i<10;i++)
      printf("%4d",a);
    printf("\n插入一个新的数字: ");
    scanf("%d",&number);
    end=a;
    if(number>end)
      a=number;
    else
    {
      for(i=0;i<10;i++)
      {
            if(a>number)
            {
                temp1=a;
                a=number;
                for(j=i+1;j<11;j++)//从这里
                {
                  temp2=a;
                  a=temp1;
                  temp1=temp2;//到这里为什么要这样写,求助
                }
                break;//这里又为啥要用break语句呢
            }
      }
    }
    for(i=0;i<11;i++)
      printf("%4d",a);
    printf("\n");
    return 0;
}

风车呼呼呼 发表于 2022-4-27 14:42:22

for(j=i+1;j<11;j++)//从这里
                {
                  temp2=a;
                  a=temp1;
                  temp1=temp2;//到这里为什么要这样写,求助
                }
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.插入3,一眼就看出3应该在第二位,但如果只是把第二位改为3,数组不就变成了1,3,8,9.这就不叫插入了。

break是放在if里面的,而if的作用就是找到新的数字该插入的位置,既然找到了位置,上面操作也把数组调整好了,自然没有继续遍历的必要

kkk聪 发表于 2022-4-27 15:03:35

风车呼呼呼 发表于 2022-4-27 14:53
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.插入3,一眼就看出3应该 ...

temp1=temp2;这里是为啥哇

风车呼呼呼 发表于 2022-4-27 15:11:37

kkk聪 发表于 2022-4-27 15:03
temp1=temp2;这里是为啥哇

你模拟一遍后移的交换过程,最多走两个循环就知道了
页: [1]
查看完整版本: 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。