带前导零的数字的反转

新手上路,请多包涵

我们如何反转一个带有前导零的数字?例如:如果输入为 004,则输出应为 400。

我写了下面的程序,但它仅在输入中没有前导零时才有效。

 int num;
cout<<"Enter number "<<endl;
cin>>num;

int rev = 0;
int reminder;
while(num != 0)
{
    reminder = num % 10;
    rev = rev * 10 + reminder;
    num = num / 10;
}
cout<<"Reverse = "<<rev<<endl;

有没有办法输入一个前导零的数字?即使那样,上述逻辑也不适用于这些数字。

任何简单的解决方案?通过将输入作为字符串并对其进行处理是可行的。但这看起来不太好。

* 编辑:如果数字的长度是已知的,它看起来可以用前导零反转一个数字。 (不使用字符串)*

我会尽快发布代码。

编辑 2:我试图将字符放回 cin 流,然后读取并计算反向。它适用于 2 位数字。

但如果长度已知,则更容易找到反向。我需要做的就是将所需的次数乘以 10。所以我想,我会采用字符串方法。希望面试官开心:)

原文由 bjskishore123 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 668
2 个回答

前导零不是用二进制数表示的( intdouble 等)所以你可能不得不使用 std::string 。将输入读入字符串,然后调用 std::reverse() 将字符串作为输入传递。

原文由 Jonathan Grynspan 发布,翻译遵循 CC BY-SA 2.5 许可协议

是的,您必须使用字符串。您不能将前导零存储在 int 中。

原文由 AndreKR 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