填空题 【说明2.1】 以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。 【函数2.1】 void fun1 (int a[]) { int i,j,k,r,x,m; for(i=2;i<=n;i++) { {{U}} (1) {{/U}}; k=1;r=i-1; while(k<=r) { m=(k+r)/2; if(x<a[m])r=m-1; else{{U}} (2) {{/U}}; } for(j=i-1;j>=k;j--) a[j+l]=a[j]; {{U}} (3) {{/U}}; } } 【说明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[i]={{U}} (4) {{/U}}; i++; n=n/base; } while(n!=0); printf("transmite new base:/n"); for(--i;i>=0;--i) { d=c[i]; printf("%c",{{U}} (5) {{/U}}); } }
  • 1、
【正确答案】 1、x=a[i] (2)a[k]=x (3)k=m+1 (4) n% base    
【答案解析】(5)b[d] [解析] 函数3.1的思想是依次将数组中的每一个元素插入到有序段中,使有序段的长度不断地扩大。对于待插入元素,先用二分查找法找出应该插入的位置。然后将元素插入。对数组来说,就是将该位置以后的元素依次后移,然后将待插入元素放到移出来的空位中。 程序3.2用的思想是除base(base在二~十六进制之间)取余法求得相应进制数,然后再转换输出。