求这道程序题~~~*-*
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。要求在定义数组的同时对数组进行初始化,然后用户输入数值,将此数按原来的规律插入到数组之中后再把数组输出。
什么叫原来的规律?是用户一时半会摸不出来的规律吗?
反正甭管什么规律,说到底就是个偏序关系。一般就是插入排序的思想呗。
程序代码:
root@~ #cat 1.c
#include <stdio.h>
int main (void) {
int a[10]={ 1,3,5,6,8,9,10,10,19,20 }; //是个排序好的数组
int i,j,n;
//打印源数组
for(i=0;i<10;i++) { printf ("%i ",a[i]); };printf ("\n");
scanf ("%i",&n);
//输入插入的数值n
//遍历数组, 看n与元素比较, 放入合适的位置
//插入的话需要移动数组
//大于的话直接追加在数组后面。
for(i=0;i<10;i++) {
//如果等于
if(a[i]==n) {
for(j=9;j>=i;j--) {
a[j+1]=a[j];
}
a[i+1]=n;
break;
}
//如果在两个元素之间
if(a[i]<n&&a[i+1]>n) {
for(j=9;j>=i;j--) {
a[j+1]=a[j];
}
a[i+1]=n;
break;
}
//如果小于0号元素
if(a[i]>n) {
for(j=9;j>=i;j--) {
a[j+1]=a[j];
}
a[i]=n;
break;
}
}
//如果大于最后的元素
if(a[9]<n) {
a[10]=n;
}
//打印插入后的数组
for(i=0;i<11;i++) { printf ("%i ",a[i]); };printf ("\n");
return 0;
}
root@~ #
