**按如下函数原型,采用梯形法编程实现,在积分区间[a,b]内划分n个小区间,这里取n=100,计算函数y1=∫10(1+x2)dx和y2=∫30x1+x2dx的定积分。其中,指向函数的指针变量f用于接收被积函数的入口地址。
Integral(float (*f)(float), float a, float b);
输出格式要求:"y1=%fny2=%fn"
#includefloat Fun1(float x); float Fun2(float x); float Integral(float (*f)(float), float a, float b);//指向函数的指针变量f用于接收被积函数的入口地址 int main() { float y1, y2; y1 = Integral(Fun1, 0.0, 1.0); y2 = Integral(Fun2, 0.0, 3.0); printf("y1=%fny2=%fn", y1, y2); return 0; } float Fun1(float x) { return 1 + x * x; } float Fun2(float x) { return x / (1 + x * x); } float Integral(float (*f)(float), float a, float b) { float s, h; int n = 100, i; s = ((*f)(a) + (*f)(b)) / 2; h = (b - a) / n; for (i = 1; i < n; i++) { s += (*f)(a + i * h); } return s * h; }
编译结果:
编译器:visual stdio 2019


![[西南交通大学c语言编程题]按如下函数原型,采用梯形法编程实现,在积分区间[a,b]内划分n个小区间,计算函数。 [西南交通大学c语言编程题]按如下函数原型,采用梯形法编程实现,在积分区间[a,b]内划分n个小区间,计算函数。](http://www.mshxw.com/aiimages/31/664610.png)
