有一个已经排好序的数组(假设从小到大排序),现输入一个数,要求按原来的规律将他插入数组中。

法一:

int main( ){int arr[11]={2,4,6,8,10,12,14,16,18,20};//10个数,多一个空留给要插入的元素int i,j,num;printf("请输入要插入的数:\n");scanf("%d",&num);for(i=0;i<10;i++)if(arr[i]>num)break;for(j=10;j>i;j--)arr[j]=arr[j-1];//数组元素向后移 arr[i]=num; //插入for(i=0;i<11;i++)printf("%d ",arr[i]);}


法二:

int main( ){int arr[12]={0,2,4,6,8,10,12,14,16,18,20};//11个数int i,j=10,num;//j是第11个数的下标scanf("%d",&num);arr[0]=num; i=j;while(arr[i]>num){arr[i+1]=arr[i];i--;}arr[++i]=num;j++; //j=11for(i=1;i<=j;i++)printf("%d ",arr[i]);}

法三:

int main( ){int arr[11]={2,4,6,8,10,12,14,16,18,20};int i,j=11,num;scanf("%d",&num);i=j-1; //i=10 while((i>0)&&(arr[i-1]>num)){ //arr[9],10个数中的最后一个数 arr[i]=arr[i-1]; //arr[10]=arr[9],arr[9]=arr[8] i--;} arr[i]=num; //插入 for(i=0;i<j;i++)printf("%d ",arr[i]);}