输入x(单位为“度”),求cosx的近似值(cosx = 1-x2/2!+x4/4!-x6/6!+x8/8!+……,当某项的绝对值小于10-6时循环终止。)c代码实现写一个不用宏函数的代码
时间: 2023-09-10 22:15:19 浏览: 132
当然可以,以下是不使用宏函数的C代码实现:
```c
#include <stdio.h>
#include <math.h>
double factorial(int n) {
double result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
double cos_approx(double x) {
double result = 1.0;
double term = 1.0;
double power = x;
int i = 2;
while (fabs(term) > 1e-6) {
term *= -1.0 * power * power / (factorial(i) * factorial(i - 1));
result += term;
power *= x * x;
i += 2;
}
return result;
}
int main() {
double x = 30.0; // 求cos(30°)的近似值
double cos_x = cos_approx(x * M_PI / 180.0); // 将角度转换为弧度
printf("cos(%lf) = %lf\n", x, cos_x);
return 0;
}
```
在此版本的代码中,我们使用了一个名为factorial的函数,它使用for循环计算阶乘。使用阶乘函数来计算分母可以避免使用宏函数,并且使代码更具可读性。余下的代码与之前的版本类似。
阅读全文