请补充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循环。