请补充main函数,该函数的功能是:把一个整数插入到一个已经按从小到大排序的数组中。插入后,数组仍然有序。 例如,在数组bb[N]={12,23,31,44,51,63,71,79,85,95}中插入93,结果为: bb[N]{11,21,31

admin2010-09-14  21

问题 请补充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;【  】;j--)
【  】;
              bb [j] =n;
【  】;
          }
         if (i=N)
            bb=n;
         printf("\n***** new list ******In");
         for (i=0;i<N+l; i++)
             printf ("%4d ",bb );
     }

选项

答案j>I bb[j]=bb[j-1] break

解析 第一空:因为原数组是按从小到大排列,所以从第一个元素开始,遂一与待插入的元素进行比较,第一个大于待插入元素n的元素bb的下标i即为插入位置。所以,从bb到bb[N-1]都要依次向后移动一个位置,使待插入元素n存于bb
这里,for循环中j取值从N到i+1。填空i+1。为了实现从bb到bb[N-1]依次向后移动一个位置,将当前元素赋给下一个元素,要注意,为了不覆盖未经处理的元素,应该从最后一个元素开始移动。第三空:将整数n插入数组后,函数功能已经实现,应使用break语句跳出for循环。
转载请注明原文地址:https://kaotiyun.com/show/PWID777K
0

最新回复(0)