s******t 发帖数: 2374 | 1 1.请书写一个程序,将整型变量 x 中数字左右翻转后存到另外一个整型变量 y中,例
如 x = 12345 时,y为 54321,x = ‐123 时,y为‐321。其中 x 的个位不为 0。
void reverse (int x, int* y);
前两天在版上看到的。
不知道用bit怎么做。
我现在可以想到的是转换成string然后操作。但是估计不是favorable的解法。 |
s******t 发帖数: 2374 | 2 请教了一下别人,可以用module division...这不就是那个itoa的题目变形么
其实不用啥bit运算的。
我写一下吧:
int reverseInt(int a){
boolean flag = true;
if(a<0) {a=-a; flag = false;}
int result = 0;
while (a!=0){
int cur = a%10;
a = a/10;
result = result * 10 + cur;
}
if(!flag) return -result;
else return return result;
} |
t**n 发帖数: 272 | |
m****n 发帖数: 589 | 4 为什么呀?
【在 t**n 的大作中提到】 : a<0就让a=-a是有问题的,会溢出
|
m******9 发帖数: 968 | 5 这个题目有trap的, 你这样可能会产生溢出的,
【在 s******t 的大作中提到】 : 请教了一下别人,可以用module division...这不就是那个itoa的题目变形么 : 其实不用啥bit运算的。 : 我写一下吧: : int reverseInt(int a){ : boolean flag = true; : if(a<0) {a=-a; flag = false;} : int result = 0; : while (a!=0){ : int cur = a%10; : a = a/10;
|
r****o 发帖数: 1950 | 6 为啥会有溢出呢?
【在 m******9 的大作中提到】 : 这个题目有trap的, 你这样可能会产生溢出的,
|
s******t 发帖数: 2374 | 7 你们是说int有max的限制?所以会导致溢出,所以要用maxint之类的来判断是否要用
long型来存? |
m******9 发帖数: 968 | 8 没错, int 或者long都可能溢出的,
比如把int 1234567899 倒转的话,就溢出了.
所以, 每次在做result = result * 10 + cur; 之前都要判断一下会不会溢出. |