1.
#include <stdio.h>
void main(){
/* 输出数组各元素*/
int i,key,loc;
int a[10]={1,3,6,9,10,15,16,22,30};
for(i=0;i<9;i++){
printf(" %d",a[i]);
}
/*寻找插入位置*/
printf("\n\nPlease intput key:");
scanf("%d",&key);
loc=0;
for(i=0;i<9;i++){
if(a[i]>=key) break;
}
loc=i;
/*逆序向后移动每一个元素,然后插入新元素*/
for(i=8;i>=loc;i--){
a[i+1]=a[i];//
}
a[loc]=key;
/*输出新数组各元素*/
printf("\nNew array is-----\n");
for(i=0;i<10;i++){//插入一个元素,组数长度增1
printf(" %d",a[i]);
}
printf("\n");
}
输入12,输出结果如下
总结:便利数组,直到找到大于或等于输入数的时候,找到插入数的下标,a[i+1]=a[i]意思是将a[i]的值给a[i+1],往后移一个(插入一个数,后面元素依次往后移动一个)
2.
#include <stdio.h>
void main(){
int data,temp,k;
static int a[9]={-10,2,4,8,10,15,25,50};
printf("\nEnter a data:");
scanf("%d",&data);
for(k=8;k>=1;k--){
if(a[k-1]>data) //逆序遍历数组元素,数组元素大于data,该元素就向后移动一位
{
a[k]=a[k-1];
}else{
a[k]=data; //数组元素小于data,把data放到该元素后面
break;
}
}
for(k=0;k<9;k++){
printf("%7d",a[k]);
}
}
两种其实差不多,但是第二种代码量小。