c语言程序兔子反之问题,C语言解决兔子产子问题代码及解析

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?

问题分析

兔子数的规律,如下表所示:

月数

小兔子对数

中兔子对数

老兔子对数

兔子总数

1

1

0

0

1

2

0

1

0

1

3

1

0

1

2

4

1

1

1

3

5

2

1

2

5

6

3

2

3

8

7

5

3

5

13

提示:不满1个月的兔子为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。

可以看出,每个月的兔子总数依次为1, 1, 2, 3, 5, 8, 13…这就是Fibonacci数列。总结数列规律即从前两个月的兔子数可以推出第3个月的兔子数。

算法设计

该题是典型的迭代循环,即是一个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值的过程。这种迭代与如下因素有关:初值、迭代公式、迭代次数。经过问题分析,算法可以描述为:

用C语言来描述迭代公式即为:

fib = fib1 + fib2

其中 fib 为当前新求出的兔子数,fib1为前一个月的兔子数,fib2 中存放的是前两个月的兔子数,然后为下一次迭代做准备,进行如下的赋值 fib2=fib1,fibl=fib,要注意赋值的次序,迭代次数由循环变量控制,表示所求的月数。

下面是完整的代码:

#include

int main()

{

long fib1=1, fib2=1, fib;

int i;

printf("%12ld%12ld", fib1, fib2); /*输出第一个月和第二个月的兔子数*/

for(i=3; i<=30; i++)

{

fib = fib1 + fib2; /*迭代求出当前月份的兔子数*/

printf("%12ld", fib); /*输出当前月份兔子数*/

if(i % 4 == 0)

printf("n"); /*每行输出4个*/

fib2 = fib1; /*为下一次迭代作准备,求出新的fib2*/

fib1 = fib; /*求出新的fib1*/

}

printf("n");

return 0;

}

运行结果:

1 1 2 3

5 8 13 21

34 55 89 144

233 377 610 987

1597 2584 4181 6765

10946 17711 28657 46368

75025 121393 196418 317811

514229 832040

fb5c1cdc67e3da5124b5902462a5b591.png

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-12/155896.htm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言程序设计数据存储方案,c语言程序设计“第02章数据的存储及运算.ppt

[Return] 第2章 数据的存储与运算 2.1 常量和变量 2.2 整型数据 2.3 实型数据 2.4 字符型数据 2.5 符号常量 2.6 算术运算符和算术表达式 2.7 C运算符和C表达式 [Return] 2.1 常量和变量 1 什么是常量&#xff1f; 在程序运行过过程中其值值不变变的量。 2 什么是变量&#xff…

6位密码锁的c语言编程,51单片机4*3矩阵键盘6位密码锁c语言程序

满意答案#include#include#define uchar unsigned charuchar key;int i0;char b[4]{0,0,0,0};//输入的密码放这里和初始的比较来判断是否密码正确void keyscan()//扫描按键是否按下{uchar temp;P30xfe;//扫描第一行tempP3;temptemp&0xf0;if(temp!0xf0)//判断按键是否按下{d…

c语言fork()创建线程,操作系统的创建原语是fork()还是creat()?

满意答案MythSwift2013.09.10采纳率&#xff1a;55% 等级&#xff1a;12已帮助&#xff1a;9461人一个进程就相当于一个主线程。fork一个进程与create一个线程的区别:fork进程:子进程复制父进程的进程环境。父进程结束不会影响子进程的运行。进程切换复制进程环境。create线…

android 最新 support,android support v7 下载-android support.v7包 官方最新版 - 河东下载站...

android support v7是一款功能非常实用的android在进行开发的过程中&#xff0c;必须要进行使用的一个包&#xff1b;这款软件作为一个功能非常全面的功能包&#xff0c;也是目前为止最新的功能包&#xff0c;是您这使用Android开发的时候&#xff0c;非常重要的一环&#xff1…

android aar jar制作,AndroidStudio aar、jar生成及其引用

aar生成新建项目&#xff0c;并在项目中新建Library module&#xff1a;banner&#xff0c;如图&#xff1a;在新建Module中编写完代码后&#xff0c;build整个工程后就会自动生成aar包&#xff0c;包的路径在新建Module 》 build 》outputs >aar目录下&#xff1b;aar引用在…

android 点击侧滑代码,代码分析Android实现侧滑菜单

Android 侧滑菜单的实现&#xff0c;参考网上的代码&#xff0c;实现侧滑菜单。最重要的是这个动画类UgcAnimations&#xff0c;如何使用动画类来侧滑的封装FlipperLayout。1、实现效果2、动画类UgcAnimationspackage com.mmsx.base;import android.content.Context;import and…

鸿蒙系统年底问世视频,鸿蒙系统年底问世 什么时候上市使用

鸿蒙系统年底问世具体哪一天&#xff1f;自从华为鸿蒙操作系统被曝光后&#xff0c;大家对鸿蒙操作系统可谓是期待已久&#xff0c;鸿蒙操作系统具体什么时间上线&#xff0c;并没有具体的时间通知。但有消息称&#xff0c;“鸿蒙”手机将年底问世&#xff0c;初期主要面向中低…

android怎么设置适配器,Android之自定义实现BaseAdapter(通用适配器三)

