十进制转十六进制的具体方法:
对于整数部分,用被除数反复除以16,除第一次外,每次除以16均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
对于小数部分,采用连续乘以基数16,并依次取出的整数部分,直至结果的小数部分为0为止。故该法称"乘基取整法"。
10进制数转换成十六进制数,这是一个连续除以16的过程:把要转换的数,除以16,得到商和余数,将商继续除以16,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。
这个题应该有好几种方式,这里列出一种
#include<stdio.h>
int main(){
char b[17]={"0123456789ABCDEF"};
int c[64],d,i=0,base=16;
long n;
printf("输入一个数;\n");
scanf("%ld",&n);
do{c[i]=n%base;i++;n=n/base;}
while(n!=0);
printf("转换成新的数;\n");
for(--i;i>=0;--i)
{d=c[i];
printf("%c",b[d]);
}
}