You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改C++十进制转十六进制代码实现负数输入报错并重输提示

十进制转十六进制计算器负数输入限制功能实现

修改思路

原程序未对用户输入做合法性校验,输入负数时会直接输出空的十六进制结果,不符合使用要求。我们在输入环节新增校验逻辑,拦截负数输入,报错后引导用户重新输入,同时修复了输入0时输出为空的问题,且将全部界面提示翻译为中文,适配中文用户使用习惯。

核心修改内容

  • 读取用户输入的十进制数后,立即判断数值是否小于0
  • 若为负数,打印错误提示,重新等待用户输入,直到输入非负整数为止
  • 补充0值特殊处理逻辑,输入0时正常输出十六进制结果0
  • 所有界面提示翻译为中文

完整可运行代码

#include <iostream>
#include <string>
using namespace std;

int main()
{
    bool play_again;
    do
    {
        int dec_num, r;
        string hexdec_num = "";
        char hex[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };
        cout << "\n 十进制数转十六进制数:\n";
        cout << "---------------------------------------------------\n";
        cout << " 请输入一个十进制数: ";
        cin >> dec_num;

        // 新增负数校验逻辑
        while (dec_num < 0)
        {
            cout << "错误:不允许输入负数,请输入有效的非负十进制数:";
            cin >> dec_num;
        }

        // 处理输入为0的特殊情况
        if (dec_num == 0)
        {
            hexdec_num = "0";
        }

        while (dec_num > 0)
        {
            r = dec_num % 16;
            hexdec_num = hex[r] + hexdec_num;
            dec_num = dec_num / 16;
        }
        cout << " 转换后的十六进制数为: " << hexdec_num << "\n";
        while (true)
        {
            string user_input;
            cout << "是否再次转换?(输入'y'继续,'n'退出):" << endl;
            cin >> user_input;

            if (user_input == "y")
            {
                play_again = true;
                break;
            }
            else if (user_input == "n")
            {
                play_again = false;
                break;
            }
            else
            {
                cout << "输入无效,请输入'y'或'n'" << endl;
            }
        }
    } while (play_again);
    return 0;
}

内容的提问来源于stack exchange,提问作者Darin Hinze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:15:02