问题 填空题

【说明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[i]= (4) ;i++; n=n/base; } while(n!=0); printf("transmite new base:\n"); for(--i;i>=0;--i) { d=c[i]; printf("%c", (5) ); } }

答案

参考答案:x=a[i] (2)a[k]=x (3)k=m+1 (4) n% base

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

单项选择题
单项选择题