在线编译器 C

#include <stdio.h> int floatabs(elem){ if(elem<0){ elem=-elem; } } float sinus(float x) { float pi=3.1415926f; float xrad=x*pi/180.0f; float elem = xrad,fact=1,xpow=xrad; int n=1,znak=+1; float sum=0.0; while(floatabs(elem)>0.0001){ sum+=elem; fact*=(i+1)*(i+2); znak+=2; xpow*=xrad*xrad; i+=2; elem=znak*(xpow/fact); } } int main() { int x,answer; scanf("%lf", &x); answer=sinus(x); printf("%.3f",answer); return 0; }
这段代码试图计算正弦函数的值,但存在多个错误。主要问题是变量未声明、类型不匹配、函数定义不完整,以及逻辑错误。

- 函数 `floatabs` 没有返回值,但被用于条件判断。C语言中,如果函数没有明确返回值,会返回不确定的值,导致循环条件不可靠。你需要确保这个函数返回一个 `float` 类型的绝对值。
- 在 `sinus` 函数中,变量 `i` 没有声明就直接使用。你需要先声明 `i` 并正确初始化它,否则编译会报错。同时,`znak` 的更新方式也不对,它应该交替为 +1 和 -1,而不是每次加2。