用c++给你一个32位的有符号整数 x,返回将x中的数字部分反 转后的结果。 如果反转后整数超过32位的 有符号整数的范围 [-231, 231-1],就返回0。 假设环境不允许存储64位整 数(有符号或无符号)。
时间: 2023-05-10 13:55:13 浏览: 110
以下是用 C 语言实现的代码:
int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > INT_MAX/10 || (rev == INT_MAX/10 && pop > 7)) return 0;
if (rev < INT_MIN/10 || (rev == INT_MIN/10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
这个函数会将输入的整数 x 中的数字部分反转,并返回反转后的结果。如果反转后的整数超过了 32 位有符号整数的范围,则返回 0。
相关问题
用c++语言实现,给你一个32位的有符号整数 x,返回将x中的数字部分反 转后的结果。 如果反转后整数超过32位的 有符号整数的范围 [-231, 231-1],就返回0。 假设环境不允许存储64位整 数(有符号或无符号)。
以下是用 C 语言实现将一个32位有符号整数 x 中的数字部分反转后的代码:
```c
int reverse(int x) {
int res = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (res > INT_MAX / 10 || (res == INT_MAX / 10 && pop > 7)) return 0;
if (res < INT_MIN / 10 || (res == INT_MIN / 10 && pop < -8)) return 0;
res = res * 10 + pop;
}
return res;
}
```
如果反转后整数超过32位的有符号整数的范围 [-231, 231-1],就返回0。这个函数可以处理这种情况,并返回0。
注意:这个函数只能处理32位有符号整数,如果输入的是64位整数,会出现错误。
用c++ 实现以下功能,给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
```c
int reverse(int x){
long res = 0; // 使用 long 类型来存储反转后的结果
while (x != 0) {
res = res * 10 + x % 10;
x /= 10;
}
return (res > INT_MAX || res < INT_MIN) ? 0 : res; // 判断结果是否超过 int 范围
}
```
阅读全文