#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int dec2hex(int n);
int n = 0;
printf("输入一个十进制整数:");
scanf("%d",&n);
printf("对应的十六进制数:");
dec2hex(n);
system("pause");
return 0;
}
int dec2hex(int n)
{
char SL[200] = { '\0' };
int yushu = 0, i = 0;
do
{
n = n / 16;
yushu = n % 16;
if (yushu > 9)
{
switch (yushu)
{
case 10:SL[i] = 'A'; break;
case 11:SL[i] = 'B'; break;
case 12:SL[i] = 'C'; break;
case 13:SL[i] = 'D'; break;
case 14:SL[i] = 'E'; break;
case 15:SL[i] = 'F'; break;
case 16:SL[i] = 'G'; break;
default:
break;
}
}
else
{
SL[i] = yushu;
}
i++;
}
while (n > 0);
for (i = i - 1; i != 0; i--)
{
printf("%c", SL[i]);
}
printf("\n");
return 0;
}

10进制转16进制,为什么无输出?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 正在学C++ 2021-04-23 08:22关注
int dec2hex(int n) { char SL[200] = { '\0' }; int yushu = 0, i = 0; do { yushu = n % 16; //先%16 再/16 n = n / 16; if (yushu > 9) { switch (yushu) { case 10:SL[i] = 'A'; break; case 11:SL[i] = 'B'; break; case 12:SL[i] = 'C'; break; case 13:SL[i] = 'D'; break; case 14:SL[i] = 'E'; break; case 15:SL[i] = 'F'; break; //截至到15就行啦 default: break; } } else { SL[i] = yushu+48; //需要加48 因为你的数组是char类型,'1'=(char)(1+48) } i++; } while (n > 0); for (i = i - 1; i >= 0; i--) // i>=0 你的SL[0]也是有数据的 { printf("%c", SL[i]); } printf("\n"); return 0; }
修改三处地方。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报