所以我编写了这个小应用程序,它将十进制转换成八进制,它输出正确的答案,只有它是向后的。例如,如果转换的答案是17,应用程序将显示为71。任何帮助都将不胜感激。
;
int _tmain(int argc, _TCHAR* argv[])
{
int octal, total = 0;
cout<< "please enter a decimal: ";
cin >> octal;
while(octal > 0)
{
total = octal % 8;
octal /= 8;
cout << total;
}
cout << endl;
_getche();
return 0;
}发布于 2013-11-10 17:52:13
您需要取一个和,然后打印最终结果,如下所示
int n=0;
while (octal > 0) {
total += (pow(10,n++))*(octal % 8);
octal /= 8;
}
cout << total << endl;只要打印这些数字,就会以相反的顺序打印出来,因为你首先要打印最小的位。
如评论中所述,上述机制只适用于转换为小于10的基数。
发布于 2013-11-10 18:00:39
您可以使用std::oct以八进制符号打印数字。
int n = 123;
std::cout << std::oct << n << std::endl;类似地,您可以用不同的符号打印数字,如十进制- std::dec和十六进制- std::hex。
这些输入/输出操作器允许用户解析各种符号中的字符串数。
int n;
std::istringstream("24") >> std::hex >> n;
std::cout << n << std::endl; // n is 36 (decimal)发布于 2013-11-10 18:09:57
你做得很好,但你必须把剩下的部分反印出来,才能得到正确的答案。例如,如果ans为17,则十进制等效为1*8^1+7*8^0。单位数字是通过将数字除以8得到的余数,左边的下一个数字是通过将数字除以8^2得到的余数,依此类推。因此,如果八进制数字为n位,那么最重要的数字将是通过将数字除以8^n.That得到的余数,这就是为什么必须以反向顺序打印余数的原因。
https://stackoverflow.com/questions/19892931
复制相似问题