以下程序可把输入的十进制数以十六进制数的形式输出,请填空。 #inelude <stdio.h> main() { ehar b[17]={"0123456789ABCDEF"}; int c[64],d,i=0,base

admin2009-01-15  37

问题 以下程序可把输入的十进制数以十六进制数的形式输出,请填空。
   #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++;n=n/base;}
      while(n! =0);
      printf("Transmite new base:\n");
      for(--i; i>=0;--i)
      {d=c;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的内容d(以其内容为下标),取十六进制数字符表中的字符b[d)输出,所以在第二处填[d]。
转载请注明原文地址:https://kaotiyun.com/show/nLXp777K
0

最新回复(0)