【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。

相关推荐
一隅论数智9 小时前
OWL(Web Ontology Language)介绍与使用举例(二)
大数据·经验分享·笔记·学习·自然语言处理·学习方法·政务
sunoo-22913 小时前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦
by2099914 小时前
list:迭代器与资源管理实现的综合叙述(下)
数据结构·c++·笔记·list
wdfk_prog14 小时前
LWIP教程 03:从 `low_level_input()` 到 `pbuf_free()`——`pbuf` 的数据视图、Chain 与引用计数
运维·网络·笔记·学习
yi01115 小时前
Leetcode 49 用 “身份证‘‘巧解
人工智能·笔记·python·算法·leetcode·哈希表
ouynagda15 小时前
嵌入式Linux i.MX6ULL系统移植学习笔记
linux·笔记·学习
yi01115 小时前
DAY22: LeetCode 733:图像渲染——从二维网格开始理解 DFS 和 BFS
数据结构·笔记·python·算法·leetcode·深度优先·宽度优先
sbjdhjd16 小时前
智能体开始“动手”之后:OpenAI越权事件、Anthropic算力资本化与开放权重模型竞逐 | AI与SI行业日报整理(9月29日—10月6日)
大数据·人工智能·经验分享·笔记·ai·chatgpt·开源
上位机妹子16 小时前
从零理解 EF Core:用 Minimal API 给「工作项看板」建模(小白笔记)
笔记
深圳老胡16 小时前
STM32 MCU 国产替代型号简介
笔记·stm32·单片机·代码规范