C++的一道题 和费波那契有关 棒棒忙

来源:百度知道 编辑:UC知道 时间:2024/05/31 04:21:21
c语言怎么写数列为2/1,3/2,5/3,8/5,...的前n项和?
下面的哪错了?

#include<stdio.h>
int main(void)
{
int x,x1,x2,i,n;
double sum;
x1=2;
x2=1;
x=0;
sum=0;
printf("Enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++){
sum=sum+x1/x2;
x=x1+x2;
x2=x1;
x1=x;
}
printf("%.2lf",sum);
return 0;
}

//小错误,编译通过了~
#include<stdio.h>
int main(void)
{
int x,x1,x2,i,n;
double sum;
x1=2;
x2=1;
x=0;
sum=0;
printf("Enter n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+(x1+0.0)/x2; //这里有问题,x1/x2返回值是整数。因为x1,x2都是整数。所以默认返回整数。(x1+0.0)为double型,所以返回也为double。
x=x1+x2;
x2=x1;
x1=x;
}
printf("%.2lf",sum);
return 0;
}

//我写的源码
//c语言写数列为2/1,3/2,5/3,8/5,...的前n项和
//建议你再看看书,你的代码可读性太差了点吧?多给点分吧 呵呵!
//v c++ 6.0环境
#include<stdio.h>

int sumfun(int n);//函数声明
void main()
{
int n;
double sum=0;
int i;
printf("输入N:");
scanf("%d",&n);
for(i=0;i<n;i++)
sum+=(double)sumfun(i+2)/sumfun(i+1);
printf("%lf",sum);//输出双精度的运算结果,如感觉小数点后位数过多请自行调整!

}

int sumfun(int n)//费波那契