| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 552 人关注过本帖
标题:程序执行没有结果
只看楼主 加入收藏
terry6677
Rank: 1
等 级:新手上路
帖 子:45
专家分:5
注 册:2015-6-29
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:9 
程序执行没有结果
#include<stdio.h>
#include<math.h>
main()
{
    double sum = 1.0, deno = 1.0;
    int sign = 1;
    double pi;
    while( fabs(sum) >= 1e-6 )
    {
        sign = (-1) * sign;
        deno = deno + 2;
        sum = sum + sign / deno;
    }

    pi = 4 * sum;
    printf("%f\n",pi);
}
        请问哪错了,没有结果
搜索更多相关主题的帖子: include double 
2015-08-13 08:58
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:20 
1、double类型要用%lf
2、你的主函数没有返回
3、你的判断条件不知道行不行

一片落叶掉进了回忆的流年。
2015-08-13 09:09
terry6677
Rank: 1
等 级:新手上路
帖 子:45
专家分:5
注 册:2015-6-29
收藏
得分:0 
回复 2楼 诸葛欧阳
谢谢,确实是判断条件的问题,我改了改,好了。
以下是我改的,
#include<stdio.h>
#include<math.h>
main()
{
    double sum = 1.0, deno = 1.0, term = 1.0;
    int sign = 1;
    double pi;
    while(fabs(term) >= 1e-6)
    {
        sign = (-1) * sign;
        deno = deno + 2;
        term = sign / deno;
        sum = sum + term;
        
    }

    pi = 4 * sum;
    printf("%10.8f\n",pi);
}
        
2015-08-13 09:41
ditg
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:16
帖 子:852
专家分:1937
注 册:2014-4-10
收藏
得分:0 
为啥这俩运行出来不一样?

printf("%10.8f\n", pi);
printf("%10.8f\n", acos(-1.0));

梦想拥有一台龙芯3A-4000
2015-08-13 11:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
以下是引用ditg在2015-8-13 11:49:22的发言:

为啥这俩运行出来不一样?

printf("%10.8f\n", pi);
printf("%10.8f\n", acos(-1.0));

while(fabs(term) >= 1e-6)
代码是自己写的吧,那还问人?

当然,这个只是主因,但不是全部。
因为存在累加误差,要想算出来的 pi 和 acos(-1.0) 一样(即能够用==来比较,而不是什么相差epsilon),你得从小到大累加,并使用khan法;或者如果有80bits的long double的话,直接用long double,这就简单了。
2015-08-13 13:32
terry6677
Rank: 1
等 级:新手上路
帖 子:45
专家分:5
注 册:2015-6-29
收藏
得分:0 
回复 5楼 rjsp
谢谢指导。
代码是我做课后题自己编写的,才看到循环结构,您后面说的看不懂
2015-08-13 14:50
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
收藏
得分:0 
哪里不对其实很简单的,用单步调试,看每个变量的值!
以前我刚学的时候也不懂,学会调试之后,就知道是哪里出错了!
2015-08-13 15:01
luqiyihui
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2015-8-11
收藏
得分:0 
回复 5楼 rjsp
不好意思,多问一句讨教下:

在while中不同精度的数是不能比较的呢?
2015-08-13 15:02
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
以下是引用luqiyihui在2015-8-13 15:02:08的发言:

不好意思,多问一句讨教下:

在while中不同精度的数是不能比较的呢?

比较时会做自动类型转换

一片落叶掉进了回忆的流年。
2015-08-13 16:40
terry6677
Rank: 1
等 级:新手上路
帖 子:45
专家分:5
注 册:2015-6-29
收藏
得分:0 
回复 7楼 q215236213
请问单步调试是说只留一部分程序,分段测试么?
2015-08-14 08:06
快速回复:程序执行没有结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015652 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved