Онлайн компилятор 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", result); return 0; }
这段代码试图计算正弦函数的近似值,但存在几个问题。主要思路是用泰勒级数展开,但循环条件和变量更新有错误。

- 循环条件 `i > 0` 永远为真,因为 `i` 从1开始每次增加2,这会导致无限循环。你需要一个终止条件,比如当某项的绝对值小于某个阈值时停止。
- 变量 `c` 的计算逻辑有问题。在泰勒级数中,分母应该是阶乘,但你的更新方式 `c = c * b * (i + 1) * (i + 2)` 引入了符号 `b`,这会导致分母符号变化,而实际上符号应该只由分子控制。你需要重新考虑如何正确计算阶乘和符号的分离。
- `main` 函数中使用了未定义的变量 `result`,应该调用 `sinus` 函数并传入一个值。