看看这个代码运行结果为什么是0

//利用泰勒公式求sin(x)的值。
#include
#include
#define esp 1e-5
void main()
{
    int n;
    double x,term,sum=0;
    scanf("%f",&x);
    term=x;
    n=1;
    while(fabs(term)>esp)
    {
        sum+=term;
        n+=2;
        term=term*(-1*x*x)/n/(n-1);
    }
    printf("sin(x)=%.20f",sum);
}

先讲点C语言常识。C语言对变量的类型要求很严格。对子程序的返回类型要求也颇多。这就导致如果变量定义,传递有错误,直接返回值为0。

举几个例子。

1,长浮点向整数转换

int a;

double b=0.42586;

a=(int)b;

printf(”a=d%”,a);

输出a=0;

2,强制取整函数INT

float f=0.786;

INT(f)值是0

float类型小数点后有效数字为6~7位。
你这都20位了,是不是超了?
换成double试试,有用记得采纳呐