| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 743 人关注过本帖
标题:诸位帮帮我看看这段代码错在哪里
只看楼主 加入收藏
起个名真难
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2013-3-29
结帖率:81.82%
收藏
已结贴  问题点数:19 回复次数:8 
诸位帮帮我看看这段代码错在哪里
3.    利用自定义函数mypi,根据下列公式求 的近似值。
#include<stdio.h>
#include<math.h>
int main()
{
 void mypi();
 mypi();
 return 0;
}
 void mypi()
{
 long i;
 double m=1.0,pi=0.0,sum=0.0;
 for(i=1;abs(m)>=1e-6;i++)
 {m=(double)1.0/(double)i*i;
  sum+=m;
  pi=sqrt(6*sum);
 }
 printf("the pi is:%lf",pi);
}
搜索更多相关主题的帖子: void long include double return 
2013-04-02 14:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:6 
先告诉大家错在哪里,是编译不通过,还是结果不是自己预期的那样?
如果是编译失败,贴出编译器给出的错误信息
如果是结果不符合预期,给出实际输出,以及期待的输出
2013-04-02 14:38
起个名真难
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2013-3-29
收藏
得分:0 
啊,发错了,源码应该是这段:
#include<stdio.h>
#include<math.h>
int main()
{
 void mypi();
 mypi();
 return 0;
}
 void mypi()
{
 long i;
 double m=1.0,pi=0.0,sum=0.0;
 for(i=1;abs(m)>=1e-6;i++)
 {m=(double)1.0/(double)(i*i);
  sum+=m;
 }
 pi=sqrt(6*sum);
 printf("the pi is:%lf",pi);
}
2013-04-02 14:39
起个名真难
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2013-3-29
收藏
得分:0 
忘了说,我预期的结果是3.1多一点,但输出结果只有2.7多,这是我的疑问
2013-04-02 14:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <math.h>

double mypi();

int main()
{
    double pi = mypi();
    printf( "the pi is: %lf\n", pi );

    return 0;
}

// (pi)的平方/6 = 1/(1*1)+1/(2*2)+1/(3*3)+1/(4*4)+...+1/(n*n)
double mypi()
{
    double i=1.0, m=1.0, sum=0.0;
    for( i=1; fabs(m)>=1e-6; ++i )
    {
        m = 1.0/(i*i);
        sum += m;
    }
    return sqrt(6*sum);
}

如果你觉得不精确,可以将 1e-6 改得更小点
2013-04-02 14:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
int abs( int n );
double fabs( double x );
是你想知道的答案。
但不是你代码的最大问题,最大问题是你代码一塌糊涂,无论是排版还是功能设计
2013-04-02 14:53
起个名真难
Rank: 1
等 级:新手上路
帖 子:26
专家分:1
注 册:2013-3-29
收藏
得分:0 
回复 6楼 rjsp
啊,谢谢,但你所说的排版还有功能设计是哪里不好可以具体说下吗,这对我以后的编程习惯或者理念会有很大帮助呢
2013-04-02 22:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:6 
这是从 你 3楼的代码直接复制过来的,不必运行,主要看排版,这样代码更清晰

程序代码:
#include<stdio.h>
#include<math.h>

int main()
{
    void mypi();
    
    mypi();
    
    return 0;
}

void mypi()
{
    long i;
    double m = 1.0, pi = 0.0, sum = 0.0;
    
    for(i = 1;abs(m) >= 1e-6;i++)
    {
        m = (double)1.0 / (double)(i*i);
        sum += m;
    }
    pi = sqrt(6*sum);
    
    printf("the pi is:%lf",pi);
}


事实上这还是不够的,缺少一个很重要的东西,注释


另外看 5楼代码,mypi函数的作用仅只是为了求出结果,输出放在了主函数中。

这就是所谓的功能设计,每个函数的功能要清晰,求值就是求值,输出就是输出,掺杂在一起,不伦不类。


[fly]存在即是合理[/fly]
2013-04-02 23:04
尹金魁2031
Rank: 3Rank: 3
来 自:河南省南阳市
等 级:论坛游侠
帖 子:156
专家分:162
注 册:2012-12-29
收藏
得分:6 
楼主,在使用math函数时,fabs函数与abs函数虽然都是求绝对值,但是解读不一样的。fabs求的是实形的数据,而abs求的是整形的数据。
2013-04-03 08:07
快速回复:诸位帮帮我看看这段代码错在哪里
数据加载中...
 
   



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

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