我们如何使用前导零数来反转数字? 例如:如果输入为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。 所以我想,我会采用字符串方法。 希望面试官很高兴:)
答案 0 :(得分:6)
是的,你必须使用一个字符串。您不能在 int 中存储前导零。
答案 1 :(得分:6)
前导零不是由二进制数字表示的int
,double
等。)因此,您可能必须使用std::string
。读取字符串中的输入,然后调用std::reverse()
将字符串作为输入。
答案 2 :(得分:2)
如果你知道你想要的数字的总宽度,你可以重用你拥有的代码并将结果(从右到左)存储在零初始化数组中。注意:您可能希望在下面列出的代码中添加一些错误检查。
int num, width;
cout<<"Enter number "<<endl;
cin>>num;
cout<<"Enter width: "<<endl;
cin>>width;
int rev[width];
for (int i = 0; i < width; ++i)
rev[i] = 0;
int cnt = width - 1;
int rev = 0;
int reminder;
while(num != 0)
{
reminder = num % 10;
// rev = rev * 10 + reminder;
rev[cnt] = remainder;
--cnt;
num = num / 10;
}
cout << "Reverse: ";
for (int i = 0; i < width; ++i)
cout << rev[i];
cout << endl;
这样您将来也可以更轻松地操纵数字。
答案 3 :(得分:1)
以字符串格式读取数字(即使用std :: string)并反转字符串。
答案 4 :(得分:1)
将输入转换为第3行中的整数后,任何有关用户输入中前导零的信息都将丢失。
你必须使用一个字符串。
答案 5 :(得分:1)
递归方法,但很容易转换为循环...
#include <iostream>
int f(int value = 1)
{
char c;
return (std::cin.get(c) && isdigit(c))
? (c - '0') * value + f(10 * value)
: 0;
}
int main()
{
std::cout << f() << '\n';
}
答案 6 :(得分:0)
正如ChrisF所说,你需要加载一个字符串,因为4和004是相同的int,你将它分配给int
变量后就无法区分它。
接下来要做的是修剪字符串以包含数字(如果你想要正确)并在其上运行std::reverse
- 你就完成了。
答案 7 :(得分:0)
将数字保留为字符串,然后使用std::reverse
。
std::string num;
std::cout << "Enter number " << std::endl;
std::cin >> num;
std::string rev(num);
std::reverse(rev.begin(), rev.end());
std::cout << "Reverse = " << rev << std::endl;
答案 8 :(得分:0)
将while
循环替换为for
循环,并使用相同的运行次数,原始数字包含数字(包括前导零)。例如004将要求循环运行3次,而不是在x == 0
之后过早终止。
答案 9 :(得分:0)
s = int(raw_input(" enter the no of tyms :"))
n = 0
list, list1 = [], []
while n <= s:
m = raw_input("enter the number:")
n=n+1
list.append(m)
print list
list.reverse()
print list
在最好的一个Python中反转。