Online Compiler C

#include <stdio.h> float sinus(float x) { float result = x; float a = x; float b = 1; for (int i = 1; i > 0; i = i + 2) { a = a * x * x; b = b * (-1) * (i + 1) * (i + 2); result = result + a / b; } return result; } int main() { printf("%.3f", sinus(45)); return 0; }
这段代码试图计算正弦函数的值,但存在几个问题。它使用泰勒级数展开,但循环条件写错了,导致循环永远不会执行。另外,角度单位也有问题。

- 循环条件 `i > 0` 一开始就为假(因为 `i` 初始为1,但循环体执行前会检查条件,实际上第一次检查时 `i=1` 满足条件,但循环内 `i` 每次增加2,会变成3、5... 永远大于0,所以循环会无限进行下去。但更关键的是,你希望循环有限次数,比如计算到某项很小为止,而不是无限循环。你需要一个终止条件,比如当某项的绝对值小于某个小值(如1e-6)时停止。

- 你传入的角度是45,但 `sinus` 函数期望的是弧度值。45度应该转换为 π/4 弧度。在调用 `sinus` 之前,需要将角度转换为弧度。