点击上方“蓝字”关注我们

愉快的一天,不得不做的三件事:

种田,锄地,整代码!!!

【题目】

用循环方法实现。

(1)请利用“正多边形逼近”的方法求出π的近似值。

(2)利用随机数法求π的近似值。

【设计思路】

(1)“正多边形逼近”的方法思路:

利用圆内接正六边形边长等于半径的特点将边数翻番,作出正十二边形,求出边长,重复这一过程,就可获得所需精度的π的近似值。

(2)随机数法求π的近似值的思路:

在一个单位边长的正方形中,以边长为半径,以一个顶点为圆心,在正方形上作四分之一圆。

随机的向正方形内扔点,若落入四分之一圆内则计数。

重复向正方形内扔足够多的点,将落入四分之一圆内的计数除以总的点数,其值就是π值四分之一的近似值。

该方法求出的π值只有统计次数足够多时才可能准确。

【代码分析】

double b,d,b0;

/*b为多边形边长,d为圆半径与三角形中线之差*/

long i;

/*内接多边形的边数*/

for(i=6,b=0.5;;i*=2)

/*首先单位圆内接正六边形,初始b等于半径的一半,即为0.5;每次循环,内接多边形边数翻一倍*/

{

b0=b;

/*保存本次正多边形的边长作为精确度控制的依据*/

d=1-sqrt(1-b*b);

b=sqrt(b*b+d*d)/2;

if(2*b*i-b0*i<1e-15)

break;

/*精确度达到1e-15时,跳出循环*/

}

printf("方法一得到:π=%.15lf\n",2*i*b);

#define N 1e6    //定义一百万个种子

long i;

double x,y,k,PI;

srand((unsigned)time(NULL));

/*srand()函数用来设置算法的种子,time(NULL)返回当前的时间,先调用srand(time(NULL)),把当前的时间作为种子,使程序每次运行产生不同的随机数*/

