利用数组计算斐波那契数列-PTA

本题要求编写程序,利用数组计算菲波那契(Fibonacci)数列的前N项,每行输出5个,题目保证计算结果在长整型范围内。Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列,例如::1,1,2,3,5,8,13,...。

输入格式:

输入在一行中给出一个整数N(1≤N≤46)。

输出格式:

输出前N个Fibonacci数,每个数占11位,每行输出5个。如果最后一行输出的个数不到5个,也需要换行。

如果输入的N不在有效范围内,则输出"Invalid."。

输入样例1:

7

输出样例1:

          1          1          2          3          5
          8         13

输入样例2:

0

输出样例2:

Invalid.

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include<stdio.h>
int main()
{
    int f1=1,f2=1,n,c=1;
    scanf("%d",&n);
    if(n<1||n>46)
    {
        printf("Invalid.");
        return 0;
    }
    while(c<=n)
    {
        printf("%11d",f1);
        f2=f1+f2;
        f1=f2-f1;
        if(c%5==0)printf("\n");
        c++;
    }
    return 0;
}

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 好的,以下是用中文回答本题: 这道题要求我们编写程序,利用数组计算菲波那切数列的前n项,并每行输出5个数字。菲波那切数列是一个数列,满足任意一项数字都是前两项数字的和。初始的两项数字均为1。 为了计算这个数列,我们可以定义一个长度为n的数组,用来存储数列的前n项。然后,我们可以使用一个循环来计算数列中每一项的值,将其存储在数组中。具体来说,可以从第三项开始循环,每次将前两项的和作为当前项的值,并将其存储在数组中。 计算完数列后,我们可以使用另一个循环来遍历数组并输出数列中的每一项。由于每行输出5个数字,我们可以使用一个计数器来记录输出的数字数量,每输出5个数字后换行。这样就可以得到所需的输出结果了。 需要注意的是,由于题目保证计算结果在长整型范围内,所以在计算过程中可能会涉及到大数运算。为了避免计算结果溢出,可以使用C++中的long long类型来存储数组和数列中的每一项。 ### 回答2: 题目要求编写程序计算菲波那契数列的前n项,其中任一项数字是前两项的和。我们可以用数组来存储计算结果。由于题目保证计算结果在长整型范围内,我们可以用long long类型来存储数列中的每一项。 首先,定义一个长度为n的数组来存储菲波那契数列的前n项。由于前两项都是1,可以将数组的前两个元素赋值为1。 接下来,利用for循环计算后面的项,并将结果存储在数组中。循环的起始值为2,因为前两项已经定义为1了。循环体内,用a[i-1]+a[i-2]计算第i项,将结果存储在a[i]中。 最后,再用一个for循环将数组中的数列输出,每行输出5个数。 下面是代码实现: ```c++ #include <iostream> using namespace std; int main() { int n; long long a[100]; //数组长度为100,可存储前100项 cin >> n; a[0] = 1; a[1] = 1; for (int i = 2; i < n; i++) { a[i] = a[i-1] + a[i-2]; //计算第i项,存储在a[i]中 } for (int i = 0; i < n; i++) { cout << a[i] << " "; if ((i+1)%5 == 0) { //每行输出5个数 cout << endl; } } return 0; } ``` 这个程序利用数组计算并输出了菲波那契数列的前n项。在输出结果时,利用了一个if语句来控制每行只输出5个数。 ### 回答3: 菲波那契数列是数学中的经典问题,为了求解菲波那契数列,可以使用数组进行计算。下面我们就来讲解如何使用数组计算菲波那契数列的前n项。 首先,定义一个长度为n的数组,用来存储计算出来的菲波那契数列。数组的第一项和第二项分别为1,因为题目中已经规定了。 然后,根据菲波那契数列的规律,开始计算数组的第三项至第n项。数组第i项的值等于数组第i-1项与第i-2项之和。用循环语句实现这个计算过程即可。 在计算的同时,每输出五个数就换行,可以使用循环和判断语句实现。具体实现如下: long long fibonacci(int n) { long long arr[n]; // 定义数组 arr[0] = arr[1] = 1; // 前两项为1 // 计算菲波那契数列 for (int i = 2; i < n; i++) { arr[i] = arr[i-1] + arr[i-2]; } // 每行输出5个数 for (int i = 0; i < n; i++) { cout << arr[i] << " "; if ((i+1) % 5 == 0) { cout << endl; } } return arr[n-1]; // 返回第n项的值 } 在主函数中调用该函数即可求解菲波那契数列。需要注意的是,题目要求计算结果在长整型范围内,因此需要使用long long类型来存储数组中的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值