按下面要求编写程序:(2008年春) ①定义函数fact(n)计算n的阶乘:n!=1*2*3*……*n,函数的返回值类型是double。 ②定义函数cal(m,n)计算累加和:s=m+(m+1)+(m+2)+……+n,函数的返回值类型是double。 ③定义函数main(),输入整数n,计算并输出下列算式的值。该算式中,每一项的分子是累加和,要求调用函数cal(m,n)计算累加和:每一项的分母是阶乘,要求调用函数fact(n)计算n!。
时间: 2024-01-22 08:21:23 浏览: 56
下面是代码实现:
```c
#include <stdio.h>
double fact(int n)
{
double result = 1.0;
int i;
for (i = 1; i <= n; i++) {
result *= i;
}
return result;
}
double cal(int m, int n)
{
double result = 0.0;
int i;
for (i = m; i <= n; i++) {
result += i;
}
return result;
}
int main()
{
int n;
double sum = 0.0;
scanf("%d", &n);
int i;
for (i = 1; i <= n; i++) {
sum += cal(i, n) / fact(i);
}
printf("%.2lf\n", sum);
return 0;
}
```
程序流程:
1. 定义了计算阶乘的函数 `fact(n)` 和计算累加和的函数 `cal(m, n)`,参数分别为起始值和结束值。
2. 在 `main()` 函数中,首先输入整数 `n`。
3. 然后使用 `for` 循环计算每一项的值,调用 `cal()` 函数计算分子的累加和,调用 `fact()` 函数计算分母的阶乘,并累加到 `sum` 变量中。
4. 最后将 `sum` 的值输出,并保留两位小数。
注意事项:
1. 阶乘的结果可能非常大,需要使用 `double` 类型来存储。
2. 累加和的数据类型也需要使用 `double`,以避免精度丢失。
阅读全文