问题:求解,其中a、b是输入的double型变量
解决方案:
#include <stdio.h>
int main()
{
double a,b;
scanf("%lf%lf",&a,&b);
double n=10000000;
double dx=(b-a)/n;
double S=0;
for (int i=1; i<=n; i++)
{
S=S+dx/(1+(a+i*dx)*(a+i*dx));
}
printf("%lf\n",S);
return 0;
}
其中的n是为了控制精度而设置的常数。double型输出为6位小数,不同的n可能导致输出结果的不同。由数学知识易得,计算可得当n=10,000,000时才符合要求(事实上可以适当减小n的值,由于时间限制,笔者没有尝试),但当n的数量级继续增大时,精度的提高已经没有意义且会大幅增加程序运算的时间。因此,笔者建议这里n=10,000,000。