酷代码 AI
菜单

6-2 使用函数求余弦函数的近似值 分数 10 全屏浏览 切换布局 作者 C课程组 单位 浙江大学 本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e: cos(x)=x 0 /0!−x 2 /2!+x 4 /4!−x 6 /6!+⋯ 函数接口定义: double funcos( double e, double x ); 其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。 裁判测试程序样例: #include <stdio.h> #include <math.h> double funcos( double e, double x ); int main() { double e, x; scanf("%lf %lf", &e, &x); printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); return 0; } /* 你的代码

```c #include <stdio.h> #include <math.h> double funcos( double e, double x ); int main() { double e, x; scanf("%lf %lf", &e, &x); printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); return 0; } double funcos( double e, double x ) { double sum = 1.0; double term = 1.0; int n = 2; int sign = -1; while (1) { double fact = 1.0; for (int i = 1; i <= n; i++) { fact *= i; } term = sign * pow(x, n) / fact; if (fabs(term) < e) { break; } sum += term; sign = -sign; n += 2; } return sum; } ``` 代码解释 1. 变量初始化: - `sum` 初始化为 `1.0`,因为余弦级数的第一项是 $\frac{x^0}{0!}=1$。 - `term` 也初始化为 `1.0`,表示当前计算的项,用于后续循环中与误差 `e` 比较。 - `n` 初始化为 `2`,代表当前项的指数,从第二项开始,后续每次循环增加 `2`。 - `sign` 初始化为 `-1`,用于控制每一项的正负交替。 2. 循环计算每一项: - 在 `while (1)` 无限循环中,每次先计算当前项的阶乘 `fact`,通过 `for` 循环从 `1` 累乘到 `n`。 - 然后根据公式 `term = sign * pow(x, n) / fact` 计算当前项的值。 - 检查当前项的绝对值是否小于误差 `e`,如果是,则跳出循环。 - 若不满足条件,将当前项 `term` 累加到总和 `sum` 中,更新符号 `sign` 为其相反数,指数 `n` 增加 `2`。 3. 返回结果: - 循环结束后,返回 `sum`,即满足误差要求的余弦函数近似值。 [2025-12-10 22:36:51 | AI问答 | 552点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多