【问题描述】 输入一个正整数n,输出 2/1+3/2+5/3+8/5 +.的前n项之和,保留2 该序列从第2 项起,每一项的分子是前一项分子与分母的和,分母是] 试编写相应程序。 【样例输入】 5 【样例输出] 8.39 写一个简单的c语言代码
时间: 2024-12-17 10:20:47 浏览: 5
c++求1+1/2+1/3+...+1/n
5星 · 资源好评率100%
这是一个动态规划的问题,可以使用循环和累加的方式来解决。你可以创建一个变量来存储当前项的分数,然后随着每次迭代更新这个分数。下面是一个简单的C语言函数来计算给定项数n的序列和:
```c
#include <stdio.h>
double fibo_sum(int n) {
if (n <= 0) {
return 0; // 如果n小于等于0,返回0
}
double a = 2.0 / 1.0; // 第一项
double b = 3.0 / 2.0; // 第二项
double sum = a + b;
for (int i = 3; i <= n; i++) {
double next_term = a + b;
a = b; // 更新a为旧的b值
b = next_term; // 更新b为新的项
sum += next_term; // 累加到总和上
}
return round(sum * 100) / 100.0; // 保留两位小数并返回结果
}
int main() {
int input_n;
printf("请输入项数n: ");
scanf("%d", &input_n);
double result = fibo_sum(input_n);
printf("前 %d 项之和约为: %.2f\n", input_n, result);
return 0;
}
```
当你运行这个程序并输入`5`时,它会输出`8.39`。注意这个函数假设了`n`是正整数。
阅读全文