Онлайн компилятор 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() { printf("%.3f", sinus(45)); return 0; }
这段代码试图用泰勒级数计算正弦值,但存在几个问题。

- 循环条件 `i > 0` 永远为真,因为 `i` 从1开始每次增加2,会无限循环下去。你需要一个终止条件,比如当某项的绝对值小于某个很小的数时停止。
- 变量 `c` 的计算逻辑有误。在泰勒级数中,分母是阶乘,但你的 `c` 每次乘以 `b` 会导致符号混入分母,而且阶乘的更新方式不对。你应该单独计算每一项的分子和分母,再累加。
- 你传入的参数是 `45`,但正弦函数通常接受弧度值,而不是角度。你需要将角度转换为弧度,或者明确你的意图。