这类题有了小数点后精度要求,就不宜再输入项数N了,否则在N较小情况下就不可能达到精度要求了。正确解法是判断当前项的值的精度,精度达到要求后就可终止计算。比如这里要求精确到小数点后6位,就可考虑当前项的值小于等于0.0000001时终止,因为增加或减少一个影响力不超过小数点后7位的数是不会影响到小数点后6位的精度的。举例如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int i;
double s,t;
for(s=0,t=i=1;t>0.0000001;s+=(t=1.0/i),i+=2);
printf("s≈%.6f\n",s);
return 0;
}
试运行结果如图:
#include
int main()
{
double sum = 0, i = 1;
int m, n;
scanf("%d", &n);
for (m = 1; m <= n; m++, i += 2)
sum += 1/i;
printf("sum = %lf\n", sum);
return 0;
}