赞
踩
#include <stdio.h>
int reverse(int x) {
int result = 0;
while (x != 0) {
int remainder = x % 10;
// 检查乘以 10 是否会导致溢出
if (result > INT_MAX/10 || result < INT_MIN/10) {
return 0;
}
result = result * 10 + remainder;
x /= 10;
}
return result;
}
int main() {
int x = 12345;
int result = reverse(x);
printf("反转后的数字为:%d\n", result);
return 0;
}
在这段代码中,我们使用了一个`result`变量来保存反转后的结果。我们通过循环取`x`的最后一位数字,将其添加到`result`的末尾,并将`x`除以10,以便继续处理下一位数字。在每次循环中,我们还要检查是否会导致溢出。如果乘以10会导致溢出,我们立即返回0。
最后,在主函数`main()`中,我们定义了一个整数`x`,并调用`reverse()`函数进行反转,然后打印输出结果。
需要注意的是,由于题目中限制了不能存储64位整数,因此我们没有使用64位整数来保存结果。而是通过判断乘以10是否会溢出的方式来处理溢出情况。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。