C中的代码不会打印出答案吗?

时间:2014-02-12 21:36:46

标签: c

我正在尝试使用泰勒系列和另一个系列输入x的值和n的值作为查找自然对数的术语数。问题是我的输出没有显示,只是在输入值时显示空格。请帮忙!

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(int argc, char **argv){

    double x = atof(argv[1]);
    double i;
    double y;
    double result2;
    double result;
    double error1; 
    double error2;
    double sum;
    int n = atof(argv[2]);

    if( x <= 0){
        printf("Invalid argument\n");
        exit (1);
    }

    if(abs(x-1) <= 1 && abs(x-1) !=0){
        for (i = 1; i <= 1; i++){
            result -= pow((x-1), i )/ i;
        }
    }       
    else{
        for(i =1; i <=n; i--){
            result += 1/(i * pow((y),i));
        }
    }


    for(i = 0; i <=n; i+=2){

        y = (x-1)/(x+1);
        sum += pow((y),i) * (1 / (1+i));
        result2 = sum * 2 * y;
    }


    error1 = result - log(x);
    error2 = result2 - log(x);

    printf("Taylor series: ln(%lf) ~= %lf\n", x, result);
    printf("    Error: %lf\n", error1);
    printf("Other series: ln(%lf) ~= %lf\n", x, result2);
    printf("    Error: %lf\n", error2);

    return 0;

}

1 个答案:

答案 0 :(得分:2)

您正在使用y而未初始化它。在程序中使用它之前先将其初始化。特别是这一行

result += 1/(i * pow((y),i));
当它为空时,

将尝试使用y。

还有循环

for (i = 1; i <= 1; i++)  

不是那么有效,因为它只迭代一次。