24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2861  |  回复: 21
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

fengxingwang

新虫 (初入文坛)

[求助] C++编程,关于循环结构的,大家看看我这程序哪里错了?

#include
void main()
{
        double x,y,t,e,p,f,z;
               x=1;
                   y=2;
                   z=128;
                   for(t=1;t<6;t=t+0.01)
                   {
                          e=x*t;
                          p=y*t;
                                                  f=e*p*t;
                          if(f==z)
                                  break;
                   }
                   printf("%f,%f\n",t,f);
}
运行结果是:6.01  ,432
应该是t=4.   f=128 啊,
编译的时候没显示错误,但是结果却显示的不对,是怎么回事啊??
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sharkyurui1

金虫 (初入文坛)

【答案】应助回帖

★ ★
感谢参与,应助指数 +1
余泽成(金币+2): 鼓励讨论! 2012-03-11 23:24:26
不确定是什么地方出错,但是看到几个问题,和楼主探讨一下。
一个就是定义的double变量,printf能用%f正确打印出来么?我记得以前必须写printf("%lf,%lf\n",t,f)才能正确输出double变量的值。
二个就是楼上各位所说浮点数的比较一般都是控制在一定精度内的。
三个就是楼主可以学学调试,在for循环中某一赋值语句上下断点,然后开始调试程序,程序会在断点停下,然后单步执行程序,可以查看每个变量的实时值,就可以知道问题出在哪里了。如果你觉得让t值从1慢慢加到4很麻烦,也可以用条件断点,或者把t的初始值增大到3.9(不推荐,因为可能是浮点数误差累积)。
17楼2012-03-01 08:17:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 22 个回答

ataoyo

至尊木虫 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
余泽成(金币+1): 谢谢参与应助! 2012-03-04 01:35:24
应该是t=t+1吧,而不是t=t+0.01
2楼2012-02-29 14:12:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengxingwang

新虫 (初入文坛)

引用回帖:
: Originally posted by ataoyo at 2012-02-29 14:12:36:
应该是t=t+1吧,而不是t=t+0.01

那我要是想每次都给t加上0.01该怎么写啊??
3楼2012-02-29 14:19:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengxingwang

新虫 (初入文坛)

引用回帖:
: Originally posted by ataoyo at 2012-02-29 14:12:36:
应该是t=t+1吧,而不是t=t+0.01

现在要各个变量都定义成整数。。int定义,那结果运行对,可是我要是想得到的结果是小数怎么写啊?
4楼2012-02-29 14:21:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见