Online Compiler C

#include <stdio.h> float sinus(float x) { float sum = 0; float term = x; int n = 1; sum+=term while (term > 0.001f || term < -0.001f) { n += 2; term = term * (-x * x) / ((n - 1) * n); sum += term; } return sum; }
这段代码试图用泰勒级数计算正弦函数,但存在几个问题。

- 第6行 `sum+=term` 后面缺少分号,会导致编译错误。
- 循环条件 `while (term > 0.001f || term < -0.001f)` 的逻辑可能不符合你的预期。当 term 为正且大于 0.001 时,循环继续;当 term 为负且绝对值大于 0.001 时,循环也继续。但这里用 `||` 连接,实际上只要 term 的绝对值大于 0.001 就会继续循环,写法可以更简洁。
- 泰勒级数展开中,每一项的符号交替变化,你的代码通过 `(-x * x)` 实现了符号翻转,但需要确认分母的计算是否正确。当前分母是 `(n-1)*n`,而 n 从 1 开始,第一次循环时 n 变为 3,分母为 2*3=6,这对应的是 x^3/3! 的系数,是正确的。但后续项的分母需要检查是否匹配阶乘。

- 提示1:检查第6行是否缺少分号,以及循环条件是否可以改用 `fabs(term) > 0.001f` 来更清晰地表达“绝对值大于阈值”。
- 提示2:手动计算几项来验证分母是否正确,例如当 n=5 时,分母应该是 4*5=20,但实际 5! = 120,这里存在偏差,需要思考如何正确生成阶乘。