在线编译器 C

#include <stdio.h> float sinus(float x) { float a = x, sum = x; int n = 1; while (a > 0.001 || a < -0.001) { a = -a * x * x / ((n + 2) * (n + 1)); sum = sum + a; n = n + 2; } return a; } int main() { printf("%.3f", sinus(45)); return 0; }
这段代码试图计算正弦函数的值,但存在几个问题。

首先,函数返回的是 `a` 而不是累加和 `sum`,这会导致结果错误。其次,循环条件 `a > 0.001 || a < -0.001` 在 `a` 很小时会提前退出,但 `a` 的初始值是 `x`,如果 `x` 本身小于 0.001,循环根本不会执行。另外,计算正弦时角度应该用弧度制,而这里传入了 45(度),需要转换。

- 检查函数返回值:`return a` 应该改为 `return sum`,因为 `sum` 才是累加的结果。
- 注意角度单位:`sinus(45)` 中的 45 是度数,而泰勒级数要求弧度,需要将角度转换为弧度(例如乘以 π/180)。