如何修改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
相关产品推荐
相关产品推荐

