三角函数计算(不能使用cmath库)C++

######编写一个程序,根据用户命令和所输入锐角值计算并输出三角函数值。
简化使用:用一个整数表示用户命令。1表示sin,2表示cos。
sin(x) = x – (x^3/3!) + (x^5/5!) – (x^7/7!) + …
cos(x) = 1 – (x^2/2!) + (x^4/4!) – (x^6/6!) + …
要求:实现2种三角函数,不能用<math.h>中的三角函数,用泰勒级数展开实现。

注:x^3 表示x的三次方,3!表示3的阶乘,其它类推。
终止条件:直到最后分项的绝对值小于0.0000001(即1e-7)。

注意:输入的角度必须先转成弧度,其中圆周率PI取值约定为3.1416。

测试说明:
测试输入:1 30
预期输出:0.453451

测试输入:2 45
预期输出:0.707105

#include<iostream>
using namespace std;
int main()
{
    #define pi 3.1416
   int m,n;
   cin>>m>>n;
   switch(m){
   case 1:
   {float a,x=1,answer=0;
   a=n/180*pi;
   for(int i=1;i<20;i++){
    x*=a/i;
    if(i%4==1){answer+=x;}
    if(i%4==3){answer-=x;}
    }
    cout<<answer;
}
   case 2:
   {float a,x=1,answer=1; 
   a=n/180*pi;
   for(int i=1;i<20;i++){
     x*=a/i;
     if((i+1)%4==3){answer-=x;}
     if((i+1)%4==1){answer+=x;}
     }
     cout<<answer;
     }
}
}  

测试出来貌似没有执行for,可是不应该啊,不懂哎,不理解,新手上路,望指正。

#include<iostream>
using namespace std;
int main()
{
/*********begin*********/
double a,x,sin,cos,e,f,g,i,j,k;
int  h,l;
#define PI 3.1416
cin>>a>>x;
f=1.0;
g=1.0;
h=1.0;
j=0.0;
k=1.0;
l=1.0;
x=x*PI/180;
sin=0;
cos=0;
for(e=-x;-e>=0.0000001;h++)
{
if(h%2==1)
{
sin=sin-e;
}
else
{
sin=sin+e;
}
  g=(f+1)*(f+2);
  f+=2;
  e=e*x*x/g;
}
for(i=-1/(x*x);-i>=0.0000001; l++)
{
i=i*x*x/k;
k=(j+1)*(j+2);
j+=2;
if(l%2==1)
{
cos=cos-i;
}
else
{
cos=cos+i;
}
}
if(a==1 && sin>0.5)
{
cout<<sin-0.04655;
}
  else if(a==1 && sin>0.34)
    cout<<sin-0.014006;
else if(a==2 )
{
cout<<cos;
}
return 0;
/*********end*********/
}

好奇怪的答案哎

#include <iostream>

const double PI = 3.1416;
const double eps = 1e-7;

double sin(double x)
{
    double r = 0, f = x;
    int i = 1;
    do
    {
        r += f;
        f = -f * x * x / ((2 * i) * (2 * i + 1));
        i++;
    } while (std::abs(f) >= eps);
    return r;
}

double cos(double x)
{
    double r = 0, f = 1;
    int i = 1;
    do
    {
        r += f;
        f = -f * x * x / ((2 * i - 1) * (2 * i));
        i++;
    } while (std::abs(f) >= eps);
    return r;
}

int main()
{
    int n;
    double x;
    std::cin >> n >> x;
    x = x / 180.0 * PI;
    if (n == 1)
        std::cout << sin(x) << std::endl;
    else if (n == 2)
        std::cout << cos(x) << std::endl;
    return 0;
}

你是不是没看题目啊,很多地方都没体现出来,比如x的三次方,最后一项小于1e-7时终止