阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明2.1】 以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。 【函数2.1】 void fun1 (int a[]) { int i,j,

admin2009-02-15  56

问题 阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
   【说明2.1】
   以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。
  【函数2.1】
   void fun1 (int a[])
   {    int i,j,k,r,x,m;
        for(i=2;i<=n;i++)
        {      (1);
            k=1;r=i-1;
            while(k<=r)
               {    m=(k+r)/2;
                    if(x<a[m])r=m-1;
                    else  (2);
               }
           for(j=i-1;j>=k;j--)
           a[j+l]=a[j];
             (3);
       }
   }
   【说明2.2】
   以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。
  【程序2.2】
   #include<stdio.h>
   main()
   {    charb[16]={’0’,’l’,’2’,’3 ,4,’5’,’6’,’7’,’8’,’9’,’A’,’B’,’C’,’D’,’E’,’F’};
       int c[64],d,i=0,base;
       long n;
       printf("enter a number:\n");
       scanf("%1d",&n);
       printf("enter new basc:\n");
       scanf("%d", &base);
       do
           {    c=(4);
                i++; n=n/base;
           } while(n!=0);
       printf("transmite new base:\n");
       for(--i;i>=0;--i)
       {    d=c;
            printf("%c",(5));
       }
   }

选项

答案(1)x=a[i] (2)a[k]=x (3)k=m+1 (4) n% base (5)b[d]

解析 函数3.1的思想是依次将数组中的每一个元素插入到有序段中,使有序段的长度不断地扩大。对于待插入元素,先用二分查找法找出应该插入的位置。然后将元素插入。对数组来说,就是将该位置以后的元素依次后移,然后将待插入元素放到移出来的空位中。
   程序3.2用的思想是除base(base在二~十六进制之间)取余法求得相应进制数,然后再转换输出。
转载请注明原文地址:https://jikaoti.com/ti/mvW7FFFM
0

最新回复(0)