c语言输入一个正整数n,求数列1+1/2-2/3+3/5-5/8+8/13-……的前n项和
时间: 2023-09-21 09:06:55 浏览: 100
```c
#include <stdio.h>
int main() {
int n;
printf("请输入正整数n:");
scanf("%d", &n);
double a = 1, b = 1; // 第一项:a/b = 1/1
double sum = a / b;
for (int i = 2; i <= n; i++) {
double c = a + b, d = a + b + b; // 第i项:c/d = (a+b)/(a+b+b)
a = c, b = d; // 更新a和b
sum += (i % 2 == 0 ? -1 : 1) * (c / d); // 根据奇偶性加上或减去该项
}
printf("前%d项和为:%.6f\n", n, sum);
return 0;
}
```
相关问题
用c语言输入一个正整数n,求数列 1 + 1/2 - 2/3 + 3/5 - 5/8 + 8/13 - ..........的前 n 项和。
```c
#include <stdio.h>
int main()
{
int n;
double a = 1, b = 1, c = 0, sum = 1;
printf("请输入正整数n:");
scanf("%d", &n);
for (int i = 2; i <= n; i++) {
c = a + b;
if (i % 2 == 0) {
sum -= c / (b + c);
} else {
sum += c / (a + c);
}
a = b;
b = c;
}
printf("前%d项和为:%.6lf", n, sum);
return 0;
}
```
解释:
此题需要用到斐波那契数列和交错求和的知识,即:
F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2 (n ≥ 2)
1 - 1/2 + 2/3 - 3/5 + 5/8 - 8/13 + ... = F0/F1 - F1/F2 + F2/F3 - F3/F4 + F4/F5 - F5/F6 + ...
所以,我们可以使用循环来计算每一项的值,然后根据奇偶性来确定符号,并将其加入到总和中。在计算每一项时,需要用到斐波那契数列中相邻两项的和。
代码中,我们使用 a、b、c 分别表示相邻的三项,sum 为总和。循环从第二项开始,每次计算当前项 c,根据奇偶性决定符号并将其加入到总和中。然后将 b 赋值给 a,将 c 赋值给 b,继续循环计算下一项。最终输出总和。
写一个c语言程序,输入一个正整数n,求数列1+1/2-2/3+3/5-5/8+8/13-……的前n项和
#include<stdio.h>
int main()
{
int n;
double a=1,b=1,c=0,sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
sum+=a/b;
c=a;
a=a+b;
b=c+b;
//求出下一个分数的分子与分母
}
printf("%.2lf",sum);
return 0;
}
阅读全文