数字逆序输出 疑惑

coolws123 2013-08-23 09:39:14
这是我以前数字逆序输出的方法

s=0;
while(num)
{
s= s*10+num%10;
// cout<<num%10;
num /=10;
}
cout<<s;

但是我在提交hdu1266时,出现WA。。
而将代码换成下面的,却AC了
while(num)
{
// s= s*10+num%10;
cout<<num%10;
num /=10;
}

我感觉上面的代码好像没问题,求大神分析下错误原因
顺便贴下完整代码方面提交
#include <iostream>
using namespace std;

int main()
{
int n,num,zero,s;
cin>>n;
while(n--)
{
zero=0;
s=0;
cin>>num;
if(!num)
cout<<0<<endl;
else
{
if(num<0)
{
cout<<'-';
num=-1*num;
}
while(num%10==0)
{
zero++;
num=num/10;
}
while(num)
{
s= s*10+num%10;
// cout<<num%10;
num /=10;
}
cout<<s;

while(zero--)
cout<<'0';
cout<<endl;
}
}
return 0;
}
...全文
159 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hony杨 2013-08-24
  • 打赏
  • 举报
回复
char * rev(int a)
{
	char * str = (char *)malloc(16);
	sprintf(str, "%d", abs(a));
	return strrev(str);
}
hqw19881118 2013-08-23
  • 打赏
  • 举报
回复
可能原因: 最上面的方法可能导致数据溢出。如num=1234567899,逆序以后就溢出了(int 型最大值是2147483647)

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