ACM 入門題 1167
阿新 • • 發佈:2018-10-31
/* 題目描述
用如下公式
PI/4≈1-1/3+1/5-1/7+…
求圓周率PI的近似值,直到發現某一項的絕對值小於10-6為止(該項不累加)。
要求輸出的結果總寬度佔10位,其中小數部分為8位。
程式中使用浮點型資料時,請定義為雙精度double型別。
如果需要計算絕對值,可以使用C語言數學庫提供的函式fabs,如求x的絕對值,則為fabs(x).
輸入 無
輸出 PI=圓周率的近似值
輸出的結果總寬度佔10位,其中小數部分為8位。
末尾輸出換行。
樣例輸入 無
樣例輸出 PI=3.14159065 */
#include<stdio.h> #include<math.h> int main() { double PI=0.00,x=1.00,term=1.00,sign=1.00; //PI值題目要求,需定義成double型別,x為比較物件,也需定義成為double, while(fabs(x)>=1e-6) // term定義成double;i也可以定義成int變數1,整形變數和單精度雙精度變數進行算術運算,先把int和float專成double再運算*/ { PI=PI+x; sign=-sign; //分子不轉換,用此語句表示其進行符號變換+變成- term=term+2; //分母每次運算完+2 x=sign/term; } PI=PI*4; //題目的公式 printf("PI=%10.8lf\n",PI); return 0; } /*問題?為什麼PI=PI+4放在while迴圈語句中x語句下邊會出現答案4.00000000000呢? 因為假如設x=0的話,直接跳過while語句的執行範圍,直接執行PI=PI*4了 注:寫完程式碼,不僅僅需要檢查格式,更需要腦中執行一遍,避免低階錯誤。*/
`