给定一个整数n(键盘输入),将该数子各个位上的数字反转得到一个新的数子。输出的新数最高位不能 有0. 输入一个 (-10000000。 10000000)之 同的数,输出反转后的新数。
时间: 2024-06-05 09:06:14 浏览: 45
解题思路:
我们可以通过模10取余数的方式,依次获取原数的各个位上的数字,然后将其逆序拼接起来得到新数。需要注意的是,如果新数最高位为0,则需要去掉0。
具体步骤如下:
1. 读入整数n;
2. 定义变量rev存储新数,初值为0;
3. 循环取n的个位,每次将其添加到rev的末尾,即rev=rev*10+(n%10),并将n除以10;
4. 判断rev的最高位是否为0,如果是则去掉0;
5. 输出rev。
参考代码:
相关问题
给定一个整数n(键盘输入),将该数字各个位上的数字反转得到一个新的数字。输出的新数最高位不能有0。 输入一个(-10000000,10000000)之间的数,输出反转后的新数。
示例:
输入:12345
输出:54321
输入:-9876
输出:-6789
思路:可以先将输入的数转化成字符串,然后用字符串反转的方法得到新的字符串,再将新的字符串转化成整数即可。需要注意的是,如果输入的数是负数,需要将负号和数字分开处理。最后还需判断输出的新数最高位是否为0。
代码如下:
用vs软件,给定一个整数n(键盘输入),将该数字各个位上的数字反转得到一个新的数字。输出的新数最高位不能 有0。 输入一个(-10000000,10000000)之间的数,输出反转后的新数。
```
#include <iostream>
#include <string>
using namespace std;
int reverse(int n) {
string s = to_string(n);
if (s[0] == '-') {
reverse(s.begin() + 1, s.end());
} else {
reverse(s.begin(), s.end());
}
return stoi(s);
}
int main() {
int n;
cin >> n;
cout << reverse(n) << endl;
return 0;
}
```