C语言中由十进制向十六进制的转化要怎么做?

我编了一个十进制转八进制,二进制和十六进制的程序。。
新手。。
但是在十六进制那里既要输出数字又要输出字母怎么办呢?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int store,n,e,a;
double sum1,sum2,sum3;
char ch;
//store用作储存变量n的初始值 ,n是输入的需要变换进制的数字,e是用作终止循环的计数单位,a是二进制数字每一位上的数字,sum1是二进制数字,sum2是八进制数字,sum3是十六进制数字,
e=-1;
sum1=0;
sum2=0;
sum3=0;
printf("Please input an integer:");
//输入变量
scanf("%d",&n);
store=n;//储存n的初始值防止丢失
while(e<=7)//使用while结构将原数字进行二进制转换
{
a=n%2;
n=n/2;
e=e+1;
sum1=sum1+a*pow(10,e);

}
if(sum1<=1)//用if选择结构判断输出时需要补的0的数目
printf("The binary form is 0000000%.0lf\n",sum1);
else if(1<sum1&&sum1<=11)
printf("The binary form is 000000%0.lf\n",sum1);
else if(11<sum1&&sum1<=111)
printf("The binary form is 00000%0.lf\n",sum1);
else if(111<sum1&&sum1<=1111)
printf("The binary form is 0000%0.lf\n",sum1);
else if(1111<sum1&&sum1<=11111)
printf("The binary form is 000%0.lf\n",sum1);
else if(11111<sum1&&sum1<=111111)
printf("The binary form is 00%0.lf\n",sum1);
else if(111111<sum1&&sum1<=1111111)
printf("The binary form is 0%0.lf\n",sum1);
else
printf("The binary form is %0.lf\n",sum1);
//二进制数字转换结束
n=store;
e=-1;
a=0;//使各个用作循环的变量恢复至初始值
while(e<=2)//使用while结构将原数字进行八进制转换
{
a=n%8;
n=n/8;
e=e+1;
sum2=sum2+a*pow(10,e);

}
if(sum2<=10)//用if选择结构判断输出时需要补的0的数目
printf("The octal form is 00%.0lf\n",sum2);
else if(10<sum2&&sum2<=99)
printf("The octal form is 0%.0lf\n",sum2);
else
printf("The octal form is %.0lf\n",sum2);
//八进制转换结束
n=store;
e=-1;
a=0;//使各个用作循环的变量恢复至初始值
while(e<=1)//使用while结构将原数字进行十六进制转换
(这里不会做!!!!!)

求助!!!
//十六进制转换结束

system("pause");
return 0;

}

使用一个字符数组 char ch[16] = "0123456789ABCDEF",
int a = xxx%16;
ch[a] 这个来取16进制的值。
温馨提示:答案为网友推荐,仅供参考
相似回答