一个求函数的积分的程序执行问题

#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;
}