gpt4 book ai didi

c++ - C++十进制转十六进制代码

转载 作者:太空狗 更新时间:2023-10-29 23:24:38 25 4
gpt4 key购买 nike

我是 C++ 编程的新手。我的任务是编写十进制到十六进制的转换代码。这是我到目前为止所做的。

#include <iostream>

int main()
{
long dec;
int rem;

std::cout << "enter decimal number: ";
std::cin >> dec;

while (dec > 0) {
rem = dec % 16;
if (rem > 9) {
switch (rem) {
case 10: std::cout << "A"; break;
case 11: std::cout << "B"; break;
case 12: std::cout << "C"; break;
case 13: std::cout << "D"; break;
case 14: std::cout << "E"; break;
case 15: std::cout << "F"; break;
}
}
else {
std::cout << rem;
}
dec = dec / 16;
}
}

它向后给出答案,比如如果我输入一个十进制数“650”,它给出十六进制值 A82,而答案应该是 28A。谁能建议我应该如何纠正它?

最佳答案

最简单的解决方案:

#include <iostream>
using namespace std;
int main(){
int val;
cin >> val;
cout << hex << val << endl;
return 0;
}

算法的修复 - 使用递归:

#include <iostream>
#include <conio.h>
using namespace std;

void print_hex(int value)
{
if (value == 0)
return;

int rem = value % 16;
value /= 16;
print_hex(value); //first execute recurency and print next value

//after return print the less significant digit
if (rem > 9)
cout << (char)(rem - 10 + 'A');
else
cout << rem;
}

int main(int argc, char * argv[]) {
cout << "enter decimal number: ";
long dec;
cin >> dec;
print_hex(dec);
cout << endl;
return 0;
}

关于c++ - C++十进制转十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29759404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com