dotcpp-小鸟


私信TA

用户名:xiaoniao

访问量:38405

签 名:

等  级
排  名 232
经  验 6188
参赛次数 0
文章发表 28
年  龄 0
在职情况 学生
学  校 社会
专  业

  自我简介:

解题思路:
   

    根据斐波纳的特点,其第1、2项均为1,从第三个数开始,该数是数列中前两个数的和的。将f1、f2初始值设为数列的头两个数,然后再根据其特点,循环输出。通过不大于40的N数控制循环体,输出即可。

注意事项:


    看清题意,是输出N个斐波数而不是输出N以内的斐波数。

参考代码:

#include<stdio.h>
int main()
{
	int N;
	int f1=0; //假设为头列第一个数,初始化为0;
	int f2=1;//假设为头列第二个数,初始化为1;
	int f3=0;//设为fib数,即为第三个数;


    
    scanf("%d",&N);//输入要输出斐波数的个数


	if(N<=40)//不大于40个数。
	{while(N--)//控制输出的斐波数的个数;
	{			
		    f1=f2;//假设头列的第一个数与第二个数相等
		    f2=f3;//第二个数与第三个数相等;
            f3=f1+f2;//第三个数又是第一个数与第二个数的和,即为斐波数;
			printf("%d ",f3);//符合循环条件的斐波输出;
		
	}printf("\n");}

	return 0;
}


 

0.0分

7 人评分

  评论区

#include<stdio.h>
int main(){
    int N;
	scanf("%d",&N);
	int s[40];
	int i;
	s[0]=1;
	s[1]=1;	
	if(N==1)
	  printf("1");
	else if(N==2)
	  printf("1 1");
	else{
	   printf("%d %d ",s[0],s[1]);
	   for(i=2;i<N;i++){
	   	 s[i]=s[i-1]+s[i-2];
	   	 printf("%d ",s[i]);
	   }   	
	}
	return 0;	
}
为什么不对
2024-03-05 15:58:59
#include<stdio.h>
int main()
{
	int n;
	scanf("%d",&n);
	int a[40];
	for(int i=0;i<n;i++)
	{ 
		if(i==0||i==1)
		{
			a[i]=1;
		}
		else
			a[i]=a[i-1]+a[i-2];
		printf("%d ",a[i]);
	}
	return 0;
}
2022-11-27 20:58:38
  • «
  • 1
  • »