根據(jù)下面關(guān)系式寝姿,求圓周率的值颂跨,直到最后一項(xiàng)的值小于給定閾值跨释。
2/π=1+1/3+2!/(3*5)+3!/(3*5*7)+........n!/(3*5*7*.......2n+1)
輸入格式:
輸入在一行中給出小于1的閾值官地。
輸出格式:
在一行中輸出滿足閾值條件的近似圓周率缔俄,輸出到小數(shù)點(diǎn)后6位疗绣。
輸入樣例:
0.01
輸出樣例:
3.132157
分析:總體為一個(gè)和的累加线召,其中每一項(xiàng)為一個(gè)單獨(dú)的項(xiàng),分子是結(jié)乘多矮,分母是奇數(shù)項(xiàng)的乘積缓淹,將其分別表示出來(lái),當(dāng)這一項(xiàng)大于等于閾值時(shí)循環(huán)累加塔逃,最后再加上最后一項(xiàng)小于閾值的數(shù)讯壶,此時(shí)累加和計(jì)算完畢,將結(jié)果乘2即為Π的值
代碼:
#include<stdio.h>
void main(){
? ? float sum=1,x,j;
????float????m=1,n=3;
? ? j=m/n;
????int? i=1, k=3;? ??
? ? scanf("%f",&x);
? ? while(j>=x){
? ? ? ? ????sum=sum+j;
? ? ? ? ????i=i+1;
? ? ? ????? m=m*i;
? ? ? ? ????k=k+2;
? ? ? ?????n=n*k;
? ? ? ????? j=m/n;
? ? ? ? }
? ? sum=sum+j;? ? //j小于閾值時(shí)跳出循環(huán)湾盗,此時(shí)sum中并沒(méi)有加上J,所以要把j加上伏蚊。
? ? printf("%.6f",sum*2);
}