c语言题目 输入正整数n,求 S=2/1-3/2+5/3-8/5+…的前n项之和并输出该和值。

提示:正负项交替,当前项的分子是前一项分子与分母之和,当前项的分母是前一项的分子。
我写的好像从4就开始错,求大佬解答哪错了??
#include <stdio.h>
#include <stdlib.h>
提示:正负项交替,当前项的分子是前一项分子与分母之和,当前项的分母是前一项的分子。
我写的好像从4就开始错,求大佬解答哪错了??
int main()
{
double item=2;
float sum=0.0;
int i=1;
int n;
int sign=1;
printf("Please input a intenger n:\n");
scanf("%d",&n);

do
{
sum=sum+sign*(item *1.0/i);
item=item+i;
i++;
sign=-sign;
} while(i<=n);
printf("sum=%lf",sum);
system("pause");
return 0;
}
有一段话打了两次,请忽略对不起。。。

第1个回答  2018-11-20
逻辑有些混乱,需要好好整理一下思路,修改如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
double t1=1,t2=2,sum=0.0,t;//统一数据类型
int i=0,n,sign=1;
printf("Please input a intenger n:\n");
scanf("%d",&n);

do{
sum=sum+sign*(t2/t1);
t=t2+t1;
t1=t2;
t2=t;
sign=-sign;
++i;
}while(i<n);
printf("sum=%lf",sum);
system("pause");
return 0;
}本回答被网友采纳
第2个回答  2018-11-20
#include<stdio.h>
#include<stdlib.h>
int main()
{ double a=2,b=1,c;
double sum=0.0;
int i=1;
int n;
int sign=1;
printf("Please input a intenger n: ");
scanf("%d",&n);
do
{ sum=sum+sign*(a/b);
c=a+b;
b=a;
a=c;
i++;
sign=-sign;
}
while(i<=n);
printf("sum=%lf",sum);
system("pause");
return 0;
}

相似回答