具体代码,如下:
#include <stdio.h>
#include <math.h>
double funcos( double e, double x );
int main()
{
double e, x;
scanf("%lf %lf", &e, &x);
printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
return 0;
}
double funcos( double e, double x )
{
int i=0,j=0,k;
double sum =0;
double factorial = 1;
while(1)
{
if(j==0)
factorial = 1;
else
{
for(k=1; k<=j; ++k)//求j的阶乘
{
factorial *= k;
}
}
if( (pow(x,j)/factorial) < e)//判断最后一项与e的关系
{
sum += ( pow(-1,i)*pow(x,j) )/factorial;
printf("%f\n",sum);
break;
}
sum += ( pow(-1,i)*pow(x,j) )/factorial;
printf("%f\n",sum);
i++;
j += 2;
factorial = 1;
}
return sum;
}
问题是:
输出时,打印了8位小数。即main函数中打印时%.6f没有起作用
你可以单独用 gcc 6.5.0 这个版本测试下,VC++ 没有问题。