我们如何反转一个带有前导零的数字?例如:如果输入为 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 许可协议
前导零不是用二进制数表示的(
int
,double
等)所以你可能不得不使用std::string
。将输入读入字符串,然后调用std::reverse()
将字符串作为输入传递。