首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++将十进制改为八进制,向后输出

C++将十进制改为八进制,向后输出
EN

Stack Overflow用户
提问于 2013-11-10 17:45:25
回答 5查看 10.5K关注 0票数 2

所以我编写了这个小应用程序,它将十进制转换成八进制,它输出正确的答案,只有它是向后的。例如,如果转换的答案是17,应用程序将显示为71。任何帮助都将不胜感激。

代码语言:javascript
复制
;
    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;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-11-10 17:52:13

您需要取一个和,然后打印最终结果,如下所示

代码语言:javascript
复制
int n=0;
while (octal > 0) {
  total += (pow(10,n++))*(octal % 8);
  octal /= 8;
}
cout << total << endl;

只要打印这些数字,就会以相反的顺序打印出来,因为你首先要打印最小的位。

如评论中所述,上述机制只适用于转换为小于10的基数。

票数 1
EN

Stack Overflow用户

发布于 2013-11-10 18:00:39

您可以使用std::oct以八进制符号打印数字。

代码语言:javascript
复制
int n = 123;
std::cout << std::oct << n << std::endl;

类似地,您可以用不同的符号打印数字,如十进制- std::dec和十六进制- std::hex

这些输入/输出操作器允许用户解析各种符号中的字符串数。

代码语言:javascript
复制
int n;
std::istringstream("24") >> std::hex >> n;
std::cout << n << std::endl;  // n is 36 (decimal)
票数 4
EN

Stack Overflow用户

发布于 2013-11-10 18:09:57

你做得很好,但你必须把剩下的部分反印出来,才能得到正确的答案。例如,如果ans为17,则十进制等效为1*8^1+7*8^0。单位数字是通过将数字除以8得到的余数,左边的下一个数字是通过将数字除以8^2得到的余数,依此类推。因此,如果八进制数字为n位,那么最重要的数字将是通过将数字除以8^n.That得到的余数,这就是为什么必须以反向顺序打印余数的原因。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19892931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档