C语言典型例题55

《C程序设计教程(第四版)——谭浩强》


题目:


例题4.7  兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。小兔子长到第3个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?
编程序求出前40个月的兔子数。


题目分析:

思想:

像这种有数据每到某一个时间段循环变化的数据,脑子里可以自动给他划上“幼年”“青年”“中年”“老年”“暮年”……这样的标签,这样会更加容易理解。

下面将以这个题目为例子来帮你理解这种思想:

月份小兔子中兔子老兔子兔子总对数
11001
20101
31012
41113
52125
63238
……
40

规律:

可以看到,后一个的兔子对总数等于前两个兔子总对数的和。即

x3=x1+x2


代码:

//《C程序设计教程(第四版)——谭浩强》
//例题4.7 兔子的繁殖。这是一个有趣的古典问题:有一对兔子,从出生后的第3个月开始起每个月都生一对兔子。
//		  小兔子长到第3个月又生一对兔子。假设所有兔子都不死,问每个月的兔子总数为多少?
//		  编程序求出前40个月的兔子数。#include <stdio.h>
int main()
{int x1=1;//有一对兔子int x2=1;int x3=0;printf("第1个月的兔子对数%d\n",x1);printf("第2个月的兔子对数%d\n",x2);int i=3;//月份while(i<=40){x3=x1+x2;
//		printf("第%d个月的兔子对数%d\n",i,x3);x1=x2;x2=x3;i++;//		x2=x3;
//		x1=x2;
//		x3=x1+x2;}printf("第40个月的兔子对数:%d\n",x3);return 0;
}

运行结果:


编写代码时遇见的问题:

1.不需要在额外创建一个变量sum来存放兔子的总对数

x3就是兔子的总对数,不需要在额外创建一个变量sum来存放兔子的总对数。

2.不要创建数组来存放兔子的对数

通过创建数组来存放兔子的对数,这样写虽然也可以,但是在逻辑上理解起来更复杂一点点,没有通过直接创建数写起来更加简洁简单。

3.C语言中int类型的变量一直增加问什么最后无论怎么变值都为-2?

在C语言中,当int类型的变量值增加到超出其能表示的最大值时,它会回绕(wrap around)到最小值,即-2147483648。

这是因为int类型在计算机内部使用补码形式表示,当数值增加到int类型的最大值2147483647后,如果继续增加,就会发生溢出,导致数值回绕到最小值-2147483648。这种现象通常被称为整数溢出(integer overflow)。

在计算机系统中,int类型一般采用补码表示法。补码是一种用于表示有符号整数的计算机中常用的编码方式。对于正数,补码就是其二进制表示;对于负数,补码是其绝对值的二进制表示取反后加1得到的。当int类型的变量值增加到一个非常大的数时,如果这个数超过了int类型能表示的最大范围(-2147483648到2147483647),就会发生溢出。此时,数值会回绕到int类型的最小值,即-2147483648。这是因为计算机内部存储和计算是基于二进制进行的,而二进制数的特性决定了当数值达到某个极限时,它会回绕到另一个极限值。

为了避免这种情况,可以使用更大范围的数据类型,如long long int,或者在编程时仔细管理数值的大小和范围,以防止溢出导致的错误结果‌

4.调试代码:

调试过程

调试代码小技巧:

可以在一些代码的关键位置插入一些输出数据,这样可以更加清楚直观的看到数据的变化规律,以便于更加清楚的掌握数据的变化

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

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

相关文章

二叉搜索树进阶之红黑树

前言&#xff1a; 在上文我们已经学习了AVL树的相关知识以及涉及的四种旋转的内容&#xff0c;但是AVL树追求平衡导致旋转操作过多&#xff0c;一些情况下影响性能&#xff0c;由此我们就来了解一下二叉搜索树的另外一个分支&#xff0c;红黑树。 &#xff08;倘若对旋转知识…

2024版Assimp配置教程

最近想看看图形学&#xff0c;选择速通LearnOpenGL&#xff0c;不出意外最耗时间的依然是配置环境。按照教程上的把GLFW等等配置的没有问题&#xff0c;但是在Assimp这里卡住了。原因是教程上说的不详细&#xff0c;而网上查的又和现在的版本相去甚远&#xff0c;导致捣鼓了好一…

从web.xml动态读取sunspringmvc.xml文件

文章目录 1.问题分析1.SunWebApplicationContext.java 中sunspringmvc.xml是写死的2.但是web.xml已经配置了init-param&#xff0c;所以应该是可以读取的 2.具体实现1.SunDispatcherServlet.java 得到ServletConfig传递给Spring容器完成初始化2.SunWebApplicationContext.java …

【C++从小白到大牛】C++的隐式和显示类型转换基础知识讲解

目录 1、C语言中的类型转换 2、C语言和C中可以相互转换的类型总结 C语言&#xff1a; CPP&#xff1a; 3. 为什么C需要四种类型转换 4、C四大强制类型转换 4.1static_cast 4.2 reinterpret_cast 4.3 const_cast 4.4dynamic_cast 注…

基于x86 平台opencv的图像采集和seetaface6的性别识别功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的性别识别功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的性别识别模块从而实现…

谓词和量词

一、个体词和谓词 命题是一句陈述句&#xff0c;命题由个体词和谓词组成。 个体词是句子中的主语部分&#xff0c;比如这里的王童。 谓词是句子里的剩余部分&#xff0c;比如是一个三好学生 个体词用小写字母表示&#xff0c;谓词用大写字母&#xff0b;&#xff08;&#…

数据库(专业存储数据)

