导航:首页 > 编程语言 > c语言编程圆周率

c语言编程圆周率

发布时间:2023-02-02 06:25:41

‘壹’ C语言程序设计,用级数计算圆周率π

我写过精确10000多位的,但代码太多无法在此列出,我给你提供一个思路:
定义长度为固定值的字节的数组当做一个“大整数型”,长度为BI_SIZE,数组的0号数为最低8位,往后是更高8位,以此类推。
考虑计算过程中的溢出问题,BI_SIZE要尽量大,但也不能太大,否则算得会很慢。
#define
BI_SIZE
128
定义小数点后的十进制位数PI_NUM,略大于100。
#define
PI_NUM
103
这样的数组定义多个,比如计算函数内部用的工作寄存器如下:
uint8_t
R0[BI_SIZE];
uint8_t
R1[BI_SIZE];
uint8_t
R2[BI_SIZE];
……
用户使用的寄存器如下:
uint8_t
a0[BI_SIZE];
uint8_t
a1[BI_SIZE];
uint8_t
a2[BI_SIZE];
……
定义大整数相关处理函数,包含拷贝、清零、比大小、加、减、乘、移位、除、转十进制ascii等函数。
比如大整数比大小,相等返回0,a大返回1,b大返回-1。
int
BigInteger_Cmp(uint8_t
*a,uint8_t
*b)
{
uint32_t
i;
for(i
=
BI_SIZE
-
1;i
<
BI_SIZE;i
--)
{
if(a[i]
!=
b[i])
{
if(a[i]
>
b[i])
return
1;
else
return
-1;
}
}
return
0;
}
凡是运算函数都要使用输入地址的方式,如大整数相加,将a与b相加后的值装入地址c。
void
BigInteger_Add(uint8_t
*c,uint8_t
*a,uint8_t
*b);
调用每一个函数时,输出寄存器不能与输入寄存器冲突。
写除法函数可能比较难,请参考二进制除法相关资料。
打印函数可以用连续除以10求余获得。
函数准备完成后就可以算圆周率了,先用循环算出10的PI_NUM次方作为标准系数EXP[BI_SIZE],计算每一项时分子要先乘EXP再除。由于你的级数公制性质,建议乘和除交替进行,以免数字溢出。
每一项不断累加起来,直到当前算得的项为0为止,累加结果转十进制打印出来。
调试时PI_NUM可以先改小,如果数字正确,就可以改为100多了。

‘贰’ C语言编程求出圆周率的近似值。

#include <stdio.h>


int main()

{

double pi;

unsigned long i,n;

scanf("%lu",&n);

for(pi=1,i=1;i<=n;++i)

{

pi*=(i+1)/2*2.0 / ( (i+1)/2*2+(i-1)%2*2-1 );

}

printf("pi=%.10lf ",pi*=2);

return 0;

}

‘叁’ C语言计算圆周率

#include<stdio.h>
#include<math.h>
intmain(){
doublep=0,q=0;
inti;
for(i=1;;i++){
p+=6*1.0/(i*i);
q+=4*1.0*pow(-1,i+1)/(2*i-1);//q后面少一个+
if(fabs(sqrt(p)-q)<1e-6)
break;
}
printf("PIis%lf,项数为%d",q,i);
return0;
}

阅读全文

与c语言编程圆周率相关的资料

热点内容
业务逻辑程序员 浏览:657
addto新建文件夹什么意思 浏览:158
有服务器地址怎么安装软件 浏览:659
安卓如何完全清除数据 浏览:690
安卓安卓证书怎么信任 浏览:53
服务器被攻击如何解决 浏览:221
学霸变成程序员 浏览:881
c语言编译错误fatalerror 浏览:441
ipv4内部服务器地址怎么分配 浏览:463
java线程安全的方法 浏览:950
重复命令画梯形 浏览:164
在疫情就是命令 浏览:328
自己搭建一个什么服务器好玩 浏览:253
java基础马士兵 浏览:823
完美世界手游如何查看服务器 浏览:859
光遇安卓与ios什么时候互通 浏览:598
js如何运行时编译 浏览:917
引力app在哪里下载 浏览:609
编写app如何得到钱 浏览:801
吉利汽车软件放哪个文件夹安装 浏览:224