《C Primer Plus》第六版 第十二章编程练习答案
### 《C Primer Plus》第六版 第十二章编程练习答案解析 #### 练习1: 猜数字游戏 在本练习中,程序设计了一个简单的猜数字游戏,目标是让用户猜测一个预设的数字(本例中为56),直到猜对为止。 - **程序结构与逻辑** - `#include <stdio.h>`:引入标准输入输出库。 - 函数`int critic(void)`用于当用户猜测错误时提供反馈并重新获取输入。 - 主函数`int main()`首先定义了一个整型变量`num`来存储待猜数字(56)以及一个整型变量`units`用于接收用户的输入。 - 通过`printf()`提示用户输入,并使用`scanf()`读取输入值。 - 使用`while`循环检查用户输入是否等于预设的数字,如果不等,则调用`critic()`函数并再次尝试。 - 循环持续进行,直到用户猜对数字为止。 - `getchar()`用于暂停程序执行,等待用户按键后退出。 - **函数`int critic()`的作用** - 当用户输入错误时,此函数被调用。 - 它通过`printf()`输出错误提示信息,然后使用`scanf()`重新获取用户输入。 - 返回新获取的输入值,以便继续主循环中的判断。 #### 练习2: 燃油消耗计算 本练习展示了如何通过不同模式(国际制与美国制)输入数据来计算燃油消耗情况。 - **程序结构与逻辑** - 使用头文件`pe12-2a.h`定义了三个函数:`set_mode()`, `get_info()`, 和 `show_info()`。 - `set_mode(int mode)`用于设置程序的计量单位模式,如果传入的模式无效,则默认使用美国制。 - `get_info()`根据当前模式的不同,提示用户输入行驶距离和燃油消耗量,并通过`scanf()`读取这些值。 - `show_info()`根据当前模式计算燃油消耗率,并输出结果。 - `mode`、`distance` 和 `fuel` 作为全局变量,在各个函数之间共享数据。 - **关键代码解读** - 在`set_mode()`函数中,通过条件语句检查传入的模式是否有效。 - `get_info()`函数根据`mode`的值,分别提示用户输入相应的数据,并使用`scanf()`读取。 - `show_info()`函数计算燃油消耗率,根据`mode`的值选择不同的计算方式,并输出结果。 #### 练习3: 改进版燃油消耗计算 本练习进一步改进了燃油消耗计算程序,将`get_info()`和`show_info()`函数的参数进行了调整,使得这两个函数更加通用。 - **程序结构与逻辑** - 与上一练习类似,本练习同样使用了`pe12-2a.h`头文件,但在该文件中对函数签名进行了修改。 - `set_mode()`函数保持不变,负责设定程序的工作模式。 - `get_info()`现在接受一个模式参数,使得该函数能够根据传入的模式值来提示用户输入相应数据。 - `show_info()`也接受额外的参数,包括模式、行驶距离和燃油消耗量,使其能够在没有全局变量的情况下独立工作。 - **改进之处** - 通过向`get_info()`和`show_info()`传递模式参数,使得这两个函数不再依赖于全局变量`mode`,提高了程序的可维护性和扩展性。 - 这种改进使得函数可以更容易地被其他部分的代码调用,增强了代码的复用能力。 这三个练习涵盖了C语言中的一些基本概念,如函数定义与调用、循环控制结构、条件语句、输入输出操作等。通过对这些练习的学习和实践,可以帮助读者更好地理解和掌握C语言的基础知识。
剩余12页未读,继续阅读
- 粉丝: 53
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助