【发布时间】:2015-04-20 22:16:00
【问题描述】:
我是 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。谁能建议我应该做些什么来纠正它?
【问题讨论】:
-
iostream.h自 1998 年 C++ 标准化以来一直不存在。那是很久以前的事了。 -
rem = dec % 16;这就是问题所在。你总是在每次迭代中检查 low 数字。 -
如果唯一的问题是它倒退了,那么您肯定可以想办法扭转你的情况;)
-
如果你学会使用调试器并单步调试你的代码,你很快就会清楚问题是什么。
-
@πάνταῥεῖ 从问题的措辞来看,这听起来像是某种可能不是在寻找简单解决方案的任务。也许OP可以澄清。
标签: c++