#include <stdio.h>
#include <math.h>
const double pi=3.14159;
int factorial_function(int n){//求阶乘
int i;
int sum=1;
for(i=1;i<=n;i++)
sum=sum*i;
return sum;
}
float power_function(float x,int n){//求幂函数
float num=1;
for(int i=0;i<n;i++){
num*=x;
}
return num;
}
float sinf(float x){
x=x*pi/180;
int i;
float sinx;
float tmp=0;
for(i=0;;i++){
tmp=sinx;//记录前一个sinx
sinx += power_function(x,2*i+1)/factorial_function(2*i+1)*power_function(-1,i);
if(fabs(sinx-tmp)<1e-6){break;}//判断是否达到精确度
}
return sinx;
}
int main(){
float x;
float sinx;
printf("请输入x:\n");
scanf("%f",&x);
sinx=sinf(x);
printf("sinx=%f",sinx);
}
float sinx;没有赋初始值为0
factorial_function是求阶乘,用int很容易溢出