求π的近似值,一般有两个公式,如下所示:

公式①:

公式②:

题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止。(一种解决方法)

题目2) 根据公式②,用前100项之积计算π的值。(两种解决方法)

题目1)方法1:

此算法的主要思想:

先计算π/4的值,然后再乘以4,s=-s; 用的很巧妙,每次循环,取反,结果就是,这次是正号,下次就是负号,以此类推。

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

int main()

{

float s=1;

float pi=0;

float i=1.0;

float n=1.0;

while(fabs(i)>=1e-6)

{

pi+=i;

n=n+2; // 这里设计的很巧妙,每次正负号都不一样

s=-s; i=s/n;

}

pi=4*pi;

printf("pi的值为:%.6f\n",pi);

return 0;

}

运行结果:pi的值为:3.141594

题目2)方法1:

此算法的主要思想:
观察分子数列:
a1=2  a2=2
a3=4  a4=4
a5=6  a6=6
......
由此得知,当n为偶数时,an=n;当n为奇数时,an=a(n+1)=n+1;

同理观察分子数列:
b1=1 b2=3
b3=3 b4=5
b5=5 b6=7
b7=7 b8=9.......
由此可知,当n为奇数时,bn=n,当n为偶数时,bn=b(n+1)。
综上可知,当n为奇数时,每次应乘以(n+1)/n。当n为偶数时,每次应乘以n/(n+1)。

#include <stdio.h>
#include <math.h>

int main()

{

float pi=1;

float n=1;

int j;

for(j=1;j<=100;j++,n++)

{

if(j%2==0)

{

pi*=(n/(n+1));

}

else{ pi*=((n+1)/n);

}

}

pi=2*pi;

printf("pi的值为:%.7f\n",pi);

return 0;

}

运行结果:pi的值为:3.1260781

题目2)方法2:

此算法的主要思想:

采用累乘积算法,累乘项为term=n*n/((n-1)*(n+1)); n=2,4,6,...100。步长为2。

#include <stdio.h>

#include <math.h>

int main()

{

float term,result=1;

int n;

for(n=2;n<=100;n+=2)

{

term=(float)(n*n)/((n-1)*(n+1));

result*=term;

}

printf("pi的值为:%f\n", 2*result);

return 0;

}

运行结果:pi的值为:3.126079

C语言:初学者2--求π的值(3种方法)相关推荐

  1. C语言求π的值(2种方法)

    求π的近似值,一般有两个公式,如下所示: 公式①: 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. #include <stdio.h> #include ...

  2. C语言求最大公约数三种方法详解

    C语言求最大公约数三种方法详解 题目要求 常用写法(穷举法) 辗转相减法 辗转相除法 main函数 整体代码 题目要求 运行最大公约数的常用算法,并进行程序的调式与测试. 常用写法(穷举法) 从两个数 ...

  3. C语言求最大公约数3种方法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105163610 C ...

  4. 求最小公倍数的三种方法(C语言)

    求最小公倍数的三种方法 1.常规暴力求解法 2.辗转相除法 3.迭乘法 //1.常规暴力求解法 #include <stdio.h> int main() {int a = 0;int b ...

  5. c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号

    window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...

  6. 用matlab计算稳态误差,利用Matlab求稳态误差的两种方法.

    利用Matlab求稳态误差的两种方法 摘要:稳态误差是系统控制精度或抗扰动能力的一种度量,它是稳态性能的一个重要指标.本文介绍利用Matlab的控制系统工具箱和Simulink工具箱求取系统误差稳态的 ...

  7. linux中复制字符串出错,C语言实现字符串的复制的两种方法

    本文将要为您介绍的是C语言实现字符串的复制的两种方法,具体操作方法: 利用数组实现 1 #include 2 #include 3 4 void copy_string(char str1[],cha ...

  8. java中隐函数求导法则_隐函数求导的三种方法

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_085075084086088070081083074065081087082066093087080', b ...

  9. 微分方程求解matlab冲激信号,用Matlab求冲激响应的几种方法

    ·实验技术与方法· 用 Matlab 求冲激响应的几种方法 贺富堂,应柏青,张 锋,孙 敏 ( 西安交通大学 电工电子教学实验中心,陕西 西安 710049) 摘 要: 用 Matlab 软件求冲激响 ...

  10. python求二项式系数的几种方法及性能对比

    最近研究了python求二项式系数的几种方法,对比了一下他们的速度 1. 利用阶乘简洁求 #普通阶乘 def fact(n):if n == 0:return 1else:return n*fact( ...

最新文章

  1. 原创不易!做网络推广怎么才能更好地保护网站的原创文章?
  2. 基于物化视图优化_「PostgreSQL技巧」PostgreSQL中的物化视图与汇总表比较
  3. easyUI 添加排序到datagrid
  4. 《Linux内核设计与实现》读书笔记(五)- 系统调用
  5. Kubernetes排错:用容器的元数据提供新思路
  6. Shell—grep、sed、awk
  7. 投入20亿,赋能1万家,阿里云正式启动云原生合作伙伴计划
  8. MyEclipse编码设置,中文乱码解决方法,UTF-8,GBK
  9. 锂电池保护板原理(转)
  10. 大数据电商数仓分析项目
  11. Ace Admin前端框架笔记一概要与布局介绍
  12. 德标螺纹规格对照表_德标等螺纹对照表.doc
  13. 公众号排版技巧:如何让你的公众号文章排版变美观?
  14. 电压电流测量模块在matlab,MATLAB仿真时用simulink的RMS模块测量电压有效值,总提示如下警告,怎么破,跪求?...
  15. 挑筋(挑治)疗法——针挑治疗痔疮
  16. 心率检测实现报告(三)
  17. 【电气专业知识问答】问:电动机的电气性能有什么要求?
  18. 基于SPCE061A的语音控制小车设计
  19. mysql 数据库1
  20. 了解RO、RW、ZI和.text .bss .data

热门文章

  1. sakila数仓实战案例
  2. 高德地图定位失败_常见问题
  3. 专访中国数据科技集团CEO林道进:把无序变有序 让数据更有价
  4. 小程序源码:游戏扫码登录多功能工具箱集合
  5. [转]程序员练手小项目
  6. HUAWEI 机试题:英文输入法单词联想
  7. Xcode的一种编译问题:Error: building could produce unreliable results
  8. 怎么避免论文查重率过高的情况?
  9. 基于python的中文词频分析
  10. 科技云报道:安全脱管不如托管