网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
04月04日漏签0天
c语言吧 关注:801,947贴子:4,377,623
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 1回复贴,共1页
<<返回c语言吧
>0< 加载中...

用功能等价的条件表达式和if语句,输出结果为何不同?

  • 取消只看楼主
  • 收藏

  • 回复
  • worseworst
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
题目:用二分法计算exp(x)+x=0 在[-1,0]上的根。
源文件:
#include<stdio.h>
#include<math.h>
double f( double x)
{
return exp(x)+x;
}
main()
{
double a=-1,b=0,x;
do
    {x=(a+b)/2;
/*     f(a)*f(x)>0 ? a=x : (b=x) ;
     printf("x=%lf\t",x);    */  
/* floating point error: Domain */
     if (f(a)*f(x)>0)
        a=x;
     else
        b=x;
       printf("x=%lf\t",x);   
    } while(fabs(f(x))>1e-7);
printf("the root is x=%lf\n",x);
getch();
}
若用if语句,程序正常,输出:
x=-0.500000      x=-0.750000      x=-0.625000      x=-0.562500      x=-0.593750
x=-0.578125      x=-0.570312      x=-0.566406      x=-0.568359      x=-0.567383
x=-0.566895      x=-0.567139      x=-0.567261      x=-0.567200      x=-0.567169
x=-0.567154      x=-0.567146      x=-0.567142      x=-0.567144      x=-0.567143
x=-0.567143      x=-0.567143      x=-0.567143      the root is x=-0.567143
但若用条件表达式(源文件中用注释括住),则计算到x=-0.578125时便提示“floating point error: Domain”,之后程序强制退出。
从功能上讲,源文件中的if语句和条件表达式等价,可是为何用条件表达式就会出错呢?(我用的是TC2.0)
希望能得到大家的帮助,谢谢!


  • worseworst
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哎,大家都没有遇到过这种情况啊……


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示