之前测试算出的结果一直和示例不一样,最后又重新读题,发现“直到最后一项的值小于给定阈值”,意思是
- 最后一项要小于阈值
- 最后一项是要加进结果里面的
我原来想当然的以为小于阈值的项不算进里面。所以审题好重要。
法一:while循环:
#include<stdio.h>
int main()
{
int n=0;
double a=0.00;
scanf("%lf",&a);
double x=1.00,y=0.00;
while(x>=a){
y=y+x;
n++;
x=x*n/(2*n+1);
}
y=y+x;//小于给定阈值的最后一项值要算进去
printf("%.6lf",2*y);
return 0;
}
法二:do-while循环
#include<stdio.h>
int main()
{
double a=0.00,x=1.00,y=0.00;
scanf("%lf",&a);
int n=1;
do{
y+=x;
x=x*n/(2*n+1);
n++;
}while(x>=a);
y+=x;
printf("%.6lf",2*y);
return 0;
}
法三:for循环
#include<stdio.h>
int main()
{
double a=0.00,x=1.00,y=0.00;
scanf("%lf",&a);
int n=1;
for(n=1;x>=a;n++){
y=y+x;
x=x*n/(2*n+1);
}
y+=x;
printf("%.6lf",2*y);
return 0;
}