094.求π的近似值

简介: 094.求π的近似值
#include<stdio.h>
#include<math.h>
#include<time.h>
#include<stdlib.h>
#define N 30000
void main()
{
   double e=0.1,b=0.5,c,d;
   long int i;                /*i: 正多边形边数*/
   float x,y;
   int c2=0,d2=0;
   clrscr();
   puts("***********************************************************");
   puts("*      This program is to calculate PI approximatively    *");
   puts("*                    in two methods.                      *");
   puts("*       One method is Regular Polygon Approximating,      *");
   puts("*          the other is Random Number Method.             *");
   puts("***********************************************************");
   puts("\n >> Result of Regular Polygon Approximating:");
   for(i=6;;i*=2)            /*正多边形边数加倍*/
   {
      d=1.0-sqrt(1.0-b*b);     /*计算圆内接正多边形的边长*/
      b=0.5*sqrt(b*b+d*d);
      if(2*i*b-i*e<1e-15) break;         /*精度达1e-15则停止计算*/
      e=b;      /*保存本次正多边形的边长作为下一次精度控制的依据*/
   }
   printf("---------------------------------------------------------\n");
   printf(" >> pi=%.15lf\n",2*i*b);       /*输出π值和正多边形的边数*/
   printf(" >> The number of edges of required polygon:%ld\n",i);
   printf("---------------------------------------------------------\n");
   randomize();
   while(c2++<=N)
   {
        x=random(101);      /*x:坐标。产生0到100之间共101个的随机数*/
        y=random(101);      /*y:坐标。产生0到100之间共101个的随机数*/
        if(x*x+y*y<=10000)     /*利用圆方程判断点是否落在圆内*/
            d2++;
   }
   puts("\n >> Result of Random Number Method:");
   printf("---------------------------------------------------------\n");
   printf(" >> pi=%f\n",4.*d2/N);    /*输出求出的π值*/
   printf("---------------------------------------------------------\n");
   puts("\n Press any key to quit...");
   getch();
}
相关文章
|
JavaScript 前端开发 算法
【Vue面试题三】、Vue中的v-show 和 v-if 怎么理解 ?
这篇文章讨论了Vue中的`v-show`和`v-if`指令的区别和使用场景。文章指出`v-show`和`v-if`都能控制元素在页面上的显示,但它们在控制手段、编译过程和条件上有所不同。`v-show`通过改变CSS的`display`属性来隐藏或显示元素,而`v-if`则是通过添加或删除DOM元素来实现条件渲染。`v-if`在切换时会涉及到局部编译/卸载过程,而`v-show`则只是基于CSS的简单切换。文章还分析了两者的性能消耗,指出`v-if`有更高的切换消耗,而`v-show`有更高的初始渲染消耗。最后,文章建议根据条件的变化频率来选择使用`v-show`或`v-if`。
【Vue面试题三】、Vue中的v-show 和 v-if 怎么理解 ?
|
监控 程序员 芯片
DOS操作系统的发展历程
【10月更文挑战第15天】DOS操作系统的发展历程
627 2
|
算法
51单片机不用定时器的数码管倒计时
51单片机不用定时器的数码管倒计时
203 0
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
2293 4
|
存储 Kubernetes 负载均衡
云端应用容器化管理:全面深入评测与分析
阿里云ACK测评:提供一键式容器应用部署,集成ALB实现高效交付,但一键部署有时故障且高级配置需专业知识。操作界面直观,文档全面但对Helm等进阶主题指导不足。适合已有Kubernetes基础的用户,对于新手可能挑战较大。推荐给寻求云上容器管理解决方案的企业。
云端应用容器化管理:全面深入评测与分析
|
设计模式 测试技术 Go
Go 项目必备:Wire 依赖注入工具的深度解析与实战应用
在现代软件开发中,依赖注入(Dependency Injection,简称 DI)已经成为一种广泛采用的设计模式。它的核心思想是通过外部定义的方式,将组件之间的依赖关系解耦,从而提高代码的可维护性、可扩展性和可测试性。然而,随着项目规模的增长,手动管理复杂的依赖关系变得日益困难。这时,依赖注入代码生成工具就显得尤为重要。在众多工具中,Wire 以其简洁、强大和易用性脱颖而出,成为 Go 语言项目中的宠儿。本文将带你深入了解 Wire 的安装、基本使用、核心概念以及高级用法,并通过一个实际的 web 博客项目示例,展示如何利用 Wire 简化依赖注入的实现。准备好了吗?让我们开始这场代码解耦的奇
|
设计模式 SQL Java
设计模式之为什么要学好设计模式
设计模式之为什么要学好设计模式
149 1
|
敏捷开发 算法 安全
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
162 0
|
网络协议 Python
Python 标准类库 - 因特网协议与支持之socketserver
Python 标准类库 - 因特网协议与支持之socketserver
259 0
|
运维 Kubernetes 安全
2.3. [kustz] 解析 URL 为 Ingress
2.3. [kustz] 解析 URL 为 Ingress > 大家好, 我是老麦, 一个运维小学生。 > 今天我们处理 Ingress, 对外提供服务。
216 0
2.3. [kustz] 解析 URL 为 Ingress