Online Compiler C

#include <stdio.h> float sinus(float x) { float result = x; float a = x; int b = 1; int c = 1; for (int i = 1; i > 0; i = i + 2) { a = a * x * x; b = b * (-1); c = c * b * (i + 1) * (i + 2); result = result + a / c; } return result; } int main() { return 0; }
这段代码试图用泰勒级数计算正弦函数,但存在几个关键问题。

代码中有一个无限循环,因为循环条件 `i > 0` 永远为真,而 `i` 每次增加2,永远不会变成负数或零。

- 循环控制有问题。`for` 循环的终止条件 `i > 0` 会导致无限循环,因为 `i` 从1开始不断增加。你需要一个明确的终止条件,比如当某项的绝对值小于某个阈值时停止,或者循环固定次数。

- 变量 `c` 的计算逻辑有误。在泰勒级数中,分母应该是阶乘,但你的代码中 `c` 的更新方式不正确。注意 `c` 的初始值是1,但每次迭代时你乘上了 `b`(正负号),这会把符号混入分母。分母应该只包含阶乘值,符号应该单独处理。