以下程序可把输入的十进制数以十六进制数的形式输出。 请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序; main () { char b[17]={"0123456789ABCDEF"}; int c[64] ,d,i=0,base=16; long n; printf("Enter a number:\n"); scanf ("%ld", &n); do { /*****************found****************/ c[i]=______; i++; n=n/base; } while (n!=0); printf("Transmite new base:\n"); for(--i;i>=0;--i) /***************found*******************/ { d=c[i];printf("%c",b______);} printf("\n"); }
参考答案:错误:缺少语句 正确:应填入n%base或%16
解析:(2)错误:缺少语句 正确:应填入[d] 在该程序中,字符数组b存储十六进制的16个数字符,整型数组c存储译出的十六进制数的各位数值。从整数n译出它的各位十六进制数值,需采用除16取余的方法,即求n除16的余,得到它的十六进制的个位数,接着将n除以16。在n不等于0的情况下循环,能顺序求出n的十六进制的个位数、十位数、百位数等。程序中变量base已预置16,所以在第1个空框处可填代码n%base或n%16。当n的十六进制数的个位、十位、百位等依次存放于数组c中后,就从最高位至最低位,参照数组c[i]的内容d(以其内容为下标),取十六进制数字符表中的字符b[d]输出。所以在第2个空框处可填入代码[d]。