注册 登录
编程论坛 C++教室

拜托各位帮帮忙,看看哪里错了!新手求助,嘻嘻

DYONGJ 发布于 2012-11-23 18:47, 360 次点击
Problem description
  有一个数列,它的第一项为0,第二项为1,以后每一项都是它的前两项之和,试产生出此数列的前n项,并按逆序输出。
Input
  多行数据,每行一个整数n(n<=40),表示数列前n项。
Output
  按逆序输出此数列前n项,数据间用一个空格分隔,最后一个数据后面无空格。
 
#include<iostream>
using namespace std;
const int N=40;
int a[N]={0};
int main()
{
    int n;
    a[0]=0,a[1]=1;
    while(cin>>n)
    {
        N=n;
        for(int i=2,i<N,i++)
            a[i]=a[i-1]+a[i-2];
        cout<<a[N-1];
        for(int i=N-2,i>=0,i++)
            cout<<" "<<a[i];
        cout<<endl;
    }
    return 0;
}
6 回复
#2
w5277050902012-11-23 19:53
用一个递归函数就很方便了 。。。
如:
fun(int i)
{
    if(i=1||i=2)
return 1;
if(i=3)
return 2;
else
return fun(i-1)+fun(i-2);
}
#3
w5277050902012-11-23 20:12
程序代码:
#include<iostream>
using namespace std;
int fun(int i)
{
    if(i==1||i==2)
    {
        return 1;
    }
    else
    {
        return fun(i-1)+fun(i-2);
    }
}
int main()
{
    int a[40],i,j,n;
    cin>>n;
    cout<<endl;
    for(i=0,j=1;i<n,j<=n;i++,j++)
    {
        a[i]=fun(j);
        cout<<a[i]<<"\n";
    }
    for(i=0;i<n;i++)
    {
        cout<<" "<<a[i];
    }
    return 0;
}
#4
zxd5432012-11-23 23:53
#include<iostream>
using namespace std;
int main()
{
    int a[45]={0,1};
    int n,i;
    while(cin>>n)
    {
        for(i=2;i<=n;i++)//分号
            a[i]=a[i-1]+a[i-2];

        for(i=n;i>=0;i--)//第一个没空格 倒叙要--
        {
            if(i==0)
               cout<<a[i];
            else
               cout<<a[i]<<" ";
        }
        cout<<endl;   
    }
    return 0;
}
不能AC的话给网址
#5
wuxia1111112012-11-24 00:46
#include<iostream>
using namespace std;
const int N=40;// N已定义为常量,不可在变
int a[N]={0};
int main()
{
    int n;
    a[0]=0,a[1]=1;
    cout<<"请输入一个数:";
    while(cin>>n)
    {
      
        for(int i=2;i<N;i++)//里面为分号
            a[i]=a[i-1]+a[i-2];
        for(int j=N-1;j>=0;j--)
        {   
            cout<<" "<<a[j];
        }
        cout<<endl;
    }
    return 0;
 
}
#6
mmmmmmmmmmmm2012-11-26 10:27
对楼主的程序进行了 修正 供参考哈

程序代码:
#include<iostream>
using namespace std;
const int N=40;
int a[N]={0};
int main()
{
    int n;
    a[0]=0,a[1]=1;
    while(cin>>n)
    {
        
        for(int i=2; i<n; i++)
            a[i]=a[i-1]+a[i-2];
        cout<<a[n-1];
        for(int j=n-2; j>=0; j--)
            cout<<" "<<a[j];
        cout<<endl;
    }
    return 0;
}
#7
DYONGJ2012-11-28 17:48
谢谢各位的帮助!嘻嘻
1