给定一个整数,请将该数各个位上数字反转得到一个新数。 新数也应满足整数的常见形式,即除非是给定的原数为零,否则反转后得到的新数的最高位数字不应为零 。 用C语言
时间: 2023-03-06 16:33:19 浏览: 165
可以使用以下代码来反转一个给定的整数:int reverse(int n) {
int result = 0;
while (n != 0) {
int digit = n % 10;
result = result * 10 + digit;
n /= 10;
}
return result;
}
相关问题
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
这个问题可以通过将数字转换为字符串,然后反转字符串,再将反转后的字符串转换为数字的方式来解决。以下是代码示例:
```
def reverse_num(num):
if num == 0:
return 0
num_str = str(num)
reversed_str = num_str[::-1]
if reversed_str[0] == '0':
reversed_str = reversed_str[1:]
return int(reversed_str)
```
使用示例:
```
num = 12345
reversed_num = reverse_num(num)
print(reversed_num) # 输出 54321
num = 12000
reversed_num = reverse_num(num)
print(reversed_num) # 输出 21
```
注意,默认情况下,反转字符串的方式会保留原字符串的第一个字符(即最高位数字),所以需要判断反转后的字符串是否以0开头,如果是,则需要将第一个字符去除。
使用C++给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零
。示例:
输入:123
输出:321
输入:-123
输出:-321
输入:120
输出:21
解题思路:
我们可以将该整数从低位到高位的每一位数字依次取出,然后反转过来,最后组成一个新的整数。需要注意的是,如果原数为负数,则新数也应该为负数,且需要将原数的符号位去掉再进行反转。
代码实现:
int reverse(int x){
int flag = 1; // 标记正负号
if(x < 0){
flag = -1;
x = -x;
}
long long res = 0; // 新数
while(x){
res = res * 10 + x % 10;
x /= 10;
}
res *= flag; // 恢复符号
if(res > INT_MAX || res < INT_MIN) // 溢出判断
return 0;
return res;
}
阅读全文