f=x/1!+x^3/3!+x^5/5!+x^7/7!+...+x^(2n+1)/(2n+1)!
buhuixie bangmang xia![ 本帖最后由 小桥滴水 于 2011-11-24 11:02 编辑 ]
/* 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; }