ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【想进阿里的小菜鸟】C程序经典100例 No.7

2020-11-24 20:00:17  阅读:230  来源: 互联网

标签:f1 f2 12d s2 菜鸟 兔子 No.7 printf 100


No.7
好久不写博客了,这几天一直被这样那样的事情烦着,但是代码一直在写,今天就来一道比较好玩的题吧!

古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月)

根据谭浩强的《C语言程序设计》一书,我们可以通过画表格来理清思路。
在这里插入图片描述
CSDN怎么插表格?为什么只能插几列啊?(这是我从Excel里列好之后截的图)
从表中数据可知,我们要输出的数据便是1,1,2,3,5,8,13…这便是有趣的Fibonacci数列,我们可以看到后一项便是前两项之和,由此可以得到项与项之间的关系式,有了关系式,本题就迎刃而解了。

我的答案:

#include<stdio.h>
int main()
{
	int s1=1,s2=1,sn,i;
	printf("%12d", s1);
	printf("%12d", s2);
	for (i = 3; i <= 40; i++)
	{
		sn = s1 + s2;//用数列思想
		s1 = s2;//改变项的值
		s2 = sn;
		printf("%12d", sn);
		if (i % 5 == 0)//输出换行
			printf("\n");
	}
}

标准答案:

#include<stdio.h>
 
int main()
{
    int f1=1,f2=1,i;
    for(i=1;i<=20;i++)
    {
        printf("%12d%12d",f1,f2);
        if(i%2==0) printf("\n");
        f1=f1+f2;//可以充当下一次运算的f1
        f2=f1+f2;//可以充当下一次运算的f2
    }
    
    return 0;
}

标准答案的思想就比较巧妙了,它是把f1,f2看成一个整体,整体运算,整体输出。

由这道题可以启发一系列数列类型的题,项与项之间的关系来得到递推式,以及答案中给出的可以把两项看作整体之类。

今天的分享就到这里。
Bingo!
今天是好冷的一天!

标签:f1,f2,12d,s2,菜鸟,兔子,No.7,printf,100
来源: https://blog.csdn.net/weixin_49563267/article/details/110091311

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有