写一个函数,其形式参数(输入值)是一个整数,返回值是这个整数的阶乘,然后写一个程序,调用这个函数,计算通过scanf输入的任意数值,计算公式y=ex和y=sin(x)结果。 其中π取3.14,指数函数和正弦函数各自计算20阶(到x20),更高阶的项和余项舍去。用c语言输出
时间: 2024-12-20 21:16:27 浏览: 8
首先,我们创建两个函数,一个计算阶乘,另一个分别计算指数和正弦函数。接着编写主函数,从用户那里获取输入,计算阶乘、指数和正弦值。
```c
#include <stdio.h>
#include <math.h> // 包含数学库,用于math.h中的阶乘和sin函数
// 计算阶乘
long long factorial(int n) {
long long fact = 1;
for (int i = 1; i <= n; ++i) {
fact *= i;
}
return fact;
}
// 指数函数,考虑到高阶项舍去,只保留前20项
double exp_series(int x) {
double result = 1;
for (int i = 0; i < 20; ++i) {
result += pow(x, i);
}
return result;
}
// 正弦函数,同样舍去高阶项
double sin_series(double x) {
double sum = 0;
for (int i = 0; i < 20; ++i) {
sum += pow(-1, i) * pow(x, (2 * i + 1)) / factorial(2 * i + 1);
}
return sum;
}
int main() {
int num;
// 读取用户输入
printf("请输入一个整数: ");
scanf("%d", &num);
// 计算阶乘
long long fact = factorial(num);
printf("输入整数 %d 的阶乘结果是: %lld\n", num, fact);
// 计算指数函数和正弦函数
double ex = exp_series((double)num);
double sin_x = sin_series(num * M_PI / 180); // 将角度转换为弧度
printf("e^%d 约等于: %.6f\n", num, ex);
printf("sin(%d * π/180) 约等于: %.6f\n", num, sin_x);
return 0;
}
```
在这个程序中,我们使用了泰勒级数近似的方式来计算指数和正弦函数,只保留了20项。当输入很大导致阶乘溢出时,你可以考虑使用高精度算法或者库,如gmp库。
阅读全文