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();
}
相关文章
|
11月前
|
监控 程序员 芯片
DOS操作系统的发展历程
【10月更文挑战第15天】DOS操作系统的发展历程
455 2
|
存储 Kubernetes 负载均衡
云端应用容器化管理:全面深入评测与分析
阿里云ACK测评:提供一键式容器应用部署,集成ALB实现高效交付,但一键部署有时故障且高级配置需专业知识。操作界面直观,文档全面但对Helm等进阶主题指导不足。适合已有Kubernetes基础的用户,对于新手可能挑战较大。推荐给寻求云上容器管理解决方案的企业。
云端应用容器化管理:全面深入评测与分析
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
1869 4
|
设计模式 测试技术 Go
Go 项目必备:Wire 依赖注入工具的深度解析与实战应用
在现代软件开发中,依赖注入(Dependency Injection,简称 DI)已经成为一种广泛采用的设计模式。它的核心思想是通过外部定义的方式,将组件之间的依赖关系解耦,从而提高代码的可维护性、可扩展性和可测试性。然而,随着项目规模的增长,手动管理复杂的依赖关系变得日益困难。这时,依赖注入代码生成工具就显得尤为重要。在众多工具中,Wire 以其简洁、强大和易用性脱颖而出,成为 Go 语言项目中的宠儿。本文将带你深入了解 Wire 的安装、基本使用、核心概念以及高级用法,并通过一个实际的 web 博客项目示例,展示如何利用 Wire 简化依赖注入的实现。准备好了吗?让我们开始这场代码解耦的奇
|
算法
51单片机不用定时器的数码管倒计时
51单片机不用定时器的数码管倒计时
160 0
|
设计模式 SQL Java
设计模式之为什么要学好设计模式
设计模式之为什么要学好设计模式
92 1
|
敏捷开发 算法 安全
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
如何写出高质量代码:特征、编程实践技巧和软件工程方法论
135 0
|
网络协议 Python
Python 标准类库 - 因特网协议与支持之socketserver
Python 标准类库 - 因特网协议与支持之socketserver
234 0
|
运维 Kubernetes 安全
2.3. [kustz] 解析 URL 为 Ingress
2.3. [kustz] 解析 URL 为 Ingress > 大家好, 我是老麦, 一个运维小学生。 > 今天我们处理 Ingress, 对外提供服务。
200 0
2.3. [kustz] 解析 URL 为 Ingress
|
前端开发 JavaScript Java
【JavaWeb】Tomact部署Web项目及Maven工具的使用
Tomcat是一个web服务器,用于提供web(http,https)服务端程序,它是一个基于Java实现的一个开源且免费,也被广泛使用的HTTP服务器
【JavaWeb】Tomact部署Web项目及Maven工具的使用