题目很简单,完成函数reverse,要求实现把给定的一个整数取其相反数的功能,举两个例子如下: x = 123, return 321 x = -123, return -321
今天在网上看到的一个题目,感觉挺简单,做了一下,第一次竟然错了,看看下面为什么
long Reverse(long data)
{
#ifdef _DEBUG
printf("current data: %d\n", data);
#endif // _DEBUG
long nReverseData = 0;
int nRemainder;
while (nRemainder = data%10)
{
data /= 10;
nReverseData = nReverseData*10 + nRemainder;
}
#ifdef _DEBUG
printf("Reverse data: %d\n", nReverseData);
#endif // _DEBUG
return nReverseData;
}
经我验证大小,正负都可以呀,但是却唯独忘了一种情况??就是末尾为0的情况下,一定会退出循环
我将while循环里面进行了修改,感觉应该是可以的,但是10取反好像只能得到1,不能得到01了,不知道正确不,如下:
...
while (data)
{
nRemainder = data%10;
data /= 10;
nReverseData = nReverseData*10 + nRemainder;
}
...
网上搜索后,发现这里其实可以用do...while循环,都忘了,如下
...
do
{
nRemainder = data%10;
nReverseData = nReverseData*10 + nRemainder;
} while (data /= 10);
...