一、题目要求:
二、思路
①数学方面:矩形法求定积分的公式
将积分图形划分成为指定数量的矩形,求取各个矩形的面积,然后最终进行累加得到结果
1.积分区间:
[num1, num2]
2.分割数量:count
每个矩形的边长:dx=(num2-num1)/count
3.被积分函数:
f(x)(f-对应不同的被积分函数 sin/cos/exp)(x=num1 + dx*n) 计算矩形高度
4.求取每个矩形的面积进行累加:S=S1 +S2 +...+ Sn
②编程方面:函数指针
在代码中,要调用一个函数,其实就是就是让cpu执行指令的时候,跳转到指定的位置加载指令进行执行
三、程序:
c
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<math.h>
double integral(double num1, double num2, int count, double (*handler)(double))
{
double dx = (num2 - num1) / count;
double res = 0;
for (int i = 0; i < count; i++)
{
double dh = handler(num1 + dx * i);
res += dx * dh;
}
return res;
}
int main()
{
printf("请输入积分区间[num1,num2]:");
double num1, num2;
scanf("%lf%lf", &num1, &num2);
printf("请输入分割数量:");
int count;
scanf("%d", &count);
printf("请输入被积分函数<1-sin,2-cos,3-exp>:");
int choice;
scanf("%d", &choice);
double(*var[4])(double) = { NULL,sin,cos,exp };
double res = integral(num1, num2, count, var[choice]);
printf("定积分结果:%lf\n", res);
return 0;
}