这里只放已通过的C语言程序
int reverse(int x) {
const int IntMax=2147483647,IntMin=-2147483648;
int tail,ans=0;
while(x!=0)
{
if(ans>IntMax/10 || ans<IntMin/10)
return 0;
if(ans==IntMax/10 && tail>7)
return 0;
if(ans==IntMin/10 && tail<-8)
return 0;
tail=x%10;
ans=ans*10+tail;
x=x/10;
}
return ans;
}
需要注意的点是:
(1)C语言中,有关负数的取余运算,结果的符号取决于被除数的符号(和密码学中的mod运算有所不同)
(2)溢出的检测
(3)也可以用栈来实现转置操作(祥见官方解答)