给定一个 32 位有符号整数,将整数中的数字进行反转。 用c语言
时间: 2023-05-31 16:07:34 浏览: 95
可以使用以下代码进行实现:
```c
#include <stdio.h>
#include <limits.h>
int reverse(int x){
int reversed = 0;
while(x != 0){
int pop = x % 10;
x /= 10;
if(reversed > INT_MAX/10 || (reversed == INT_MAX/10 && pop > 7)) return 0;
if(reversed < INT_MIN/10 || (reversed == INT_MIN/10 && pop < -8)) return 0;
reversed = reversed * 10 + pop;
}
return reversed;
}
int main(){
int x = 123;
printf("%d\n", reverse(x)); //输出321
x = -123;
printf("%d\n", reverse(x)); //输出-321
x = 120;
printf("%d\n", reverse(x)); //输出21
return 0;
}
```
在上面的代码中,我们使用了一个 while 循环,来通过除以 10 和 取模 10 的方法,将给定的整数反转。同时我们也需要注意反转后的整数的范围,确保其在 32 位有符号整数的范围内。
相关问题
给定一个十进制整数,将其数字进行反转。假设我们的环境只能存储 32 位有符号整数,其数值范围是 [2^31, 2^31-1]。根据这个假设,如果反转后的整数溢出,则返回 0。用C语言
来实现此算法可以参考以下代码:
```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;
}
```
该算法通过不断取出给定整数的末位,然后将其倒置拼接生成反转后的整数。同时,该算法还考虑了溢出的问题,如果反转后的整数超出了32位有符号整数的范围,则返回0。
使用C语言给定一个整数,请将该数各个位上数字反转得到一个新数。输出时请忽略数字最前面的0
可以使用以下代码实现:
```c
#include <stdio.h>
int main() {
int num, reversed_num = 0;
scanf("%d", &num);
while (num != 0) {
reversed_num = reversed_num * 10 + num % 10;
num /= 10;
}
printf("%d", reversed_num);
return 0;
}
```
这个程序可以接受一个整数作为输入,然后将该数的各个位上的数字反转得到一个新数,并输出该新数。例如,如果输入为1234,则输出4321。注意,程序会忽略数字最前面的0。
阅读全文