题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
#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;
} 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的作用就是找到新的数字该插入的位置,既然找到了位置,上面操作也把数组调整好了,自然没有继续遍历的必要 风车呼呼呼 发表于 2022-4-27 14:53
要把一个数插入数组,当然要把排在它后面的数都后移。
例:数组:1,5,8,9.插入3,一眼就看出3应该 ...
temp1=temp2;这里是为啥哇 kkk聪 发表于 2022-4-27 15:03
temp1=temp2;这里是为啥哇
你模拟一遍后移的交换过程,最多走两个循环就知道了
页:
[1]