能用C语言或C#语言算圆周率吗?

作者&投稿:藩顺 (若有异议请与网页底部的电邮联系)
C语言程序设计,用级数计算圆周率π~

#includeint main(){ double pi=2.0; double i=1.0; double a= i; double b= 2*i+1; double t=2*a/b; while(t>=1e-100) { pi = pi + t; i=i+1; a=a*i; b=b*(2*i+1); t=2*a/b; } printf("%g
",pi); getchar();}

C语言中并不识别希腊字符π,要使用圆周率,需要自定义π的变量,并指定近似值。
可以使用宏定义的方式,当精度要求不高时,可以使用
#define PAI 3.14
或者
#define PAI 3.14159265
如果精度要求高,可以使用
#define PAI 3.14159265358979

具体定义几位小数,由运算要求精度决定,由于π是无理数,所以不可能使用绝对精确值。

当调用的时候,直接用宏定义名PAI替代即可。比如半径为5的圆周长为
double l = 2*PAI*5;

是的,C 语言和 C# 语言都可以用来计算圆周率。

多边形法是一种常用的求圆周率的方法,其基本思路是将一个正多边形内接于单位圆上,通过不断增加多边形的边数,逐渐逼近圆的周长和面积。具体来说,我们可以使用如下的 C 语言或 C# 语言代码实现:

```c
#include <stdio.h>
#include <math.h>

int main() {
int n = 6; // 初始为六边形

double side = 1.0; // 正多边形的边长
double radius = 1.0; // 单位圆的半径
double pi = 0.0; // 圆周率的估计值

while (n <= 1048576) { // 增加多边形的边数直到达到 2^20
side = 2 * radius * sin(M_PI / n);
radius = sqrt(pow(radius, 2) - pow(side / 2, 2));
pi = n * side / 2; // 计算圆周率的估计值
printf("%d 边形:%.15f\n", n, pi);
n *= 2;
}

return 0;
}
```

在上述代码中,我们首先定义了三个变量 `side`、`radius` 和 `pi`,分别表示正多边形的边长、单位圆的半径和圆周率的估计值。初始时,我们将正多边形初始化为一个六边形,即 `n=6`。然后,我们在一个循环内不断增加正多边形的边数,直到边数达到 $2^{20}$。在每次循环中,我们使用正多边形的边长公式和勾股定理计算出新的正多边形的边长和半径,并根据正多边形的计算结果计算出圆周率的估计值 `pi`,并输出结果到控制台中。

需要注意的是,在实际应用中,还需要考虑数值溢出、精度误差等问题,以确保计算结果的正确性。

#include <stdio.h>

long a=10000,b,c=2800,d,e,f[2801],g;
void main()
{
for(;b-c;) f[b++]=a/5;
for(;d=0,g=c*2;c-=14,printf("%04d",e+d/a),e=d%a)
for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b);
}

#include<stdio.h>
#include<math.h>
void main()
{
int s;
float n,t,pi;
t=1;pi=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%lf\n",pi);
}


用c语言或c++:输入X值, 其中 |X|<1,按下列公式计算 S=X+ X 2 \/2+...
include <stdio.h>#include <math.h>int main(){double i,x,k=1,s=0;scanf("%lf",&x);for(i=1;abs(k)\/i>=1e-5;i++){k*=x;s+=k\/i;}printf("%.6f",s);return 0;}运行示例:

C语言中如何表示“或”?
在C语言中,“或”分为两种:逻辑性质的“逻辑或”,以及运算性质的“按位或”。“逻辑或”的运算符是 ||,例如下面的语句 if ( (Hero.HP < 20) || (Hero.MP < 10) ) printf("风紧,扯呼!");表示当主人公的HP低于20或MP低于10时弹出逃走的提示信息。“按位或”的运算符是 |,例如...

数据结构作业~急求~~~用c语言或c++ 使用单链表实现系统进程列表,完成...
所谓链表,就是用一组任意的存储单元存储线性表元素的一种数据结构。链表又分为单链表、双向链表和循环链表等。我们先讲讲单链表。所谓单链表,是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分:1、数据域:用来存储本身数据 2、链域或称为指针域:用来存储下一个结点地址或者说指向...

如何用C语言描述“或、且、非”关系?
1、C语言中用逻辑运算符来描述或、且、非的关系,问题中的或运算,通过||运算符来表示。2、C语言中关系运算符来描述变量的大小关系,需要注意问题中的大于等于和小于等于,C语言通过>=和<=两个运算符来描述,而并不像问题中的符号表示。3、最终,用C语言描述的表达式为:a>=10 || a<=0 ...

