c语言程序π,C语言求圆周率π(三种方法)
题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止。
题目2) 根据公式②,用前100项之积计算π的值。
题目1)提供了一种解法,题目2)提供了两种解法,请看解析。
题目1)的代码:#include #include #include 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的值为:%.6fn",pi); return 0; }
运行结果:pi的值为:3.141594
上面的代码,先计算π/4的值,然后再乘以4,s=-s; 用的很巧妙,每次循环,取反,结果就是,这次是正号,下次就是负号,以此类推。
题目2)的代码[代码一]:#include #include 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的值为:%.7fn",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)。
题目2)的代码[代码二]:#include #include 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的值为:%fn", 2*result); return 0; }
运行结果:pi的值为:3.126079
算法思想:采用累乘积算法,累乘项为term=n*n/((n-1)*(n+1)); n=2,4,6,…100。步长为2。原文始发于: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 ...
- 微信小程序使用自定义字体的三种方法
一.loadFontFace接口 小程序官方提供的接口,最便捷的加载字体的方法,不过限制颇多.必须https且同源,canvas等原生组件不支持.注意!!使用本地文件无效,必须使用网络地址. 官方文档 ...
- 【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) ...
- 微信小程序更新webview页面的三种方法
场景 在小程序其它页面做了操作,数据发生改变,回到webview页面时需要更新webview里面的数据.由于小程序没有提供与webview的实时通信能力,因此刷新页面是个可考虑的做法. 方法一 最常见 ...
- 随机投点法计算定积分java_科学网—0026:蒙特卡洛求定积分三种方法的理解 - 何成文的博文...
蒙特卡洛主要思想就是采用粒子(大多是均匀分布生成的随机数,称为粒子)将积分符号转化为求和,从而实现快速求解目的.定积分求解主要有三种方法:随机投点法.平均值法.重要抽样法: 问题描述:如何求exp(x ...
最新文章
- NC:电缆细菌减少水稻种植土壤中的甲烷排放
- 神经网络的梯度消失和过拟合产生原因及其解决方案
- linux server文件,linux两台server远程copy文件
- BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
- 254. Factor Combinations
- 【最优解法】1054 求平均值 (20分)_31行代码AC
- 辨别光纤收发器优劣的方法介绍
- 后台导出大量数据超时报 nginx404错误
- 新玩法来了,web前端教程公众号推出《每日一题》
- 接口文档要写在概要设计里吗_写代码的五个步骤,你会几个?
- SQL中的全文检索(转帖)
- 将字符串转换成System.Drawing.Color类型
- android design support library最新版,总结一下现在关于Design Support Library的几个博客...
- ReentrantLock中的公平锁与非公平锁
- 【IoT】创业指南:智能硬件产品原型设计指南
- 免费下载百度文库文档
- 计算机 管理 mmc 注册表,win10注册表编辑器没有mmc怎么办_win10恢复注册表mmc文件夹的方法-win7之家...
- 【计算机网络四】网络层
- 阿里云ECS服务器安装Nginx
- python基础-模仿醉汉在二维空间上的随机漫步