m0_52767130 2021-04-23 02:04 采纳率: 100%
浏览 40
已采纳

10进制转16进制,为什么无输出?

#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;
}

  • 写回答

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;
    }

    修改三处地方。

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料