Online Compiler C

#include <stdio.h> #include <math.h> float cosinus(float x) { float sum=0.0f; x = (x*3.14159)/180; float elem=1.0f; float fact=1.0f; float xpow=1.0f; int n=0; int znak=0; do{ sum+=elem; fact*=(n+1)*(n+2); xpow*=x*x; znak=-znak; n+=2; elem=znak*(xpow/fact); }while(fabs(elsm)>0.001f); return sum; } int main() { printf("%f",sum(45)); return 0; }
这段代码试图用泰勒级数计算余弦值,但存在多个错误。主要思路是:将角度转换为弧度,然后通过循环累加级数项直到项足够小。

- 第16行 `while(fabs(elsm)>0.001f);` 中变量名写错了,应该是 `elem` 而不是 `elsm`,这会导致编译错误。
- 第19行 `printf("%f",sum(45));` 调用了不存在的函数 `sum`,应该改为 `cosinus(45)`。
- 变量 `znak` 初始值为0,但第一次循环时 `znak = -znak` 后仍然是0,导致第一项符号错误。应该初始化为1或调整符号逻辑。