Онлайн компилятор C

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

- 变量 `sign` 未声明,导致编译错误。你需要先定义这个变量。
- 循环逻辑有误:`term` 的初始值是 `x`,但循环条件检查的是 `term` 的绝对值是否大于0.001,而 `term` 在第一次迭代前可能已经很大或很小。另外,`sum` 的初始值应为0,但循环中先更新 `term` 再加到 `sum`,导致第一项 `x` 没有被加入。
- 符号处理方式不正确。泰勒级数中每一项的符号交替变化,但你的代码中 `sign` 未初始化,且没有正确应用到 `term` 上。