求这道程序题~~~*-*
有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。要求在定义数组的同时对数组进行初始化,然后用户输入数值,将此数按原来的规律插入到数组之中后再把数组输出。
什么叫原来的规律?是用户一时半会摸不出来的规律吗?
反正甭管什么规律,说到底就是个偏序关系。一般就是插入排序的思想呗。
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@~ #