用C语言或C++编写操作系统作业:银行家算法
printf("请输入已分配给进程 p%d 的 %c 种系统资源:",i,'A'+j); if(status==0) { allochead=alloc1=alloc2=(struct allocation*)malloc(alloclen); alloc1->next=alloc2->next=NULL; scanf("%d",&allochead->value); status++; } else { alloc2=(struct allocation *)malloc(alloclen); scanf...

用C语言或C++编写线性方程拟合 y=a+bx
int main(){ double x[MAXNUM],y[MAXNUM];double sumx=0,sumy=0,sumxy=0,sumxx=0;double a,b;int i;cout<<"输入"<<MAXNUM<<"组样本:";for (i=0;i<MAXNUM;i++){ cin>>x[i]>>y[i];sumx += x[i];sumy += y[i];sumxy = x[i]*y[i];sumxx = x[i]*x[i];...

用c语言或者C++打星星的排列
include <iostream>using namespace std;int main(){int num = 0;cout<<"Input number: ";cin>>num;\/\/第1个图案for(int i=0;i < num;++i){for(int j=0;j < num;++j)cout<<"*";cout<<endl;}\/\/第2个图案cout<<endl;for(i=0;i < num;++i){for(int j=0;j <= i;++j...

c语言里面“或者”的那个“||”键盘上怎么打出来
结论是,要输入C语言中的“或者”符号“||”,只需遵循几个简单的步骤。以下是具体的键盘操作指南:在C语言中表示“或者”的“||”符号可通过键盘上特殊组合打出。以下是步骤:首先,保持shift键的按下,找到键盘上标有红色方框的键,通常这个键是位于回车键左边,位置可能因键盘型号而异,可能是两个...

用c语言或c++做一个通讯录管理系统
int p=-2,c=n;char name[20];cout<<"请输入姓名"<<endl;cin>>name;for(int i=0;i<n;i++){ if(strcmp(book[i].gname(),name)==0){ p=i;break;} } if(p!=-2){ for(i=p;i<n;i++)book[i]=book[i+1];return --c;} else return c;} void pbook::edit(pbook *...

用C语言或者C++实现大地坐标系与大地空间直角坐标系的转换
double sinL = sin(dsrc->L);double cosL = cos(dsrc->L);double tanB_2 = tan(dsrc->B) * tan(dsrc->B);double f = 1 - e * e;double fd = sqrt(1 + f * tanB_2);dsrc->X = (dsrc->a * cosL) \/ fd + dsrc->H * cosB * cosL;dsrc->Y = (dsrc->a * sinL)...

杨凌区17528386512: 能用C语言或C#语言算圆周率吗? -
布沿益脂: #includelong a=10000,b,c=2800,d,e,f[2801],g; void main() { for(;b-c;) f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%04d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); }

杨凌区17528386512: 用c语言求圆周率 -
布沿益脂: #include#include int main(){ double p=0,q=0; int i; 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("PI is %lf,项数为%d",q,i); return 0; }

杨凌区17528386512: 用C语言写出计算圆周率的程序 -
布沿益脂:[答案] double s = 0;//面积 double pi = 0;//圆周率 double d=200;//直径(值越大圆周率越精确) double r = d/2;//半径 for(int i=1;i

杨凌区17528386512: C#、C、C++这几种语言哪一个可以写计算几千亿位圆周率的程序 -
布沿益脂: 其实我觉得语言吧,认真学,都好学..不好好学,一个比一个难.虚的鼻祖之类的,就不说了.个人见解,就说下用处吧:C语言:最快速的语言,要完成同样的事情,高级语言里面,C语言最快.主要应用于硬件编程.如DSP之类.还有好...

杨凌区17528386512: C语言:计算圆周率(精度保留到小数点后6位),用程序实现,公式如下: -
布沿益脂: #include "math.h" float pi(){float l = sqrt(2);float lp = 0;float p = 4.0 / l;while (fabs(p - lp) > 1e-6) {l = sqrt(2+l);lp = p;p = 2*p/l;}return p; } int main() {printf("%f", pi());return 0; }

杨凌区17528386512: 如何用c++无限算圆周率? -
布沿益脂: 使用如下表述可以获得很高的精度. const double PI = atan(1.)*4.; 注意,这个是在编译期间计算的,不增加计算量.

杨凌区17528386512: C语言编程,用for循环完成.用格里高利公式计算并输出圆周率的值. -
布沿益脂: #include<stdio.h> int main() {double sum=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){sum=sum+1/(double)(4*i-3)-1/(double)(4*i-1);//要转换为浮点型的}printf("%.5lf\n",sum*4);return 0; }

杨凌区17528386512: 怎样用C语言做出圆周率? -
布沿益脂: #include <string.h> #include <stdio.h> #include <math.h> double getPI(int n); void main() {int n;double PI;printf("Please enter accuracy\n");scanf("%d",&n);PI=getPI(n);printf("The similar value of PI is\n%f\n",PI);getchar(); } double ...

杨凌区17528386512: 如何用C语言求闰年、和圆周率 -
布沿益脂: 1闰年 scanf("%d",&n); if((n%4)==0)&&(n%100)!=0) printf("闰年");2圆周率 首先要知道圆周率的算法,用圆内正n边形去逼近圆 PI*r*r = 0.5n*r*r*sin(360/n) PI = 0.5nsin(360/n) for(int i=1;i{ printf("%f",0.5*i*sin(360/i)); }

杨凌区17528386512: C语言:圆周率的计算 -
布沿益脂: 在for循环后加一句: sum -= f; 你多加了最后那个小于epsioon的值.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网