c++primer第四版课后习题答案
### C++ Primer 第四版课后习题答案 #### 第一章 快速入门 **习题1.1** 查看所用的编译器文档,了解它所用的文件命名规范。编译并运行本节的`main`程序。 **解答:** 一般而言,C++编译器要求待编译的程序保存在文件中。C++程序中一般涉及两类文件:头文件和源文件。大多数系统中,文件的名字由文件名和文件后缀(又称扩展名)组成。文件后缀通常表明文件的类型,如头文件的后缀可以是`.h`或`hpp`等;源文件的后缀可以是`.cc`或`.cpp`等,具体的后缀与使用的编译器有关。通常可以通过编译器所提供的联机帮助文档了解其文件命名规范。 对于本练习,首先需要确保安装了C++编译器,例如GCC或Microsoft Visual C++等,并且熟悉所使用的编译器的基本使用方法。接着,按照编译器文档中的指南创建一个简单的C++程序文件,如`main.cpp`,然后使用编译命令编译并运行这个程序。例如,使用GCC编译器时,可以在命令行中输入以下命令: ```bash g++ main.cpp -o main ./main ``` 这将编译`main.cpp`文件并将结果保存到名为`main`的可执行文件中。最后运行`main`程序查看输出结果。 **习题1.2** 修改程序使其返回-1。返回值-1通常作为程序运行失败的指示器。然而,系统不同,如何(甚至是否)报告`main`函数运行失败也不同。重新编译并再次运行程序,看看你的系统如何处理`main`函数的运行失败指示器。 **解答:** 在C++中,`main`函数通常返回一个整数值给调用它的环境(通常是操作系统),用来表示程序的退出状态。0通常表示正常退出,而非0值则可能表示异常退出。为了实现这一要求,可以将`main`函数的最后一行改为: ```cpp return -1; ``` 这样修改后,`main`函数会在结束时返回-1。对于不同的操作系统,处理程序退出状态的方式可能会有所不同。在Windows系统中,通常不会直接在程序运行界面显示`main`函数的返回值,但可以通过命令行界面查看。具体步骤如下: 1. 打开命令提示符窗口。 2. 运行编译后的程序(假设程序名为`main.exe`)。 3. 输入`echo %ERRORLEVEL%`,该命令将显示`main`函数的返回值。 如果程序确实返回了-1,那么`echo %ERRORLEVEL%`命令将显示-1。 **习题1.3** 编写一个程序,在标准输出上打印“Hello, World”。 **解答:** ```cpp #include <iostream> int main() { std::cout << "Hello, World" << std::endl; return 0; } ``` **习题1.4** 我们的程序利用内置的加法操作符`+`来产生两个数的和。编写程序,使用乘法操作符`*`产生两个数的积。 **解答:** ```cpp #include <iostream> int main() { std::cout << "Enter two numbers: "; int v1, v2; std::cin >> v1 >> v2; std::cout << "The product of " << v1 << " and " << v2 << " is " << v1 * v2 << std::endl; return 0; } ``` **习题1.5** 我们的程序使用了一条较长的输出语句。重写程序,使用单独的语句打印每一个操作数。 **解答:** ```cpp #include <iostream> int main() { std::cout << "Enter two numbers: "; int v1, v2; std::cin >> v1 >> v2; std::cout << "The sum of "; std::cout << v1 << " and "; std::cout << v2 << " is "; std::cout << v1 + v2 << std::endl; return 0; } ``` **习题1.6** 解释下面的程序段: ```cpp std::cout << "The sum of" << v1; << "and" << v2; << "is" << v1 + v2 << std::endl; ``` 这段代码合法吗?如果合法,为什么?如果不合法,又为什么? **解答:** 这段代码不合法。在C++中,`<<`是一个二元操作符,它需要一个左操作数和一个右操作数。在这个例子中,每行末尾的`<<`没有相应的左操作数,因此这些行都是不完整的表达式。正确的做法是在每行的开头添加`std::cout`。修正后的代码如下: ```cpp std::cout << "The sum of" << v1; std::cout << "and" << v2; std::cout << "is" << v1 + v2 << std::endl; ``` **习题1.7** 编译有不正确嵌套注释的程序。 **解答:** 在C++中,多行注释使用`/*`开始,`*/`结束。如果注释内部还包含了一个`*/`,则编译器会认为这是注释的结束标志,从而导致语法错误。例如,考虑下面的代码: ```cpp #include <iostream> /* * comment pairs /**/ cannot nest. * "cannot nest" is considered source code */ int main() { std::cout << "This is a test." << std::endl; return 0; } ``` 这里的注释包含了`/**/`,这会导致编译错误,因为编译器会误以为`/**/`是注释结束的标记。解决这个问题的方法是避免在多行注释内部再使用`*/`,或者改用单行注释`//`。例如: ```cpp #include <iostream> /* * comment pairs /* not */ cannot nest. * "cannot nest" is considered source code */ int main() { std::cout << "This is a test." << std::endl; return 0; } ``` 通过这种方式,可以避免注释的不正确嵌套问题。
剩余234页未读,继续阅读
- w135250769892017-12-18还可以吧,一般
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 大学生智能消费记账系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 个人博客系统的设计与实现-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.rar
- 洞见研报ZDEER左点(全场景科技医疗及健康生活解决方案服务商,左点健康产业(深圳)有限公司)创投信息
- javaweb的新能源充电系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Java的大学生考勤系统的设计与实现--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于Java Web的考编论坛网站的设计与实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- +vue校园求职招聘系统设计和实现pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 地理信息系统考研复习笔记,助力上岸
- 洞见研报和府捞面(面食餐饮品牌,江苏和府餐饮管理有限公司)创投信息
- 基于html5+css3的在线英语阅读分级平台--论文pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 交流互动系统(1)-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 教师人事档案管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于javaweb的宠物猫认养系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 酒店管理系统-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- 基于javaweb的城乡居民基本医疗信息管理系统pf-springboot毕业项目,适合计算机毕-设、实训项目、大作业学习.zip
- arm64架构下gmssl工具