#include <stdio.h>
#include <stdlib.h>
#define pi 3.1415926
//第七题
double mysin(double x);
double myabs(double x);
void show_sin_table(int,int);
int main( )
{
show_sin_table(45,90);
show_sin_table(135,180);
return 0;
}
//定义show_sin_table函数。功能是打印三角函数对应表格
void show_sin_table(int min_angle,int max_angle)
{
int i;//定义表格的横坐标
int j;//定义表格的纵坐标,对应的角度为i*10+j
double angle;
printf("%d°到%d°的sin值表格如下:\n",min_angle,max_angle);
for(i=min_angle/10;i<=max_angle/10;i++)
{
printf("%6d",i);//保持和三角函数值的打印对齐
}
printf("\n");
for(j=0;j<=9;j++)
{
printf("%3d ",j);
for(i=min_angle/10;i<=max_angle/10;i++)
{
angle=(i*10+j);
if(angle>=min_angle&&angle<=max_angle) //只打印在角度范围内的sin值
printf("%4.3lf ",mysin(angle*pi/180));
else
printf(" ");//打印空格占位置
}
printf("\n");
}
}
//下面定义mysin函数,输入弧度值,根据泰勒展开求出sin值
double mysin(double x)
{
int i=3,n=-1;
double t,x_pow=x;
double sin=x;
double fact=1;
do
{
fact*=i*(i-1);
x_pow=x_pow*x*x;
t=x_pow*n/fact;
sin+=t;
i+=2;
n=-n;
}while(myabs(t)>=1e-5);
return sin;
}
//myabs函数,求绝对值函数
double myabs(double x)
{
double r;
if(x>=0)
r=x;
else
r=-x;
return r;
}