在线编译器 C

#include <stdio.h> float 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` 没有返回值,而且参数类型未声明。
- 循环中使用了未声明的变量 `i`。
- `znak` 的更新逻辑错误,应该交替正负号。
- `main` 函数中 `scanf` 格式符与变量类型不匹配,且 `answer` 类型应为 `float`。

- 检查 `floatabs` 函数:它应该返回 `float` 类型的绝对值,但当前没有 `return` 语句,且参数 `elem` 没有类型声明。
- 检查循环中的变量 `i`:它没有被初始化或声明,而 `fact` 和 `xpow` 的更新依赖于 `i` 的值。