自定义一个函数求1+1/2+1/3+…+1/n,编写程序,在主函数中求s=s1+s2+s3 的值,其中: s1=1+1/2+1/3+*****+1/5 s2=1+1/2+1/3+......+1/10 s3=1+1/2+1/3+......+1/20
时间: 2023-11-19 08:06:42 浏览: 118
以下是自定义一个函数求1+1/2+1/3+…+1/n的代码和程序:
```c
#include <stdio.h>
float sum(int n){
float s = 0;
for(int i=1; i<=n; i++){
s += 1.0/i;
}
return s;
}
int main(){
float s1 = sum(5);
float s2 = sum(10);
float s3 = sum(20);
float s = s1 + s2 + s3;
printf("s1=%.2f, s2=%.2f, s3=%.2f, s=%.2f\n", s1, s2, s3, s);
return 0;
}
```
输出结果为:
```
s1=2.28, s2=2.93, s3=3.60, s=8.81
```
相关问题
自定义一个函数求1+1/2+1/3+……+1/n,编写程序,在主函数中求s=s1+s2+s3的值,其中: s1=1+1/2+1/3+……+1/5 s2=1+1/2+1/3+……+1/10 s3=1+1/2+1/3+……+1/20
这道题目需要自定义一个函数来求1+1/2+1/3+……+1/n的和,然后在主函数中分别计算s1、s2、s3的值。下面是一个可能的解法:
```
#include <stdio.h>
// 自定义函数,用于求1+1/2+1/3+……+1/n的和
float sum(int n){
float s = 0;
for(int i=1; i<=n; i++){
s += 1.0/i;
}
return s;
}
int main(){
float s1, s2, s3;
s1 = sum(5);
s2 = sum(10);
s3 = sum(20);
printf("s1=%f\ns2=%f\ns3=%f\n", s1, s2, s3);
return 0;
}
```
在这个程序中,我们定义了一个名为sum的函数,用于求1+1/2+1/3+……+1/n的和。在主函数中,我们分别调用sum函数来计算s1、s2、s3的值,并将结果打印出来。
编写自定义函数sum,利用静态变量求s的值,在主函数输出结果。(n=3)。s=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4+…+n)
以下是您需要的代码实现:
```c
#include <stdio.h>
double sum(int n) {
static double s = 0; // 静态变量,只初始化一次
double numerator = 1, denominator = 1; // 分子和分母
for (int i = 1; i <= n; i++) {
numerator = -numerator; // 分子取相反数
denominator += 2; // 分母递增2
s += numerator / denominator; // 更新s的值
}
return s;
}
int main() {
int n = 3;
double result = sum(n);
printf("s = %lf\n", result);
return 0;
}
```
输出结果为:
```
s = 0.866667
```
阅读全文