46、十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个数码,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
编写函数void fun(int a, char s[]),其功能是:将十进制非负整数a(0<=a<=2147483647),转换为十六进制数并保存到字符串s中。
例如,若a=30,则得到的字符串s为“1E”(s[0]='1',s[1]='E’,s[2]=‘ ’)。
#include <stdio.h> void fun(int a, char s[]) { } int main() { int n; char s[9]; printf("请输入一个十进制整数n (0<=a<=2147483647) : "); scanf("%d",&n); fun(n,s); printf("转换为十六进制数为 %sn",s); return 0; }
void fun(int a, char s[]) { char table[17]="0123456789ABCDEF"; int digit[9],cnt=0; do { digit[cnt++]=a%16; a=a/16; } while (a!=0); int i,j; for (i=cnt-1,j=0;i>=0;i--) s[j++]=table[digit[i]]; s[j]='