请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大排序的数组中。插入后,数组仍然有序。 例如,在数组bb[N]={12,23,31,44,51,63,71,79,85,95}中插入93,结果为: bb[N]{11,21,31,41,51,61,7l,79,8l,93,95} 注意:部分源程序给出如下. 请勿改动主函数main和其他函数中的任何内容,仅在 main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include<std/o. h> #define N 10 main() { int i,j; int n; int bb IN+l] ={ t2,23, 31, 44, 51, 63, 71, 79,85,95}; clrscr (); printf("\nInput n \n"); scanf ("%d", &n); printf ("\nn=%d ",n); printf("\n*** original list ***In"); for (i=0; i<N; i++) printf ("%4d ",bb [ii ); for (i=0; i<N; i++) { if (n<=bb [i ] ) { for(j=N; 【1】 ;j--)【2】; bb [j] =n; 【3】; }if (i=N) bb[i]=n;printf("\n***** new list ******In");for (i=0;i<N+l; i++) printf ("%4d ",bb [i]); }
参考答案:[1] j>i [2]bb[j]=bb[j-1] [3]break
解析: 填空1:因为原数组是按从小到大排列,所以从第一个元素开始,遂一与待插入的元素进行比较,第一个大于待插入元素n的元素bb[i]的下标i即为插入位置。所以,从bb[i]到bb[N-1]都要依次向后移动一个位置,使待插入元素n存于bb[i]。这里,for循环中j取值从N到i+1。填空i+1。为了实现从bb[i]到bb[N-1]依次向后移动一个位置,将当前元素赋给下一个元素,要注意,为了不覆盖未经处理的元素,应该从最后一个元素开始移动。填空3:将整数n插入数组后,函数功能已经实现,应使用break语句跳出for循环。