本文目錄一覽:
- 1、C語言編程求出圓周率的近似值。
- 2、用C語言求π的近似值
- 3、c語言 根據公式求出π的近似值。
- 4、C語言程序設計,計算π的近似值
- 5、C語言編程有公式 可以計算π的近似值。求前後兩次迭代結果π 之差的絕對值小於e時相應的最小迭代次數n
- 6、c語言編程,求π的近似值
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\n”,pi*=2);
return 0;
}
用C語言求π的近似值
循環體裏面的公式有點問題,我重新寫了一下,代碼如下:
void main()
{
double i, pi;
i=1.0,pi=0.0;
while (fabs(1.0/i) = 1e-6){
pi=(pi + pow(-1.0,i+1)/(2*i-1));
i++;
}
printf(“pi=%f\n”,pi* 4);
system(“pause”);
}
注意輸出的結果是pi*4,望採納!
c語言 根據公式求出π的近似值。
#includestdio.h
double powi(double num, int multi) {
double r = 1.0;
int i;
for (i = 0; i multi; i++) {
r *= num;
}
return r;
}
double item(int n) {
double r = 1.0;
int i;
/* 1.0 * 1 / 2 * 3 / 4 * 5 / 6 ….. */
for (i = 1; i n; i++) {
if (i % 2) {
r *= i;
/* printf(“*%d”, i); */
} else {
r /= i;
/* printf(“/%d”, i); */
}
}
r *= 1;
/* printf(“*%d”, 1); */
r /= n;
/* printf(“/%d”, n); */
r *= powi(0.5, n);
/* printf(“*%lf”, powi(0.5, n)); */
/* printf(” — item %d: %lf \n”, n, r); */
return r;
}
int main() {
double pd6 = 0.0, ci = 0.0;
int i = 1;
do {
ci = item(i);
pd6 += ci;
i += 2;
} while (ci = 1e-6);
printf(“PI=%.6lf\n”, pd6 * 6);
return 0;
}
完全按你的公式做的,結果真的對了,3.141592(這裡對6位有效數字有個存疑,就是應該輸出6位還是7位數字,理論上有效數字後面應該帶上一個估值,用來修正有效數字的,如果要求真的那麼嚴格,我可以給你寫個函數用來輸出6位有效數字)。
一般級數很少有用這個複雜的式子的吧,一般都是 1-1/3+1/5-1/7+1/9-1/11 這個式子,你的公式竟然也是對的。樓上的完全沒看懂級數的項的規律。
————————————————-
以上是20:29分發的回答,既然你沒有追問,我只能通過修改這個回答,慢慢解釋一下:
powi函數 是為了不引用龐大的math庫,而自己寫的一個簡單的正整數冪的函數(math庫里有double pow(double, double),這個運算過程中不需要小數的冪值,就用循環乘法來實現了。
item函數 是每個項的計算過程,仔細看的話可能會發現,這些項並不是 i=1,2,3,4… 而是 i=1,3,5,7… 這個是為了符合級數的項中的值,都是奇數在做運算。
item裏面的那些注釋掉的 printf 是故意留下用來觀察級數表達式的。由於每一項都是多個數值相乘或除,如1/2×3/4×5/6 其實就是1 * 2 / 3 * 4 ,這些printf可以在計算每一項的時候把整個過程打印出來。
級數的難點其實就是找到項的通用表達式,你的公式已經把表達式寫的很清楚了,就看你把它提取成算法了
C語言程序設計,計算π的近似值
算法錯誤。程序思路非常混亂。n++只一次,並沒有循環,那麼一開始計算x0時n=1,以後每次計算x0的值時n都等於2。而計算公式是要對n進行累加循環的。
#include stdio.h
void main(){
double i,k=1;
for(i=1;k*(i*2*i*2/((i*2-1)*(i*2+1))-1)=1e-6;i++)
k*=i*2*i*2/((i*2-1)*(i*2+1));
printf(“PI=%.2lf”,k*2);
}
C語言編程有公式 可以計算π的近似值。求前後兩次迭代結果π 之差的絕對值小於e時相應的最小迭代次數n
代碼如下:
#includestdio.h
int main() {
int n = 1;
double pi = 2.0 * 2 * 2/3; // n=1時pi的初值
double e; // 精度
scanf(“%lf”, e);
while (1) {
++n;
int m = 2 * n;
double pn = pi * m / (m – 1) * m / (m + 1);
if (pn – pi e) {
pi = pn;
break;
}
pi = pn;
}
printf(“n=%d, pi=%lf\n”, n, pi);
return 0;
}
運行結果如下:
c語言編程,求π的近似值
#include stdio.h
#include math.h
int main()
{
int x,z;
float y;
y=0;
z=0;
for(x=1;fabs(1.0/x)1e-6;x+=2)
{
z=z+1;
if(z%2!=0)
{
y=y+1.0/x;
}
else
{
y=y-1.0/x;
}
}
y=y*4;
printf(“π=%10.6f\n”,y);
return 0;
}
原創文章,作者:CXPJ,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/135887.html