为什么我的程序不能打印正确的值?

时间:2014-11-18 19:38:40

标签: c linux clang

我写了这个应该计算数字的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;
}

1 个答案:

答案 0 :(得分:2)

您永远不会在for函数中输入sen循环,因为您检查auxi是否大于tol,但auxi永远不会被初始化!< / p>

同样,for循环中的n对于condtion没有意义。