C语言 这个函数怎么编???急,求教

1. Calculate the value of sin()until the last term is smaller than 10-7eg:sin30=0.5
2025-04-17 01:46:44
推荐回答(3个)
回答1:

这个是实习时编的程序,交上去了,楼主看看,合适的话就纳为满意答案哦。
谢谢啊。
#include
void main()
{ int f=1;
double i,x,j,a=0.0,m=0.0;
printf("输入x=");
scanf("%lf",&x);
i=1,j=x,m=x;
while(m>1e-7)
{a+=f*m;
i*=(i+1)*(i+2);
j*=x*x;
m=j/i;
f=-f; }
printf("sinx=%lf\n",a);
}

回答2:

#include 
using namespace std;
double sin_item(double x, int n) // 计算每一项的值 
{
 double result = 1.0;
 
 for(int i = 1; i <= n; i++)
 {
  result *= x/i;
 }
 
 return result;
}
double sin(double x)
{
 double sum = 0.0;// 各项和
 double item;// 每项的值
 int n = 1;// 第n项
 int sign = 1;// 每一项的符号
 
 while((item = sin_item(x, n)) > 1e-8)// 计算每项的值,并把值大于1e-8的值加入sum
 {
  sum += sign*item;
  sign *= -1;// 符号反号
  n += 2;// n增加2
 }
 
 return sum;
}
int main(int argc, char* argv[])
{
 cout << sin(3.1415926/6) << endl;// 输出sin 30度的值
 
 return 0;
}

回答3:

int jc(int n)
{
if(n==0)
{
return 1;
}
int s=1;
for(int i=1;i<=n;i++)
{
s*=i;
}
return s;
}
double mysin(double a)
{
double s=0.0;
double s1=a;
int i=0;
while(fabs(s-s1)>0.0000001)
{
s1=s;
if(i%2==0)
{
s+=pow(a,2*i+1)/jc(2*i+1);
}
else
{
s-=pow(a,2*i+1)/jc(2*i+1);
}
i++;
}
return s;
}

这样就行了,~~~