问题 : 给定一个有符号整型数,将这个数字反转并输出
给定 123 输出 321
给定 250 输出 52
思路 : 通过 %取余 获取到末端数,通过 /除法 进行降位
int reversal(int n) {
int m;
while(n) {
m = m * 10 + n % 10;
n = n / 10;
}
return m;
}
上面的代码已经解决数字的反转问题,但是当数字过大反转后出现溢出,这里并没有解决,我们对上面的代码进行改进
int reversal_2(int n) {
int temp = 0;
int m = 0;
while(n) {
m = m * 10 + n % 10;
if(temp != m/10) { /*根据补码运算规则,如果发生了 溢出那么temp和m/10的值一定不相等*/
return 0;
}
temp = m;
n = n/10;
}
return m;
}
中间多一个判断就能完全解决数字溢出的问题