【C语言程序设计】C语言求圆周率π(三种方法)
题目一:
利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止。
程序代码:
#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
上面的代码,先计算π/4的值,然后再乘以4,s=-s; 用的很巧妙,每次循环,取反,结果就是,这次是正号,下次就是负号,以此类推。
题目二:
根据公式②,用前100项之积计算π的值。
本题提供了两种解法。
[代码一]程序代码:
#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
此算法的主要思想:
观察分子数列:
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 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
算法思想:
采用累乘积算法,累乘项为term=n*n/((n-1)*(n+1)); n=2,4,6,...100。步长为2。
最后,不管你是转行也好,初学也罢,进阶也可,如果你想学编程~
【值得关注】我的 C/C++编程学习交流俱乐部【点击进入】
问题答疑,学习交流,技术探讨,还有超多编程资源大全,零基础的视频也超棒~
【C语言程序设计】C语言求圆周率π(三种方法)相关推荐
- Java | Java语言在Eclipse控制台输入的三种方法
写在前面的内容,java控制台输入浅尝辄止即可 >>> 文章目录 三种方法比较一览图 方法一:in/out public static final InputStream in//静 ...
- C语言中调用数组元素的三种方法:下标法、数组名法、指针法
/*调用数组元素的三种方法:下标法.数组名法.指针法*/ #include<stdio.h> int main() {int a[] = { 1,2,3,4,5 }, i, * p;pri ...
- 【C语言】求最小公倍数三种方法
第一种 在两个数中确定一个较大值赋值给整形变量m,变量m分别对a.b求余数,如果都被整除则m为a.b的最小公倍数,否则将m+1后赋给m,一直循环下去. #include<stdio.h> ...
- 易语言运行执行exe文件的三种方法
易语言一个很初级的问题 ,如何运行exe文件,可以进行游戏的一键启动,软件的一键启动,方便控制操作. 1.和程序同目录 如果你要运行和你程序同目录下的 "****.exe",就用下 ...
- C语言特殊图案之菱形的三种方法---今日笔记
小小白第一次写CSDN的博客啦! 第一次写正式的博客,大家凑合看吧,有什么问题可以留言哦. 题目:输出一个如下菱形图 方法一 ,利用循环控制输出. 解题思路:计算出每行包括7个字符,其中有的是空白字符 ...
- 求多项式解(三种方法MATLAB)
function ex()N = 1000000;a = 1:N;x = 1;ticp1 =sum(a.*x.^[N-1:-1:0]);p1, toc % 直接计算 方法一tic, p2 = a(1) ...
- 随机投点法计算定积分java_科学网—0026:蒙特卡洛求定积分三种方法的理解 - 何成文的博文...
蒙特卡洛主要思想就是采用粒子(大多是均匀分布生成的随机数,称为粒子)将积分符号转化为求和,从而实现快速求解目的.定积分求解主要有三种方法:随机投点法.平均值法.重要抽样法: 问题描述:如何求exp(x ...
- c语言程序π,C语言求圆周率π(三种方法)
题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 题目2) 根据公式②,用前100项之积计算π的值. 题目1)提供了一种解法,题目2)提供了两种解法,请看解析. 题目1) ...
- c语言求圆周率 . 4,C语言求圆周率π(三种方法)(4页)-原创力文档
C语言求圆周率π(三种方法) 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止.题目2) 根据公式②,用前100项之积计算π的值.题目1)提供了一种解法,题目2)提供了两种 ...
- c语言数组最大可定义多少位_C语言求数组的最大值三种方法
/* 黄哥Python培训 黄哥所写*/#include int maxValue(int* arr, int n);int maxRecursionValue(int* arr, int n);in ...
最新文章
- 充电 | 打开机器学习的大门,需要了解哪些知识?
- 在线绘图|差异分析——在线做时序分析
- 点击lable标出现下拉搜索框及选择功能
- android TextView 的setTextSize方法的使用
- Immutable Collections(3)Immutable List实现原理(中)变化中的不变
- java input 数组_请问如何input一个数组?
- 开机自启动redis
- oracle 函数_oracle中row_number、rank、dense_rank() 的区别(over函数)
- Robot Motion(模拟题bfs)
- c语言怎么把数字倒过来_c语言中如何实现输入一个整数实现倒序输出
- vue实时获取当前时间
- 百度网盘下载慢,解决方法
- 短视频运营的目标:引流并转化客户
- 利用LSTM对脑电波信号进行分类
- maya2018曲线创建管道
- redis内存理解---内存消耗
- Button与ImageButton
- OpenSSL中文手册之EVP库详解
- php中英文章,php统计中英文混合的文章字数
- 视频设计常用的几款开源软件
热门文章
- 有限元计算计算机配置,关于有限元分析的电脑配置问题
- SadpTool 海康设备网络搜索工具
- arm-linux-g++ crypto,在Ubuntu中找不到libcrypto
- FIT2CLOUD飞致云旗下开源项目DataEase成功进入GitHub趋势榜主榜
- H5文章分享给好友或朋友圈后如何生成自定义分享内容
- ESP8266的AT指令集
- 互联网产品经理好书推荐
- matlab 矩形窗汉明窗幅频特性对比
- 教孩子编程python 语言 nostarch 下载_教孩子学编程 Python语言版
- Epub360、iH5、Mugeda,三款专业级H5设计工具详评