| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 681 人关注过本帖
标题:用C语言求PI的值出现知值不改变的问题
只看楼主 加入收藏
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
结帖率:57.14%
收藏
 问题点数:0 回复次数:7 
用C语言求PI的值出现知值不改变的问题
程序代码:
]#include<stdio.h>
long jieCheng(int n){
    int i=1;
    long sum=1;
    for(;i<=n;i++){
        sum*=i;
    }
    return sum;
}
int main(){ 
  int i=1;
  double sum=1,b=3,a=1,m;
  scanf("%lf",&m);
  while(a/b>=m){
    sum=sum+a/b;
    i++;
    a=jieCheng(i);
    b=b*(b+2);
  }
  printf("%.6lf\n",2*sum);
  return 0;
}


为什么值不会改变呢?宏观上看应该是一个比较简单的算法啊!



[local]2[/local]
搜索更多相关主题的帖子: include C语言 color 
2015-08-20 23:02
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
pat.rar (116.11 KB)
2015-08-20 23:04
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 2楼 鱼游海底
题目截图
2015-08-20 23:05
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
若无必要,不要贴图,更不要将图放在word中再以附件形式贴出来。
我帮你一下:
根据下面关系式,求圆周率的值,直到最后一项的值小于给定阈值
pi/2 = 1 + 1/3 + 2!/(3*5) + 3!/(3*5*7) + … + n!/(3*5*7*…*(2n+1)) + …
输入格式:
输入在一行中给出小于1的阈值。
输出格式:
在一行中输出满足阈值条件的近似圆周率,输出到小数点后6位。
输出样例:
(这里在图中已经看不到了)

2015-08-21 08:29
柳逸尘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:131
注 册:2015-8-10
收藏
得分:0 
是呀  你赋值i是1,满足 while(a/b>=m) i加一  等于2   到jiacheng 中 这时候的i的值赋给n  n=2;在jiacheng中i赋值为1 sum=1; 在for(;i<=n;i++){sum*=i; } 这个循环中得到sum=2;你辅助给了main中a ;而你输出是sum值,和加成  没有关系  ;你写的有点乱
2015-08-21 09:09
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 4楼 rjsp
恩恩,好的,多谢!交给我怎样做到这个的吧!我也是想帮回答的人理清头绪,节省时间!
2015-08-21 23:10
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 5楼 柳逸尘
如果表达式位置加上了一个括号呢?
2015-08-21 23:19
鱼游海底
Rank: 1
来 自:中国
等 级:新手上路
帖 子:132
专家分:2
注 册:2015-4-16
收藏
得分:0 
回复 7楼 鱼游海底
#include<stdio.h>
long jieCheng(int n){
    int i=1;
    long sum=1;
    for(;i<=n;i++){
        sum*=i;
    }
    return sum;
}
int main(){
  int i=1;
  double sum=1,b=3,a=1,m;
  scanf("%lf",&m);
  while(a/b>=m){
      sum=sum+a/b;
    i++;
    a=jieCheng(i);
    b=b*(2*i+1);
  }
  sum=sum+a/b;
  printf("%.6lf\n",2*sum);
  return 0;
}

正确的程序如上。
2015-08-23 11:26
快速回复:用C语言求PI的值出现知值不改变的问题
数据加载中...
 
   



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

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