关于sin x = 1/x!-x/3!+x/5!-x/7!+……的c程序

 

#include  < stdio.h >
#include 
< math.h >
#define  PI 3.1415926

float  a( float  x1,  int  n1)     /* control only one data item value */
{
   
float  s1  =   1.0 ,s2  =   1.0 ,s;
   
int  i;
   
for (i  =   1 ; i  <=   2 * n1 - 1 ; i ++ )
   {
      s1 
*=  x1;
      s2 
*=  i;
   }
   s 
=  s1 / s2;
   
if (n1 % 2   ==   0 return   - s;
   
return  s;
}

void  main( void )
{
   
int  n  =   1 ;
   
float  x, x0, sum  =   0.0 ;
   printf(
" x =  " );
   scanf(
" %f " , & x);

   x0 
=  x * PI / 180.0 ;       /* 转化为弧度 */
   
while (fabs(a(x0, n))  >   0.000001 )   /* 保证精确度 */
   {
      sum 
+=  a(x0, n);
      n
++ ;
   }
   printf(
" sin(x) = %f " , sum);
   getch();
}

关于这个程序的编写,关键是所用数字的类型。以及求sin(x)时,每一项的数据类型。在结合他人的程序和自己的实践,我选择了float型的数据。其中函数float a(float  x1, int  n1)表示的是求每一个子项的值。例如:x/1!,x/2!等的值,n为变量,来控制精确度。如下代码(经过win-tc调试通过); 

 

你可能感兴趣的:(关于sin x = 1/x!-x/3!+x/5!-x/7!+……的c程序)