一,代码1如下:
结果:边界溢出??没有通过
int reverse(int x) {
int y=abs(x);
int z=y;
int length=0; //x的长度
int num=0; //最后返回值的绝对值
int key=0;
while(z>0)
{
length++; //x的长度
z=z/10;
}
if(y==0)
return num=0;
while(y>0 && length>0)
{
if(num>INT_MAX && y)
{
return 0;
break;
}
length--;
key=y%10;
for(int i=0;i<length;i++)
{
key=key*10;
}
num=num+key; //得到反过来的数的绝对值
y=y/10;
int y=abs(x);
int z=y;
int length=0; //x的长度
int num=0; //最后返回值的绝对值
int key=0;
while(z>0)
{
length++; //x的长度
z=z/10;
}
if(y==0)
return num=0;
while(y>0 && length>0)
{
if(num>INT_MAX && y)
{
return 0;
break;
}
length--;
key=y%10;
for(int i=0;i<length;i++)
{
key=key*10;
}
num=num+key; //得到反过来的数的绝对值
y=y/10;
}
return x>0?num:-num;
}
return x>0?num:-num;
}
二,代码2如下
不用求数字的长度,同样存在溢出的问题,提交不成功
int reverse(int x) {
int y=abs(x);
int z=y;
int length=0; //x的长度
int num=0; //最后返回值的绝对值
int key=0;
if(y==0)
return num=0;
while(y>0)
{
if(num>INT_MAX && y)
{
return 0;
break;
}
key=y%10;
num=num*10+key; //得到反过来的数的绝对值
y=y/10;
int y=abs(x);
int z=y;
int length=0; //x的长度
int num=0; //最后返回值的绝对值
int key=0;
if(y==0)
return num=0;
while(y>0)
{
if(num>INT_MAX && y)
{
return 0;
break;
}
key=y%10;
num=num*10+key; //得到反过来的数的绝对值
y=y/10;
}
return x>0?num:-num;
}
return x>0?num:-num;
}