急利用函式指標變數編寫求定積分的通用函式

時間 2021-08-11 18:12:34

1樓:

//利用simpson公式來求定積分

#include

#include

double t(double x,double y,int z,double (*fun)(double)) ;

double integral (double a,double b,double (*fun)(double));

double f1(double t);

double f2(double t);

double f3(double t);

double f4(double t);

double f5(double t);

int n=0; //用來記錄積分割槽間劃分的間隔數,數量越大,越精確

void main()

double a,b,s;

printf("積分下限 a:\n");

scanf("%lf",&a);

printf("積分上限 b:\n");

scanf("%lf",&b);

printf("區間等分個數 n :\n");

scanf("%d",&n);

/*利用辛甫生公式求解定積分*/

s=integral(a,b,f1);//用函式f1來驗證

printf("函式 f(x)在區間%f到%f 的積分值為 s=%f\n",a,b,s);

double f1(double t)

return 1+t;

double f2(double t)

return 3+2*t;

double f3(double t)

return pow(2.71828,t)+1;//自然常數e,取了一個近似值2.71828

double f4(double t)

return (1+t)*(1+t);

double f5(double t)

return t*t*t;

//辛普森公式:

double t(double x,double y,int z,double (*fun)(double))

double h,tn;

int i;

h=(y-x)/z;

tn=(fun(x)+fun(y))/2;

for(i=1;itn=tn+fun(x+i*h);

tn=tn*h;

return (tn);

double integral(double x,double y,double(*fun)(double))

return (4*t(x,y,2*n,fun)-t(x,y,n,fun))/3;

驗證結果:

通過數學知識,我們可以知道

f1(t)=1+t;(積分應該是t+0.5*t*t+任意常數)在區間0到1之間定積分的確是1.5

2樓:匿名使用者

//簡單的寫了一下按照最原始的定積分思想來的#include

//定積分通用函式

double integral (double a,double b,double (*fun)(double)); //函式宣告

double func1(double x); //函式宣告// 主函式

void main()

//定積分函式 a下限 b 上限 (*fun)(double) 函式指標 梯形法求積分

double integral (double a,double b,double (*fun)(double))

//返回所求積分

return dtotalarea;

}//函式取一個做示範 其餘類似

double func1(double x)

vc 指標變數賦值問題,指標變數賦值方式

雖然b是正確答案,但是對cd的理解不對。a,p是對地址為p的記憶體賦值,因為p還未賦值,這種行為是危險的b,陣列的首址可理解為一個常量指標 即指向的地址不能改變的針 雖然指標不能被修改,但是其指向的地址的內容是可以改的。c。a是常量,其地址不能被修改 d。錯誤在於對引用a的初始化,應該使用相同型別 ...

指標變數指向的變數的值變了,指標變數會不會變

a還是指向p1,b還是指向p2啊 只不過p1和p2的值互轉了 你說的情況可以這樣寫 int t a a b b t 這樣的話a指向p2,b指向p1,但是p1和p2的值還是原先的值不過不建議這樣寫 a和 b的值互換,也就是p1和p2的值互換,注意是 值 的互換,不是變數名 不會變指標變數中存的是地址,...

指標和變數

寫在函式定義裡的引數叫形參。寫在函式呼叫裡的引數叫實參。實參能把實參當時的數值傳到函式計算定義塊裡。但不一定能把函式塊裡的資料加工結果帶回來。函式運算結果要帶 用函式的地方,有幾種辦法 1 全域性量。2 函式返回值。3 通過實參帶回。想用實參帶回,c語言規定,凡要通過實參帶回的量,它對應的形參必須宣...