Online Compiler C

#include <stdio.h> float floatabs(float y){ if(y<0){ y=-y; }else{ y=y; } return y; } float sinus(float x) { float pi = 3.1415926f; float xrad; xrad = x * pi / 180; float sin=xrad, up = xrad, down = 1, n = 1, znak = -1, sum = xrad; while (floatabs(sin) > 0.0001){ up = up * xrad * xrad; down = down * (n + 1) * (n + 2); sin = up / down; n += 2; sum = sum + (znak * sin); znak = znak * (-1); } return sum; } int main() { float n; scanf("%f", &n); printf("%.3f", sinus(n)); return 0; }
这段代码实现了一个用泰勒级数计算正弦函数近似值的程序。它先将角度从度转换为弧度,然后通过循环累加级数项直到项足够小。

- 你的 `floatabs` 函数可以简化,因为当 `y>=0` 时直接返回 `y` 即可,不需要 `else` 分支。
- 在 `sinus` 函数中,变量 `sin` 的初始值设置可能有问题。检查一下:你希望用泰勒级数的第一项开始循环,但当前 `sin` 初始化为 `xrad`,而 `sum` 也初始化为 `xrad`,这可能导致第一项被重复计算或循环条件判断不准确。思考一下循环开始前各项应该是什么状态。