问题描述:输入一个十进制整数(可能大于15),转化为十六进制输出
解决方法:除16取余数倒排,取余结果放入到str1,倒排结果放入到str2
编译环境:vc++6.0
代码:
#include <stdio.h>
/*输入一个十进制整数(可能大于15),转化为十六进制输出*/
/*十进制转十六进制,方法:除16取余数倒排
取余结果放入到str1,倒排结果放入到str2
*/
char* convert(int x)
{
static char hexchars[] = "0123456789ABCDEF"; //十六进制对应的数组
static char str1[81], str2[81], * p = str1, * q = str2;
static int n = 0; //计算字符长度,为倒排做准备
//str1 存储取余数组, str2倒排存储数组
while (x) //取余
{
*p++ = hexchars[x % 16];
x /= 16;
n++;
}
p--; //指针回退,因为多加了一步
while (n)
{
*q++ = *p--;
n--;
}
return str2;
}
int main()
{
int x;
printf("请输入一个十进制数:\n");
scanf("%d", &x);
printf("对应的十六进制数是:%s\n", convert(x));
return 0;
}
测试案例: