一道C++编程题目~·fibonacci数列 会额外加分的

来源:百度知道 编辑:UC知道 时间:2024/06/30 21:42:31
求Fibonacci数列中不大于m的前n项和的最大值及n并输出。要求:
1) 定义函数fibo:用于求解并输出Fibonacci数列中不大于s的前n项和的最大值及n。fibo函数的原型如下:
void fibo( int s ); //s为形参
2) 在主函数中输入一个正整数m,调用fibo函数求解。fibo函数的调用形式为:fibo(m),即m作为实参。
整个程序的运行示例如下:
100↙
88 9
表示,fibonacci数列中不大于100的前n项和是前9项和,其值为88。
星期天之前帮我解决啊~~我要上交的

提示:ls 用的是C , 看好语言在写程序哦。

C++版;

#include <iostream.h>
using namespace std;

void fibo(int s)
{
int D=1,Dpre=1,sum=1,n=1,tmp=0;

do
{
n++;
tmp=Dpre;
Dpre=D;
D=D+tmp;
sum+=D;
} while(sum<=s);

cout<<sum-D+1<<'\t'<<n<<endl;
}

int main()
{
int s=0;
cin>>s;
fibo(s);

return 0;
}

//---------------------------------------------------------------------------
#include <stdio.h>

void fibo(int n)
{
int i=1,j=1,a=0,s=0,c=1,t;
while (s<n)
{
a=i+j;
i=a;
t=i;
i=j;
j=t;
s+=a;
++c;
}
s-=a;
printf("%d %d\n",s,c);
}
int main(void)
{
int m;
scanf("%d",&m);
fibo(m);
return 0;