【C++ Primer Plus 第六版 学习笔记】第二章 开始学习C++ 复习题答案 解析

Part A. 内容清单

2.1 进入C++

  • main()函数
  • C++注释
  • C++预处理器
  • 头文件名
  • 名称空间
  • cout & cin
  • C++源代码的格式化

2.2 C++语句

  • 声明语句和变量
  • 赋值语句
  • 利用cout进行拼接

2.3 其他C++语句

  • 使用cin
  • 使用cout
  • 类简介

2.4 函数

  • 有返回值的函数
  • 函数变体
  • 自定义函数
  • 自定义有返回值的函数
  • 在多函数程序中使用命名空间(using命令放在全局-所有函数可用 / 放在局部-仅当前函数可用)

Part B. 问题引入

1)C++程序的模块叫什么?

答:函数

解析:C++程序由一个或多个被称为函数模块组成

2)#include 预处理器编译指令是做什么用的?

答:

  1. #include编译指令使iostream文件内容和源代码文件内容一同发送至编译器
  2. 将iostream文件和源代码文件一起组合成一个复合文件(iostream文件内容取代程序中的代码行#include ),供下一阶段编译使用

解析:

① 预处理器的概念

  • C++和C一样,也使用一个预处理器,该程序在主编译之前对源文件进行处理
  • 预处理器处理以 # 开头的编译指令
  • 该预处理器在编译程序时自动运行
  • 其他功能的预处理器:有些翻译器会将C++转换为C程序,他们也是预处理器,但在本书中不做讨论

② iostream 文件

  • 功能:iostream 文件用于程序与外部世界的通信,开头两个字母 io 即I/O,I表示输入(进入程序的信息),O表示输出(从程序中发送出去的信息),C++的I/O方案涉及iostream文件中多个定义,为了使用 cin 和 cout 来输入/输出信息,我们的程序需要这些iostream文件中定义

③ #include 的含义

  • #include编译指令使iostream文件内容和源代码文件内容一同发送至编译器
  • 实际上,iostream文件内容将取代程序中的代码行#include ,原始文件没有被修改,而是将源代码和iostream组合成一个复合文件,编译的下一阶段将使用该文件

3)using namespace std; 是做什么用的?

答:using namespace std; 是名称空间(namespace)的编译指令,它使得命名空间std中所有名称都可用,并使得iostream中的定义对该程序可用

解析:

名称空间的概念

① 为什么需要namespace

名称空间使得编写大型程序、使多个厂商现有的代码组合起来的程序更容易,例如A、B公司都有wanda()函数,这时可以用 A::wanda() 和 B::wanda() 加以区分

② namespace的几种表示方法(以 std 为例)

a)使得一个命名空间中所有名称都可用

using namespace std;

b)使得一个命名空间中部分名称可用

using std::cout; // 名称 cout 可用
using std::cin; // 名称 cin 可用
using std::endl; // 名称 endl 可用

c)不使用命名空间

std::cout << "Hello world" << std::endl;

4)什么语句可以用来打印 "hello, world" 然后开始新的一行?

代码:

std::cout << "Hello world" << std::endl;

5)什么语句可以用来创建名为cheeses的整数变量?

代码:

int cheeses = 0; // 初始化为0

6)什么语句可以用来将32赋值给变量cheese?

代码:

cheeses = 32;

7)什么语句可以用来将从键盘输入的值读入变量cheeses中?

代码:

std::cin >> cheeses;

8)什么语句可以用来打印 we have X varieties of cheeese,其中X变量是变量cheeses的当前值

代码:

std::cout << "we have " << cheeses << " varieties of cheeese" << std::endl;

9)下面的函数原型指出了关于函数的那些信息?

函数原型:

int froop(double t);
void rattle(int n);
int prune(void);

答:

int froop(double t); 

  • 函数名:froop
  • 输出的数据类型:int
  • 输入的数据类型:double

void rattle(int n);

  • 函数名:rattle
  • 输出的数据类型:void(无输出)
  • 输入的数据类型:int

int prune(void);

  • 函数名:prune
  • 输出的数据类型:int
  • 输入的数据类型:void(无输入参数)

10)定义函数时,在什么情况下不必使用关键字return?

答:在返回值为void类型的函数中

P.S. 对于新版的C++编译器,main函数不写return 0;也是可以的,编译器会自己加一个,但是为了养成好习惯,还是建议加上return 0;

** 参考:main函数里不写return 0,会怎么样?

11)假设main()函数包含如下代码:cout << "Please enter your PIN:"; 而编译器指出cout是一个未知标识符,导致这种问题的原因很可能是什么?并指出三种修复方法

答:

a)原因:未使用命名空间std

b)修复方法:

① 不使用命名空间std

std::cout << "Please enter your PIN:";

② 仅使用std::cout

using std::cout;

cout << "Please enter your PIN:";

③ 使用命名空间std

using namespace std;

cout << "Please enter your PIN:";

Part C. 编程练习

第二章入门级别的编程对于我来说太简单了,就先不写了,有需要答案的评论区留言,没需要我就不写了哈= =

你可能感兴趣的:(C++基础,c++,编程语言)