c语言循环题目
- 已知sinx的近似计算公式如下sin x=x- x3/3! + x’/5!-x7/7!+.+(-1)n-1x2n-1/(2n-1)!其中x为弧度,n为正整数。编写程序根据用户输入的x和n的值,利用上述近似计算公式计算sinx的近似值,要求输出结果小数点后保留8位
int main() { int n, j, i; int symbol = 1; double x, sum = 0, all = 0; scanf("%d %lf", &n, &x); for (i = 0; i < n; i++) { // 计算分母的阶乘 (2i+1)! int num1 = 1; for (j = 1; j <= 2 * i + 1; j++) { num1 *= j; } // 计算分子的次方 x^(2i+1) double num2 = 1; for (j = 0; j < 2 * i + 1; j++) { num2 *= x; } sum = symbol * num2 / num1; all += sum; symbol = -symbol; // 在每次迭代开始时更新符号 } // 输出sin(x)的近似值,保留8位小数 printf("%.8lf\n", all); return 0; }
- 已知e”的近似值可由下面公式计算得出:ex=1 + x/1! + x²/2! + xЗ/3! + .x"/n!给定x和n,利用上述公式求得ex的近似值。
【输入形式】从控制台输入小数x,和整数n(n>=1),用空格隔开。
int main() { double x, y = 1, sum = 1; int i, n; scanf("%lf %d", &x, &n); for (i = 1; i <= n; i++) { // 计算x的i次方(只计算一次,而不是在每次迭代中都重新计算) double a = 1; for (int j = 0; j < i; j++) { a *= x; } // 计算i的阶乘的倒数 double b = 1; for (int j = 1; j <= i; j++) { b /= j; } // 将当前项加到和中 y = a * b; sum += y; } printf("%lf\n", sum); // 输出结果 return 0; }