for(i=0,k=0;i

{

x = rand() / (double)RAND_MAX;

y = rand() / (double)RAND_MAX;

/*RAND_MAX 是 中伪随机数生成函数 rand 所能返回的最大数值,此时得到一个 0~1.0 之间的随机浮点数*/

if (sqrt((x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)) <= 0.5)

k++;

/*记录落入四分之一圆的点数*/

}

PI=4*k/N;

printf("方法二得到:π=%.15f\n",PI);

【代码展示】

C语言   求 π 的近似值

#include

#include

#include

#include

#define N 1e6

void main1()

{

double b,d,b0;

long i;

for(i=6,b=0.5;;i*=2)

{

b0=b;

d=1-sqrt(1-b*b);

b=sqrt(b*b+d*d)/2;

if(2*b*i-b0*i<1e-15)

break;

}

printf("方法一得到:π=%.15lf\n",2*i*b);

}

void main2()

{

long i;

double x,y,k,PI;

srand((unsigned)time(NULL));

for(i=0,k=0;i

{

x = rand() / (double)RAND_MAX;

y = rand() / (double)RAND_MAX;

if (sqrt((x - 0.5)*(x - 0.5) + (y - 0.5)*(y - 0.5)) <= 0.5)

k++;

}

PI=4*k/N;

printf("方法二得到:π=%.15f\n",PI);

}

void approximation()

{

printf("-------欢迎进入操作界面-------\n\n");

main1();

main2();

}

int main()

{

approximation();

return 0;

}

【运行结果展示】

IT 农工要回家休息了,我们下期再见吧

记得点击“在看”进行收藏哦

往期精彩

C语言 用牛顿迭代法解方程

C语言 埃及分数

c语言产生随机数_C语言 求的近似值相关推荐

  1. Day1:C语言循环控制结构例题之求sinx近似值

    利用sinx,计算sinx的值,直到最后一项的绝对值小于时为止. 首先,分析一下这个题.题目要求得出sinx的近似值,如果对C语言的数学函数有所了解的话,第一时间想到的应该是C语言中已经有了求sinx ...

  2. java和c语言的区别_C语言为何不会过时?你需要掌握多少种语言?

    关注.星标公众号,不错过精彩内容 整理/排版:付斌 转自:嵌入式ARM 01 为什么C语言不会过时 评价任何一门编程语言,都是招人骂的.永远是这样.就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过 ...

  3. c语言实现通讯录_C语言实现双人猜数字游戏

    点击上方"学士科技",选择"设为星标" 资讯.技术干货第一时间送达! C语言合集(基础.进阶.高级)通通有,点我点我      C语言实例 01.C语言编写简单 ...

  4. window直接运行不需要环境的软件是什么语言开发的_C语言为何不会过时?你需要掌握多少种语言?_C 语言...

    01为什么C语言不会过时 评价任何一门编程语言,都是招人骂的.永远是这样.就像是春寒料峭的季节, 街上穿棉袄和穿单衣的擦肩而过,双方一定是同时在心里出现了两个字:"s b!"这个在 ...

  5. c语言c99标准_C语言的三套标准:C89、C99和C11

    我们今天使用的 Windows.Linux.Mac OS 等操作系统都是由一种叫做 Unix 的系统演化而来.Unix 作为80年代主流的操作系统,是整个软件工业的基础,是现代操作系统的开山鼻祖,C语 ...

  6. java c语言与人工智能_C语言与LISP语言的区别

    C语言:C是过程式编程语言.它被设计成使用编译器编译.该语言有少量固定数量的关键字,如if/else,for,while,..等等.我们可以使用一个以上的作业,可以用这种语言在一个语句中使用.函数也在 ...

  7. c语言学生综合测评系统_c语言图书管理系统_c语言学生综合测评系统_c语言个人账本管理系统...

    c语言销售管理系统设计 c语言设计管理系统,c图书管理系统设计,学生管理系统c语言,职工管理系统c语言,c语言图书管理系统,c语言成绩管理系统,c语言管理系统,c语言银行管理系统,c语言工资管理系统, ...

  8. c语言连续生成不同随机数_C语言随机数生成教程,C语言rand和srand用法详解

    在实际编程中,我们经常需要生成随机数,例如,贪吃蛇游戏中在随机的位置出现食物,扑克牌游戏中随机发牌. 在C语言中,我们一般使用 头文件中的 rand() 函数来生成随机数,它的用法为: int ran ...

  9. c语言每日签到_C语言算法,签到问题。C++的标程有了,求个C语言的。附带注释,清楚点。...

    展开全部 有多组数据,暂且以输32313133353236313431303231363533e58685e5aeb931333337383835入负数结束输入:代码如下#include using  ...

最新文章

  1. Linux系统管理工具-iostat、free、ps、netstat、tcpdump
  2. idea2019配置gradle详解_Java学习之——Gradle的安装配置、IDEA中创建Gradle的Java项目...
  3. 新手探索NLP(六)——全文检索
  4. 《Spring设计思想》AOP设计思想与原理(图文并茂)
  5. 【职场】你做程序员,真的是因为热爱吗?
  6. platform_device_add()函数分析
  7. 理解vue中$watch使用
  8. lol服务器维修2020,lol2020年5月29日停机维护到几点 英雄联盟维护公告是什么
  9. Python爬虫之酷安应用商店
  10. 创建Maven项目时提示web.xml is missing and failOnMissingWebXml is set to true错误解决方案
  11. mysql 监听 udp_通用TCP、UDP服务监控脚本
  12. python能同时输出商和余数的函数_在两个独立变量中同时得到楼层除法和余数
  13. python 快速排名发包_百度发包快排【SEO超快速排名系统】 - 「黑酷SEO」
  14. mac版本 sadptool_海康 设备 发现(SADPTool原理)
  15. java关联vss 80020009_Eclipse结合VSS方法
  16. [原创] Python3.6+request+beautiful 半次元Top100 爬虫实战,将小姐姐的cos美图获得
  17. 新猿木子李:0基础学python培训教程 Python操作Redis之集合类型2
  18. 【Python入门】:字典与集合
  19. 每日分享,三款纯jquery移动端日期时间选择插件
  20. HTML5实现简单留言板1

热门文章

  1. java.lang.StackTraceElement类
  2. 小米+尚美的下沉CP,为酒店业释放了什么信号?
  3. python编程需要安装什么软件_[零基础学pythyon]安装python编程环境
  4. php替换文件中的数据库,批量替换php文件中的class,id的值
  5. 关于解释List<Integer> list = new ArrayList<Integer>()
  6. 4道关于Python函数的练习题
  7. Python基础高级用法,必须要掌握的知识点
  8. 如何创建你的第一个Python元类?
  9. 使用 Python 在 Linux 上实现一键回归测试
  10. Android 自定义 圆环,Android自定义view实现圆环效果实例代码