double x;
int n;
double fun(double x,int n);
printf("("%lf,%d",&x,&n);
printf("cos(%lf)=%lf\
可以使用循环来实现,从第2项开始循环计算, 直到 第2n项结束,每次递增2,然后再循环内部,再使用分别求每一项的值,再把每一项累计到和中,计算完成再返回和即可。
参考链接:
#include <stdio.h>
#include <math.h>
double fun(double x,int n){
int i;
double numerator = 1 ;// 分子
double denominator = 1;//分母
int flag=1; //符号位
double single = flag*numerator/denominator; // 第一项的值
double sum=0; // 和
sum+=single; // 把第一项累加到和中
// printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum);
for(i=2;i<=2*n;i+=2){ // 第二项从分子从2的阶乘开始, 每次递增2,到2n结束
numerator*=x*x;// 分子每次累乘x的平方
denominator=1; //每一项的分母 计算前初始化为1
for(int j=1;j<=i;j++){ // 计算当前项的阶乘
denominator*=j;
}
flag=-flag; // 符号为变化
single = flag*numerator/denominator; // 每一项的值为 符号位乘以分子再除以分母
sum+=single; // 把当前项累加的和中
// printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum);
}
return sum; // 返回和
}
int main(void){
double x;
int n;
// double fun(double x, int n);
printf("Please enter x,n:");
scanf("%lf,%d",&x,&n);
// printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum);
printf("cos(%lf)=%lf\n",x,fun(x,n));
return 0;
}