 太感谢各位了,我真的很感动,给我以后的学习有了很大的动力(这不是灌水!),
太感谢各位了,我真的很感动,给我以后的学习有了很大的动力(这不是灌水!),我试过了cordier做得可以 5楼写得很详细 也比较易懂 但不知为什么运行得到却运算不到噢

我来给一个更好的吧!
//==============================================================
// 程序:实现sin的功能(模拟sin函数)
// 公式:sin(x)=x-x3/3!+x5/5!-...(-1)n-1*x2n-1/(2n-1)!+...(0<x<∞,n=1,2,...)
// 作者:seeker 
// 误差极小。
//===============================================================
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define Pi 3.14159265358979323846  //定义Pi值
//--------------------------------------------
void main()
{
   float x;       //角度
   double sum;    //计算结果
   double temp;   //保存原始x值,仅用来提示和对比计算.
   double a;      //x的幂数
   double temp1;  //分子
   double temp2;  //分母,即a的阶乘
   double TrueValue; //真实值
   const double e=1.0e-15; //精度
   while(1) //不断循环
   {
     printf("输入x的值(角度):");
     scanf("%f",&x);
     temp=x; 
     x=x*Pi/180; //将角度转为弧度
     temp1=x;  //赋初值
     temp2=a=1; 
     sum=x; 
     do  //计算模拟值
  {
       a=a+2;  //幂是奇数,所以+2
       temp2=a*(a-1)*temp2;  //分母前一项跟后一项的关系 
       temp1=temp1*(-x*x);   //分子前一项跟后一项的关系
       sum=sum + temp1/temp2; //累加
  }while(fabs(temp1/temp2)>e); //循环条件
     TrueValue=sin(x);//计算真实值
     printf("近似值:mysin(%.2f)=%.20f\n",temp,sum);
     printf("准确值:sin(%.2f)=%.20f\n",temp,TrueValue);
  printf("误差:%.20f\n\n",sum-TrueValue);
   }
}
[此贴子已经被作者于2006-3-3 18:55:41编辑过]
