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, 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; }
这段代码试图用泰勒级数计算正弦函数,但存在一个关键问题:循环条件中的变量 `sin` 在第一次判断时尚未被正确初始化。

- 循环条件 `while (floatabs(sin) > 0.0001)` 中,`sin` 在进入循环前没有被赋值,它的初始值是不确定的。这会导致循环可能直接跳过,或者进入无限循环。你需要确保在循环开始前给 `sin` 一个合理的初始值,或者调整循环结构,比如使用 `do-while` 循环。

- 另外,泰勒级数的每一项计算逻辑基本正确,但注意变量 `sin` 在循环中被重复使用,它既作为当前项的值,又作为循环条件判断的对象。建议明确区分“当前项”和“累加和”的变量名,避免混淆。