求教一段简单代码在不同编译器下结果不同的问题

tyfostar 2006-03-13 07:26:01
#include <iostream>
#include <cmath>

using namespace std;

int main()
{
int x,num;
int sum=0;
double count=0;
cout<<"请输入一个整数:"<<flush;
cin>>x;
if(x==0)
cout<<"该数字是零!请重新输入!"<<endl;
else
{

int y=x;
while(y!=0)
{
count++;
y=y/10;
}
while(x!=0)
{
num=x/static_cast<int>(pow(10,(count-1)));
x=x%static_cast<int>(pow(10,(count-1)));
sum=sum+num;
count--;
}
cout<<"各位数之和为:"<<sum<<endl;
if(sum%9!=0)
cout<<"该数不能被9整除!"<<endl;
else
cout<<"该数能被9整除!"<<endl;
}
system("pause");
return 0;
}

以上代码在DEV-C++下通过编译,当输入的x为567时,返回sum=14(错误);而在vs2005下,sum=18(正确)。请问谁知道这是什么原因?
...全文
75 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyfostar 2006-03-13
  • 打赏
  • 举报
回复
谢谢楼上朋友的指点,另外请问一下你的dev-c++是什么版本,我这里是4.9.9.2中文版的,我后来把代码改成输入整数的各位数的值,测试结果如下:
输入123时,输出1 2 4
输入567时,输出5 7 2
输入4234523时,输出4234531
输入567567时,输出567578
一直都是最后2个数字出错。(以上在VS2005下都没问题)
jixingzhong 2006-03-13
  • 打赏
  • 举报
回复
2.
求和的效率太低了 ...

简化了下 :
(也许仔细考虑还可以继续优化)

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
int x,num;
int sum=0;

cout<<"请输入一个整数:"<<flush;
cin>>x;
if(x==0)
cout<<"该数字是零!请重新输入!"<<endl;
else
{
while(x!=0) //直接完成求和,可以少定义变量,也不需要pow()操作 ...
{
num = x%10;
sum += num;
x=x/10;
}

cout<<"各位数之和为:"<<sum<<endl;
if(sum%9!=0)
cout<<"该数不能被9整除!"<<endl;
else
cout<<"该数能被9整除!"<<endl;
}
system("pause");
return 0;
}
jixingzhong 2006-03-13
  • 打赏
  • 举报
回复
就这个程序来说的话,
有些小问题 ...

1.
double count=0;
count++;
//++ 和 -- 只能操作 int 类型数据(或者可隐式转化到这个类型)的
jixingzhong 2006-03-13
  • 打赏
  • 举报
回复
以上代码在DEV-C++下通过编译,当输入的x为567时,返回sum=14(错误);
-------------------------------
很遗憾,
我在 DEV-C++ 上测试,
结果是 18 ....

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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