题目很简单,完成函数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);
...
C语言实现整数取反功能
这篇博客介绍了一个简单的C语言编程题,要求编写函数`reverse`来实现整数的相反数。博主通过举例说明了题目的需求,并分享了自己初次尝试的错误代码,指出在处理负数和0时的问题。最后,博主提到了使用do...while循环来解决这个问题的正确方法。
2252

被折叠的 条评论
为什么被折叠?



