A-A+
以下程序可把输入的十进制数以十六进制数的形式输出 请填空。 inelude <stdio.h
问题详情
以下程序可把输入的十进制数以十六进制数的形式输出,请填空。 inelude <stdio.h> main() { ehar b[17]={"0123456789ABCDEF"}; int c[64],d,i=0,base=16; long n; printf("Enter a number:n"); seanf("%ld",&n); do{c[i]=【 】;i++;n=n/base;} while(n! =0); printf("Transmite new base:n"); for(--i; i>=0;--i) {d=c[i];printf("%c",b 【 】 );} printf("n"); }
请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:n%base [d]
程序中的字符数组b存储了十六进制16个数字的字符,整型数组c用于存储转换的十六进制数的各位数值。将整数n转换成它的各位十六进制数值,需采用除以16取余的方法,即求n除以16的余,得到它的十六进制的末位数,接着将n除以16,在n不等于0的情况下循环,顺序求出n的十六进制的倒数第一、第二、第三位数等。程序中变量base已预置16,所以在第一处填n%base。当n的十六进制数的倒数第一、第二、第三位等依次存放于数组c中后,就从最高位至最低位,参照数组c[i]的内容d(以其内容为下标),取十六进制数字符表中的字符b[d)输出,所以在第二处填[d]。