数组、链表、变量----->内存&#xff1a;程序运行结束&#xff0c;数据丢失 文件-------------->硬盘 数据库&#xff1a;专业存储数据&#xff0c;大量数据----------->硬盘 一、数据库文件与普通文件区别: 1.普通文件对数据管理(增刪改查)效率低 2.数据库对数据…

算法: 双指针

题目&#xff1a;环形链表 题目讲解&#xff1a; 判断环 要判断链表是否有环&#xff0c;可以使用快慢指针的方法。快指针每次走两步&#xff0c;慢指针每次走一步。如果链表有环&#xff0c;快慢指针最终会相遇&#xff1b;如果没有环&#xff0c;快指针会先到达链表末尾。 …

MySQL:简述对事务的认识

浅谈对Spring事务的认识&#xff1a;https://xiaoer.blog.csdn.net/article/details/80849971 一、事务的特性 事务是数据库永恒不变的话题&#xff0c; ACID&#xff1a;原子性&#xff0c;一致性&#xff0c;隔离性&#xff0c;持久性。 &#xff08;1&#xff09;原子性&am…

基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设

麒麟信安操作系统&#xff0c;作为行业数智化建设的安全根基&#xff0c;为电力业务系统提供了稳定可靠的底层平台&#xff0c;在全球能源结构转型大潮中扮演着至关重要的角色。某光伏电站项目中&#xff0c;基于麒麟信安操作系统的光伏发电功率预测系统完成大规模部署建设&…

手机游玩植物大战僵尸杂交版V2.3.7最新版教程(文章末尾免费直接下载链接)

最新版植物大战僵尸杂交版V2.3.7手机游玩教程 【V2.3.7全面升级】植物大战僵尸杂交版&#xff1a;跨平台终极安装指南 - 苹果、安卓、电脑、电视兼容&#xff0c;界面革新&#xff0c;16卡槽扩展&#xff0c;高分辨率支持&#xff0c;BUG修复&#xff0c;畅享游戏乐趣 前言 …

Java Web —— 第九天(事务)

事务管理 & AOP 事务回顾 概念 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;这些操作 要么同时成功&#xff0c;要么同时失败 操作 开启事务(一组操作开始前&#xff0c;开启事务): start transaction / begin 提交事务(这组操作全部成功…

Word文档被锁定无法编辑怎么办?一键快速移除Word编辑限制

有没有遇到这种情况&#xff1f;打开Word文档后&#xff0c;准备对Word软件进行文档的编辑时&#xff0c;发现文档有部分内容无法进行编辑了&#xff0c;不知道怎么回事&#xff0c;其实这是因为无法编辑区域被锁定了&#xff0c;所以无法进行编辑&#xff0c;那么应该怎么解除…

Scrapy 分布式爬虫框架 Scrapy-Redis

github官网代码示例&#xff1a;https://github.com/rmax/scrapy-redis/blob/master/example-project/example/spiders/myspider_redis.py 什么是 Scrapy-Redis Scrapy-Redis 是一个基于 Scrapy 的扩展&#xff0c;用于实现分布式爬虫。它利用 Redis 作为分布式队列来共享待爬…

【Qt窗口】—— 浮动窗口

目录 1.1 浮动窗口的创建 1.2 设置停靠的位置 1.3 示例小结 在Qt中&#xff0c;浮动窗口也称之为铆接部件&#xff0c;俗称为子窗口&#xff0c;浮动窗口是通过QDockWidget类来实现浮动的功能。浮动窗口⼀般是位于核⼼部件的周围&#xff0c;可以有多个。 1.1 浮动窗口的…

CAD如何批量输出PDF?介绍了三种方式

CAD如何批量输出PDF&#xff1f;在工程设计、建筑制图以及产品设计等领域&#xff0c;CAD软件是不可或缺的工具。随着项目规模的扩大&#xff0c;如何将CAD图纸批量转换成PDF格式以便分享、打印或存档&#xff0c;成为了许多设计师面临的常见问题。下文将介绍三种高效的方法&am…

springboot3.x入门系列【5】支持unix sock 套接字服务

目录 一、简介 二、springBoot3.x 套接字的支持 1. 环境要求 2. springboot内置tomcat 2.1 支持unix 设置 unixDomainSocketPath 2.2 windows 下unix服务测试 3. springboot外置tomcat 3.1 tomcat 配置unix socket 套接字 3.2 启动tomcat 服务 3.3 nginx 支持unix…

SLAM学习笔记

从《slam十四讲开始》 slam十四讲推荐的其他书籍 《概率机器人》&#xff08;Probabilistic robotics &#xff09; 《计算机视觉中的多视图几何》&#xff08;Multiple View Geometry in Computer Vision &#xff09; 《机器人学中的状态估计》&#xff08;State Estimation…

操作系统

操作系统是控制和管理计算机硬件和软件资源。 管理和控制电脑系统软硬件资源的软件叫作操作系统&#xff0c;操作系统是最基本、最重要的系统软件&#xff0c;由一组控制计算机系统并对计算机系统进行管理的程序组成&#xff0c;是用户与计算机硬件系统的接口&#xff0c;并为用…

VMware网络模式

一.VMware虚拟网络 VMware支持共创建20个虚拟网络&#xff0c;相当于现实生活的交换机&#xff0c;名称vmnet0---vmnet19 物理机用虚拟网卡和对应的虚拟网络中的虚拟机通信。 VMnet1和VMnet8这两个虚拟网卡的作用是保证windows和虚拟机可以正常通信。VMware Workstation Pro这…