#define _CRT_SECURE_NO_DEPRECATE
#include
double integrate(double, double, int);
double equa(double); /*函数说明,背积函数,具体函数可替换*/
float a, b, c;
void main() {
double leftlimit, rightlimit;/*积分上限,下限*/
int n;/*梯形划分数*/
printf("请输入被积分函数的系数:a,b,c:\n");
scanf("%f%f%f", &a, &b, &c);
printf("请输入被积分函数的上限及下限:\n");
do {
scanf("%lf%lf", &leftlimit, &rightlimit);
if (leftlimit > rightlimit) printf("积分下限应该小于上限,请重新输入:");
} while (leftlimit < rightlimit);
printf("请输入被积分函数的划分数(要求正整数):\n");
getchar();
scanf("%d", &n);
if (n < 0) n = -n;/*对用户输入的负整数进行取正*/
printf("积分结果为=%.2f\n", integrate(leftlimit, rightlimit,n));
system("pause");
}
/*积分求解函数*/
double integrate(double lower, double upper, int n) {
double h, si, area = 0;
int i;
h = (upper - lower) / n;
for (i = 0;i < n;i++) {
si = h*(equa(lower + i*h) + equa(lower + (i + 1)*h)) / 2;
area = si + area;
}
return area;
}
/*被积函数*/
double equa(double xi) {
return a*xi*xi + b*xi + c;
}
这段函数写的有问题
do
{
scanf("%lf%lf", &leftlimit, &rightlimit);
if (leftlimit > rightlimit) printf("积分下限应该小于上限,请重新输入:");
}
while (leftlimit < rightlimit);
本身程序有错,
#include
void main()
{
float a, b, c;
double leftlimit, rightlimit;/*积分上限,下限*/
int n;/*梯形划分数*/
printf("请输入被积分函数的系数:a,b,c:\n");
scanf("%f%f%f", &a, &b, &c);
printf("请输入被积分函数的上限及下限:\n");
do
{
scanf("%lf%lf", &leftlimit, &rightlimit);//leftlimit为上限,rightlimit为下限,你颠倒
if (leftlimit > rightlimit) printf("积分下限应该小于上限,请重新输入:");//这里已经弹出循环了,还怎么输入。想让他弹出循环,进入下一步。
} while (leftlimit < rightlimit);
printf("请输入被积分函数的划分数(要求正整数):\n");
getchar();
scanf("%d", &n);
if (n < 0) n = -n;/*对用户输入的负整数进行取正*/
printf("积分结果为=%.2f\n", integrate(leftlimit, rightlimit,n));
}
/*积分求解函数*/
double integrate(double lower, double upper, int n) {
double h, si, area = 0;
int i;
h = (upper - lower) / n;
for (i = 0;i < n;i++) {
si = h*(equa(lower + i*h) + equa(lower + (i + 1)*h)) / 2;
area = si + area;
}
return area;
}
/*被积函数*/
double equa(double xi)
{
return a*xi*xi + b*xi + c;
}