#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define pi 3.1415926
//第七题
double mysin(double x);
double myabs(double x);
int main( )
{
printf("sin(π/2)的值为%.5f\n", mysin(pi/2));
printf("sin(56°)的值为%.5f\n", mysin(56*pi/180));
return 0;
}//下面定义mysin函数,求sin值
double mysin(double x)
{
int i=3,n=-1;
double t=x;
double sin=x;
double fact=1;
printf("%lf\n",sin);
while(myabs(t)>=1e-5)
{
fact*=i*(i-1);
t*=(n*x*x)/fact;
sin+=t;
i+=2;
n=-n;
}
return sin;
}
//下面定义myabs函数
double myabs(double x)
{
double r;
if(x>=0)
r=x;
else
r=-x;
return r;
}
上述代码存在着错误,编写的时候有点恍惚了,没有仔细调试,下面给出老师给出的标准代码
#include<stdio.h>
#define pi 3.1415926
double mysin(double x);
double myabs(double x);
int main( )
{
printf("sin(π/2)的值为%.5f\n", mysin(pi/2));
printf("sin(56°)的值为%.5f\n", mysin((56.0/180)*pi));
return 0;
}
//下面定义mysin函数,求sin值
double mysin(double x)
{
double sum=x,x_pow=x,item,fact=1;
int n=1,sign=1; //定义变量时赋初值,已经将第一项考虑到累加和sum中
do
{
fact=fact*(n+1)*(n+2); //fact用于表示阶乘,在公式中作分母
x_pow*=x*x; //x_pow是分子中用于表示阶乘,在公式中作分母
sign=-sign; //确定即将要累加的这一项的符号
item =x_pow/fact*sign; //计算出要累加的项
sum+=item; //将该项累加上去
n+=2;
}while(myabs(item)>1e-5);
return sum;
}
//下面定义myabs函数
double myabs(double x)
{
return ((x>=0)?x:-x);
}