完成函数reverse,要求实现把给定的一个整数取其相反数的功能

这篇博客介绍了一个简单的C语言编程题,要求编写函数`reverse`来实现整数的相反数。博主通过举例说明了题目的需求,并分享了自己初次尝试的错误代码,指出在处理负数和0时的问题。最后,博主提到了使用do...while循环来解决这个问题的正确方法。
摘要由CSDN通过智能技术生成

题目很简单,完成函数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);
	...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值