|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目是这样的:
小甲鱼老师提供的答案如下:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- int sign = 1; // 表示符号
- double pi = 0.0, n = 1, term = 1.0; // n表示分母,term表示当前项的值
- while (fabs(term) >= 1e-8) // 1e-8表示10^(-8)
- {
- pi = pi + term;
- n = n + 2;
- sign = -sign;
- term = sign / n;
- }
- pi = pi * 4;
- printf("pi = %10.7f\n", pi);
- return 0;
- }
复制代码
一开始的答案如下:
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- double a=1; //储存每次分数的值
- int zi=1; //分子
- double mu=1; //分母
- double cnt=0; // 计数器
- int b;
- for(b=1;fabs(a)>=pow(10,-8);b++)
- {
- cnt=cnt+a;
- a=(pow(-1,b))*(zi/(mu+2)); /*这里把 zi=-zi用pow(-1,b)来代替,
- 一开始是这么想的。 */
- mu=mu+2;
-
- }
-
-
-
- printf("%10.7f\n",4*cnt);
-
-
-
-
- return 0;
-
-
- }
复制代码
可能想复杂了吧,但是思路是对的,就是搞不明白为什么算不出 3.1415926 ,直接卡住了。
然后看了答案,修改了一下
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- double a=1; //储存每次分数的值
- int zi=1; //分子
- double mu=1; //分母
- double cnt=0; // 计数器
- int b;
- for(b=1;fabs(a)>=pow(10,-8);b++)
- {
- cnt=cnt+a;
- zi=-zi; //[color=Red]修改的地方[/color]
- a=(zi/(mu+2));
- mu=mu+2;
-
- }
-
-
-
- printf("%10.7f\n",4*cnt);
-
-
-
-
- return 0;
-
-
- }
复制代码
然后成功算出了3.1415926
我第一次写的代码,为什么算不出来呢?求大神解答。
只是运行久了点。
3.1415926
Press any key to continue
|
|