在上一篇中&#xff0c;我们说过&#xff0c;在setData中如果有很多控件的话&#xff0c;我们还是要在该方法中写入很多代码&#xff0c;为了降低开发的方便性&#xff0c;本次就在此基础上再一次优化。实现原理是这样的&#xff0c;每次在setData中都要查找控件&#xff0c;然…

html游戏怎么编辑器,HTML的编辑器使用

使用 Notepad 或 TextEdit 来编写 HTML可以使用专业的 HTML 编辑器来编辑 HTML&#xff1a;Adobe DreamweaverMicrosoft Expression WebCoffeeCup HTML Editor(推荐学习&#xff1a;HTML入门教程)不过&#xff0c;我们同时推荐使用文本编辑器来学习 HTML&#xff0c;比如 Notep…

html5中如何自动跳转页面,实现HTML5上滑跳转页面的两种方法

方法一&#xff1a;jquery方法movePage($(body));function movePage(dom) {var startY, moveY, moveSpave;dom.on("touchstart", function(e) {startY e.originalEvent.touches[0].pageY; return startY;});dom.on("touchmove", function(e) {moveY e.or…

鸿蒙系统hifi,Apple Music将迎来重大更新 HiFi无损音质即将上线?

原标题&#xff1a;Apple Music将迎来重大更新 HiFi无损音质即将上线&#xff1f;前不久有媒体报道称&#xff0c;苹果将在当地时间5月18日推出HiFi版AppleMusic服务&#xff0c;新服务将为Apple Music用户提供无损的流媒体音乐&#xff0c;满足HiFi用户对高音质的追求。而在近…

html5语义化标签 加粗,html5标签 H5标签

html>h5文本元素1.文本元素2.加粗文字 b 3.倾斜文字 i 4.删除文字 del 5.加粗文字2 strong 6.安全换行 wbr~~~ 7.强调 倾斜元素 em 8.删除线2 s元素9998 9.下划线 u 10.下划线2 ins元素 11.小号字体small元素 12.下标 sub&#xff1a;CH4COOH ; 上标sup&#xff1a;20平方米…

华为笔记本会不会用鸿蒙,华为MateBook Pro笔记本为什么不用鸿蒙操作系统HarmonyO?...

头条上整天就是各种华为啊鸿蒙啊的&#xff0c;搞得好像人人都见过鸿蒙一样。还是大家以为操作系统就是做个APP或者王者荣耀&#xff1f;据我所知&#xff0c;鸿蒙OS现在我们能看到的&#xff0c;也就是几张PPT截图吧&#xff1f;整天动不动&#xff0c;这个为啥不用鸿蒙&#…

html 复选框name值,HTML(5)表单元素以及对各个表单元素的name、value属性的理解

我在学习表单元素的时候感觉很混乱&#xff0c;特别是 name value这两个属性&#xff0c;没有真正理解它们是干什么的&#xff0c;所以需要梳理一下。HTML表单元素主要有 HTML5新增的表单元素有三个下面梳理一下这些表单元素的用法并指出各元素的name、value属性含义1. 元素元…

html中一张a4是多少pt,CSS设置A4纸张尺寸

我需要在网络上模拟A4纸&#xff0c;并允许打印此页面&#xff0c;因为它在浏览器上显示(特别是Chrome)。我设置元素的大小为21厘米x 29.7厘米&#xff0c;但当我发送打印(或打印预览)它剪辑我的页面。HTMLPage 1/2Page 2/2CSSbody {margin: 0;padding: 0;background-color: #F…

html中的异步请求数据格式,解决layui中table异步数据请求不支持自定义返回数据格式的问题...

使用版本 layui-v2.3.0修改&#xff1a;打开layui中table.js源码在 Class.prototype.pullData 这个方法定义内部//获得数据Class.prototype.pullData function(curr, loadIndex){var that this,options that.config,request options.request,response options.response,so…

首页图标九宫格 html5,html5九宫格布局的网格菜单代码

特效描述&#xff1a;html5 九宫格布局 网格菜单代码。今天我们想和大家分享一个九宫格菜单动画。这个想法的灵感来自于视频中的效果&#xff0c;html5全屏展开网格布局菜单&#xff0c;点击全屏背景切换显示代码。代码结构1. 引入CSS2. 引入JS3. HTML代码Grid MenuarrowdropTo…

html数据摘要算法,js 摘要算法 base64加密解密 以及字符串编码

js 摘要算法 base64加密解密 unescape()和escape()对字符串进行编码 encodeURI()和decodeURI()编码 encodeURIComponent()和decodeURIComponent()编码base64&#xff1a;双向加密方式。1.GitHub中下载base64https://github.com/dankogai/js-base642.对应的HTML中调用//加密var …

html中日期格式化函数,JavaScript日期时间格式化函数分享

这个函数经常用到&#xff0c;分享给大家。函数代码&#xff1a;Date.prototype.format function(format){var o {"M" : this.getMonth()1, //month"d" : this.getDate(), //day"h" : this.getHours(), //hour"m" : this.getMi…

苹果6怎样打开html,苹果iPhone的Safari浏览器使用技巧图解

&#xfeff;  大多数的 iPhone 用户们都是用的 iOS 系统自带的 Safari 浏览器&#xff0c;不过很多用户们对 Safari 浏览器却不是很熟悉&#xff0c;因为 Safari 毕竟没有国产浏览器这么动我们&#xff01;这厢脚本之家小编给大家介绍一些 iOS Safari 浏览器的一些你所不知道…