PTA|《C语言程序设计实验与习题指导(第3版)》实验6-5 使用函数输出指定范围内的Fibonacci数 (20分)

题目

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。

函数接口定义:

int fib( int n );
void PrintFN( int m, int n );

其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。

裁判测试程序样例:

#include <stdio.h>

int fib( int n );
void PrintFN( int m, int n );
	
int main()
{
    int m, n, t;

    scanf("%d %d %d", &m, &n, &t);
    printf("fib(%d) = %d\n", t, fib(t));
    PrintFN(m, n);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例1:

20 100 7

输出样例1:

fib(7) = 13
21 34 55 89

输入样例2:

2000 2500 8

输出样例2:

fib(8) = 21
No Fibonacci number

AC代码

int fib(int n){
	int a=1,b=1,ret;
	if(0<n&&n<3)return 1;
	for(int i=0;i<n-2;i++){
		ret=a+b;
		a=b;
		b=ret;
	}
	return ret;
} 
void PrintFN( int m, int n ){
	int i=1,mask=0;
	while(fib(i)<m){
		i++;
	}
	while(fib(i)<=n){
		if(mask==1)printf(" ");
		printf("%d",fib(i++));
		mask=1;
	}
	if(mask==0)printf("No Fibonacci number");
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 好的,以下是回复: 实验6-9要求使用函数输出指定范围内的FibonacciFibonacci数列是指从和1开始,后面每一项都是前面两项的和,即, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ……。要求输出Fibonacci必须在指定范围内,例如,如果指定范围是10到30,那么输出Fibonacci必须在10到30之间。可以使用循环和递归两种方法实现。 ### 回答2: 实验6-9要求我们使用函数输出指定范围内的Fibonacci数列。斐波那契数列是一串字,其中每个字是前两个字之和,起始字是0和1。数列的前几个字为0、1、1、2、3、5、8、13等等。为了达到题目要求,我们需要编写一个函数,用来输出指定范围内的斐波那契数列。 在函数的实现过程中,我们需要使用循环语句和条件语句来控制输出范围函数的基本流程如下: 1. 定义一个fibonacci()函数,其中包含两个参别为起始和结束; 2. 在函数中定义两个变量,别为前一个和后一个,起始值别为0和1,用于计算斐波那契; 3. 使用for循环遍历指定范围内的字,计算其斐波那契并打印输出; 4. 注意要在函数返回结果后使用print函数输出结果。 完整代码如下: ``` def fibonacci(start, end): a = 0 b = 1 result = [] for i in range(end): if a >= start: result.append(a) a, b = b, a + b if a > end: break return result print(fibonacci(5, 100)) ``` 在上述代码中,我们首先定义了一个叫做fibonacci函数,该函数包含两个参别为起始和结束。在函数内部,我们定义了两个变量a和b,其初始值别为0和1,用于控制计算斐波那契数列。接着,我们使用for循环遍历指定范围内的字,如果该字在指定范围内,则将其加入到结果列表中。为了控制循环次,我们使用if语句来判断是否已经超出指定范围,如果超出则跳出循环。 最后,在函数返回结果后,我们使用print函数输出结果。在本例中,我们打印输出指定范围内的斐波那契数列,可以根据需要修改起始和结束输出不同的结果。 ### 回答3: 实验6-9使用函数输出指定范围内的FibonacciFibonacci数列是一个古老而广为人知的学问题。它是由意大利学家斐波那契提出的,因此得名为Fibonacci数列。该数列起始于0和1,后续的每个都是前面两个之和。这样可以得到一个数列如下:0、1、1、2、3、5、8、13、21、34……。 这种数列具有许多有趣的性质和应用。例如,许多有机体的生长和繁殖遵循斐波那契数列。此外,它还涉及许多学和计算机科学问题。 在本实验中,我们将编写一个函数输出指定范围内的Fibonacci。这个函数应该接受两个参:开始字和结束字。它将输出开始字和结束字中所有的Fibonacci。 为了编写这个函数,我们需要了解一些Fibonacci的生成方法。最简单的方法是使用递归,即定义一个函数来计算Fibonacci。该函数的基本定义如下: F(n) = F(n-1) + F(n-2) 这表示第n个Fibonacci是前两个Fibonacci之和(F(n-1)和F(n-2))。从1和2开始,前两个Fibonacci是1和1。那么,我们可以使用一个循环来遍历开始字和结束字之间的所有字,然后计算它们是否为Fibonacci。 以下是一个示例函数的代码: def Fibonacci(start,end): f1, f2 = 0, 1 while f2 <= end: if f2 >= start: print(f2) f1, f2 = f2, f1 + f2 在这个函数中,我们定义了两个变量f1和f2,开始时的值别为0和1。之后,我们使用while循环来计算Fibonacci输出它们。 在循环中,我们使用if语句来检查Fibonacci字是否在指定范围内。如果是,我们就使用print语句输出它。接下来,我们将f1和f2中的值交换,将f1更新为前一个,将f2更新为当前的值加上前一个的值,从而生成下一个Fibonacci。 在主程序中,我们可以使用以下代码来调用Fibonacci函数Fibonacci(1, 1000) 这将输出所有在1-1000范围内的Fibonacci。 在本实验中,我们掌握了使用循环和递归构建Fibonacci数列的基本方法,了解了递归的工作原理。同时我们也学会了如何通过编写函数来解决实际问题。这些技能在编写各种计算机程序和解决大量计算问题时都非常有用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值