有大神知道是哪里出错了吗,出来的答案和结果不一样,帮忙看一下,c语言,新人? 20
在数列每项的表示中,除以k*(k+1)应写为 (k*(k+1)),少加了一个括号
但我没看懂你的代码中d变量是什么意思,在你的基础上修改后的代码如下:
可见输入0.0001时,输出为0.613755,符合测试用例
有两点需要注意:1. 数列第一项要单独判断,如果输入e>1,第一项就满足要求了
2. 题目中说直到某项绝对值小于e为止,根据测试用例的结果来看
最后小于e的那项也要算在sum中,所以while中sum先加和,再判断新加的项d
若d小于e就break跳出循环,输出最终的sum即可
附源码:
#include <stdio.h>
#include <math.h>
void main(){
int k = 1;
double sum = 1.0, f = -1.0, d, e;
scanf("%lf", &e);
if (e > 1) { // 第一项就小于输入的e
printf("1\n");
return;
}
while (1) {
d = f/(k*(k+1)); // 新的项
sum += d; // 先加和再判断
if (fabs(d) < e) break;
k++;
f = -f;
}
printf("%f\n", sum);
return 0;
}
2022-10-30