这个程序该如何编写,求解!!!谢谢
编写程序、随机数出m个数,从键盘任意输入一个数n,若n在这m个数中,请用折半查找方法将其找出,若不在,请将其插入,使插入后的m个数也从小到大排列。要求 m,n,均由用户从键盘输入。
程序代码:
#include <stdio.h> #include <time.h> int main (void) { srand((unsigned)time(NULL)); int m,n,i,j,temp; printf ("Enter number of random array:"); scanf("%i",&m); int a[m]; printf ("Enter number of you want search:"); scanf("%i",&n); for(i=0;i<m;i++) { a[i]=rand()%100; } //Sort ... for(i=0;i<m-1;i++) { for(j=i+1;j<m;j++) { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } //Print ... for(i=0;i<m;i++) { printf ("%i ",a[i]); } printf ("\n"); //Search ... for(i=0;i<m;i++) { if(n>a[i]&&n<a[i+1]) { for(j=m-1;j>=i+1;j--) { a[j+1]=a[j]; } a[i+1]=n; break; } if(n==a[i]) { printf ("Found it!\n"); break; } if(n<a[0]) { for(j=m-1;j>=0;j--) { a[j+1]=a[j]; } a[0]=n; m++; break; } if(n>a[m-1]) { a[m]=n; m++; break; } } //Print for(i=0;i<m;i++) { printf ("%i ",a[i]); } printf ("\n"); return 0; }