题目
用矩形法分别求函数y = sin(x) 在函数[0,1] 区间的定积分、y = cos(x) 在 [-1, 1] 区间的定积分、y = 5x^2^ + 6x + 7 在 [1, 3] 区间的定积分,要求编程时使用指向函数的指针变量。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
double fsin(double x)
{
return sin(x);
}
double fcos(double x)
{
return cos(x);
}
double fn(double x)
{
return 5 * pow(x, 2) + 6 * x + 7;
}
double fun(double m, double n, double (*p)(double))
{
double h, sum = 0;
h = fabs(n - m) / 1000;
for (int i = 0; i < 1000; i++)
{
sum = sum + h * (*p)(m + i * h + h / 2);
}
return sum;
}
int main()
{
int k;
while (1)
{
printf("1. 计算函数y = sin(x)在[0,1]区间的定积分。\n");
printf("2. 计算函数y = cos(x)在[-1,1]区间的定积分。\n");
printf("3. 计算函数y = 5 * x^2 + 6 * x + 7在[1,3]区间的定积分。\n");
printf("4. 结束程序!!!\n");
printf("请输入你的选择:\n");
scanf("%d", &k);
if (k == 1) printf("函数y = sin(x)在[0,1]区间的定积分为:%lf。\n", fun(0, 1, fsin));
else if (k == 2) printf("函数y = cos(x)在[-1,1]区间的定积分为:%lf。\n", fun(-1, 1, fcos));
else if (k == 3) printf("函数y = 5 * x^2 + 6 * x + 7在[1,3]区间的定积分为:%lf。\n", fun(1, 3, fn));
else if (k == 4)
{
break;
}
else
{
printf("你的输入有误!!!\n");
}
printf("\n\n\n");
}
return 0;
}
|