㈠ 請問c語言中π這個數字要怎麼定義出來呢
有幾個辦法可以實現這個任務。
最簡單地,定義一個宏就可以了:
#define PI 3.1415926
宏替換 ,用於說明某一特定輸入(通常是字元串)如何根據預定義的規則轉換成對應的輸出(通常也是字元串)。這種替換在預編譯時進行,稱作宏展開。解釋器或編譯器在遇到宏時會自動進行這一模式替換。對於編譯語言,宏展開在編譯時發生,編譯順會自動將源程序中的PI替換為3.1415926。
還有一種辦法是定義一個常量(使用const):
const double Pi=3.1415926;
const修飾的數據類型是指常類型,常類型的變數或對象的值是不能被更新的。
const關鍵字的作用主要有以下幾點:
(1)可以定義const常量,具有不可變性。
例如:const int Max=100; Max++會產生錯誤;
(2)便於進行類型檢查,使編譯器對處理內容有更多了解,消除了一些隱患。
例如: void f(const int i) { .........} 編譯器就會知道i是一個常量,不允許修改;
(3)可以避免意義模糊的數字出現,同樣可以很方便地進行參數的調整和修改。 同宏定義一樣,可以做到不變則已,一變都變!
如(1)中,如果想修改Max的內容,只需要:const int Max=you want;即可!
////////////////////////////////////////////////////////////////////////////////////////////////
//(有錯,這樣不能修改,會報重復定義的錯誤)
///////////////////////////////////////////////////////////////////////////////////////////////
(4)可以保護被修飾的東西,防止意外的修改,增強程序的健壯性。 還是上面的例子,如果在函數體內修改了i,編譯器就會報錯;
例如: void f(const int i) { i=10;//error! }
(5) 可以節省空間,避免不必要的內存分配。 例如:
#define PI 3.14159 //常量宏
const double Pi=3.14159; //此時並未將Pi放入RAM中 ......
double i=Pi; //此時為Pi分配內存,以後不再分配!
double I=PI; //編譯期間進行宏替換,分配內存
double j=Pi; //沒有內存分配
double J=PI; //再進行宏替換,又一次分配內存!
const定義常量從匯編的角度來看,只是給出了對應的內存地址,而不是像#define一樣給出的是立即數,所以,const定義的常量在程序運行過程中只有一份拷貝,而#define定義的常量在內存中有若干份拷貝。
(6) 提高了效率。
編譯器通常不為普通const常量分配存儲空間,而是將它們保存在符號表中,這使得它成為一個編譯期間的常量,沒有了存儲與讀內存的操作,使得它的效率也很高。
㈡ C語言函數中派怎麼表示
C語言函數中π一般用宏進行定義:
#define PI 3.14
因為π是無限不循環小數,計算機的存儲不可能全部存下來,所以只能近似表示。
圓周率(Pi)是圓的周長與直徑的比值,一般用希臘字母π表示,是一個在數學及物理學中普遍存在的數學常數。π也等於圓形之面積與半徑平方之比。是精確計算圓周長、圓面積、球體積等幾何形狀的關鍵值。 在分析學里,π可以嚴格地定義為滿足sinx = 0的最小正實數x。
圓周率用字母 (讀作pài)表示,是一個常數(約等於3.141592654),是代表圓周長和直徑的比值。它是一個無理數,即無限不循環小數。在日常生活中,通常都用3.14代表圓周率去進行近似計算。而用十位小數3.141592654便足以應付一般計算。即使是工程師或物理學家要進行較精密的計算,充其量也只需取值至小數點後幾百個位。
㈢ c語言求pai
把...!=EOF && f!=0改成...!=EOF && f>0。
㈣ 怎麼用C語言編程計算出π的值
一個足以讓你吐血的計算400位pi的C程序:
int a=10000, b, c=2800, d, e, f[2801], g;
main() {
for(; b-c; f[b++]=a/5);
for(; d=0,g=c*2; c -=14,printf("%.4d",e+d/a),e=d%a)
for(b=c; d+=f[b]*a,f[b]=d%--g,d/=g--,--b; d*=b);
}
理論上只要用大數演算法擴了就能一直算下去。我在Palm上面實現的那個就是基於這個演算法,沒有擴,算到4680位(受到Palm平台32k數組的長度限制)。
這個程序的特點是:你抱著想看看算pi原理的希望來讀這個程序,結果發現就是看了也還是看不懂~~
轉的,但是網路知道不允許貼地址哦
第二種:
用C語言編程π*π/6=1/1*1+1/2*2+1/3*3+。。。+1/n*n
#include<stdio.h>
#include<math.h>
main()
{
int n,i;
double s=0;
printf("輸入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{s=s+1.0/(i*i);
}
printf("pai=%f",sqrt(s*6));
}
第三種:
求pi=(1+1/(1*3))*(1+1/(3*5))*(1+1/(5*7))…………直到最後一項的分數小於10的負6次方為止。
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void main()
{
double pi,i,j,sigh,term;
i=1,j=3,sigh=1,term=1;
while(sigh>1e-6)
{
sigh=1/(i*j);
term=(1+sigh)*term;
i=i+2;
j=j+2;
}
pi=term;
printf("pi=%f\n",pi);
}
㈤ 如何用C語言得出派值,數學老師要求精確到小數點後十位!
#include "stdio.h"
void main(void){
double pai,nDec,tmp;
int i;
nDec=1.0/10000000000;
for(pai=0,i=1;(tmp=1.0/i)>nDec;pai+=tmp,i+=4);
for(i=3;(tmp=1.0/i)>nDec;pai-=tmp,i+=4);
printf("pai=%.10f\n",4*pai);
}