题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。
#include<stdio.h> int main(){ int n; //用到哪个变量定义哪个变量 printf("请输入数组的n个数: "); scanf("%d",&n); int i=0;int a[n]; printf("原数组为:",a[n]); for(i=0;i<n;i++) { scanf("%d",&a[i]); //输入长度为n的数组 } int j,temp1,temp2,number; //定义要插入的值number和两个临时值temp1,temp2 printf("请输入一个数:"); scanf("%d",&number); /*若输入的数组比最后一位数据大,则直接加入数组最后;否则,逐一比较,遇到比输入数据大的,交换位置,利用变量j将之后的数统一后移*/ if(number>a[n-1]) { a[n]=number; } else{ for(i=0;i<=n;i++) { if(a[i]>number) { temp1=a[i]; a[i]=number; for(j=i+1;j<=n;j++) { temp2=a[j]; a[j]=temp1; temp1=temp2; } break; } } } for(i=0;i<=n;i++) { printf("%d\n",a[i]); } }