我写了这个应该计算数字的sin的程序,当我在x值上输入值1.57而在公差值上输入0.00005时,应该说:" 1.57的罪是1.000003。 #34;,而是它打印:" 1.57的罪是0.000000。"我尝试在所有公式上添加随机浮点数(比如乘以1.0),但没有。我在Linux环境中运行一个clang编译器,如果有帮助的话。任何帮助将不胜感激
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int fatorial(int n){
int f=1, t;
for(t=n;t>1;t--){
f=f*t*1;
}
return f;
}
float sen(float x, float tol){
float res=0, aux=0, auxi;
int n=0;
for(n=1;auxi>tol; n++){
res=res+(pow(-1,n+1))*((pow(x*1,2*n-1))/fatorial(2*n-1));
aux=res;
if((aux-res)>0){
auxi=aux-res;
}
else{
auxi=res-aux;
}
}
return res;
}
int main(){
float yo=0, tol, res;
printf("What's the value of x? ");
scanf(" %f", &yo);
printf("What's the value of the tolerance? ");
scanf(" %f", &tol);
res=sen(yo, tol);
printf("The sin of %.2f is %f.\n", yo, res);
return 0;
}
答案 0 :(得分:2)
您永远不会在for
函数中输入sen
循环,因为您检查auxi
是否大于tol
,但auxi
永远不会被初始化!< / p>
同样,for循环中的n
对于condtion没有意义。