```c
include
int reverseInteger(int x) {
int result = 0;
while (x != 0) {
int remainder = x % 10;
if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && remainder > 7)) return 0;
if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && remainder < -8)) return 0;
result = result * 10 + remainder;
x = x / 10;
}
return result;
}
int main() {
int number;
printf("请输入一个正整数: ");
scanf("%d", &number);
int reversedNumber = reverseInteger(number);
if (reversedNumber != 0) {
printf("颠倒后的正整数是: %d\n", reversedNumber);
} else {
printf("颠倒后的正整数溢出\n");
}
return 0;
}
```
解释
reverseInteger函数:
该函数接受一个整数`x`作为参数,并返回其颠倒后的整数。
使用一个`while`循环来遍历整数`x`的每一位数字。
在每次迭代中,取出最后一位数字(`x % 10`),并将其添加到结果`result`中。
更新`x`,去掉最后一位数字(`x /= 10`)。
在每次迭代中,检查结果是否会在颠倒后溢出32位整数的范围。如果溢出,则返回0。
main函数:
提示用户输入一个正整数。
调用`reverseInteger`函数,并将结果存储在`reversedNumber`中。
如果`reversedNumber`不为0,则输出颠倒后的正整数;否则,输出溢出信息。
这个程序可以处理32位有符号整数的颠倒,并在结果溢出时返回0。