吾乃小白,如果有错,欢迎指正。
#include<stdio.h>
#include<math.h>
double factorial(int);
double mySin(double);
double myPow(double,int);
void main(){
//函数以弧度为难为 如果是角度则要 乘上3.1415926 后除180 。直接传入角度可能会越界
printf("%f\n",mySin(90 * 3.1415926 /180));
printf("------------system library function-----------\n");
printf("%f\n",sin(90 * 3.1415926 /180));
}
double mySin(double x){
double sum = x;
//符号切换
int define = 1;
for(int i = 3; ; i += 2){
if(define == 1){
sum = sum - pow(x,i)/factorial(i);
define = 0;
}else{
sum = sum + pow(x,i)/factorial(i);
define = 1;
}
if(pow(x,i)/factorial(i) < 1e-5)break;
}
return(sum);
}
double factorial(int n){
//求一个数的阶乘
double temp = 1.0;
for(int i = 2; i <=n ;i++){
temp = temp * i;
}
return(temp);
}
double myPow(double x,int y){
//求一个数的次方
double temp = 1;
for(int i = 1; i <= y;i++){
temp = x * temp;
}
return(temp);
}