for使用
SinX=X/1!-X^3/3!+X^5/5!-X^7/7!+……+(-1)n+1*X^(2n-1)/(2n-1)!
程序代码:/*
SinX=X/1!-X^3/3!+X^5/5!-X^7/7!+……+(-1)n+1*X^(2n-1)/(2n-1)!
*/
#include <stdio.h>
double pow(const double x, const int n);
double factorial(const int n);
int main(int argc, char* argv[])
{
double x; // 弧度
int n; // 求值项数
int sign = 0; // 正负号标志
double sin = 0.0; // 计算结果
double temp;
int i;
if (argc < 3)
{
printf_s("格式: %s x n\n", argv[0]);
printf_s("其中,x是弧度制角度,n是多项式项数,n=0不计算,结果为零。\n");
printf_s("举例 Sin 1.5 20\n");
return -1;
}
sscanf_s(argv[1], "%lf", &x);
sscanf_s(argv[2], "%d", &n);
if (n < 0)
{
printf_s("错误:n = %d\n", n);
return -2;
}
for (i = 1; i <= n; ++i)
{
sign = !sign;
temp = pow(x, 2 * i - 1) / factorial(2 * i - 1);
if (sign)
{
sin += temp;
}
else
{
sin -= temp;
}
}
printf_s("Sin(%.2f) = %.16f\n", x, sin);
return 0;
}
// 计算x^n
double pow(const double x, const int n)
{
int i;
double ret_value = 1.0;
for (i = 0; i < n; ++i)
{
ret_value *= x;
}
return ret_value;
}
// 计算n!
double factorial(const int n)
{
int i;
double ret_value = 1.0;
for (i = 1; i <= n; ++i)
{
ret_value *= (double)i;
}
return ret_value;
}