hxd们能告诉我为啥输入1.5 3时的结果不是0.070117吗😭

#include <stdio.h>
#include <math.h>
int main()
{
double x,c,j=1.0;
int i,n;
scanf("%lf %d",&x,&n);
for(i=1,c=1.0;i<=(2n);i++)
{
j
=(2i)(2*i-1)*1.0;
c+=pow((-1),i)pow(x,(2i))*1.0/j;
};
printf("cos(%.6f)=%.6f",x,c);
return 0;
}

img

你的代码求阶乘明显不对。


#include <stdio.h>
#include <math.h>
int main() {
    double x,c,j=1.0;
    int i,n,k;
    scanf("%lf%d",&x,&n);
    c=1.0;
    for (i=1;i<=n;i++) {
        j=1.0;
        for (k=1;k<=2*i;k++) j*=(double)k;
        c+=pow(-1.0,i)*pow(x,2*i)/j;
    }
    printf("cos(%.6lf)=%.6lf",x,c);
    return 0;
}
//输入1.5 3
//输出cos(1.500000)=0.070117

2n
2i
?