c++语言程序设计课后答案

2020-03-27 20:05

2-20运行下面的程序,观察其输出,体会 i++与++i的差别。 #include int main() {

int myAge = 39; // initialize two integers int yourAge = 39;

cout << \ cout << \ myAge++; // postfix increment ++yourAge; // prefix increment cout << \

cout << \ cout << \ cout << \

cout << \ cout << \

cout << \ cout << \ return 0; } 解:

程序运行输出: I am 39 years old You are 39 years old One year passes I am 40 years old You are 40 years old Another year passes I am 40 years old You are 41 years old Let's print it again I am 41 years old You are 41 years old

3-4 什么叫内联函数 ?它有哪些特点? 解:

定义时使用关键字 inline的函数叫做内联函数;编译器在编译时在调用处用函数体进行替换,节省了参数传递、控制转移等开销;内联函数体内不能有循环语句和 switch语句;内联函数的定义必须出现在内联函数第一次被调用之前;对内联函数不能进行异常接口声明;

3-5 函数原型中的参数名与函数定义中的参数名以及函数调用中的参数名必须一致吗? 解:

不必一致,所有的参数是根据位置和类型而不是名字来区分的。

1 / 9

3-6 调用被重载函数时,通过什么来区分被调用的是哪个函数? 解:

重载的函数的函数名是相同的,但它们的参数的个数和数据类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数。

3-11什么叫作嵌套调用?什么叫作递归调用? 解:

函数允许嵌套调用。如果函数1调用了函数 2,函数 2再调用函数 3,便形成了函数的嵌套调用。函数可以直接或间接地调用自身,称为递归调用。

4-3 构造函数和析构函数有什么作用? 解:

构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象初始化为一个特定的状态,使此对象具有区别于彼对象的特征,完成的就是是一个从一般到具体的过程,构造函数在对象创建的时候由系统自动调用。析构函数与构造函数的作用几乎正好相反,它是用来完成对象被删除前的一些清理工作,也就是专门作扫尾工作的。一般情况下,析构函数是在对象的生存期即将结束的时刻由系统自动调用的,它的调用完成之后,对象也就消失了,相应的内存空间也被释放。

4-4 数据成员可以为公有的吗?成员函数可以为私有的吗? 解:

可以,二者都是合法的。数据成员和成员函数都可以为公有或私有的。但数据成员最好定义为私有的。

4-6 什么叫做拷贝构造函数?拷贝构造函数何时被调用? 解:

拷贝构造函数是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本类的对象的引用,其作用是使用一个已经存在的对象,去初始化一个新的同类的对象。在以下三种情况下会被调用:在当用类的一个对象去初始化该类的另一个对象时;如果函数的形参是类对象,调用函数进行形参和实参结合时;如果函数的返回值是类对象,函数调用完成返回时;

4-7 拷贝构造函数与赋值运算符 (=)有何不同? 解:

赋值运算符 (=)作用于一个已存在的对象;而拷贝构造函数会创造一个新的对象。

4-11定义一个矩形类,有长、宽两个属性,有成员函数计算矩形的面积 解:

#include class Rectangle { public:

Rectangle(float len, float width) {

Length = len; Width = width; }

~Rectangle(){};

float GetArea() { return Length * Width; } float GetLength() { return Length; }

2 / 9

float GetWidth() { return Width; } private: float Length; float Width; }; void main() {

float length, width;

cout << \请输入矩形的长度:\ cin >> length;

cout << \请输入矩形的宽度:\ cin >> width;

Rectangle r(length, width);

cout << \长为\宽为\的矩形的面积为:\ }

程序运行输出: 请输入矩形的长度:5 请输入矩形的宽度:4

长为 5、宽为 4的矩形的面积为: 20

5-1 什么叫做作用域?有哪几种类型的作用域? 解:

作用域讨论的是标识符的有效范围,作用域是一个标识符在程序正文中有效的区域。 C++的作用域分为函数原形作用域、块作用域(局部作用域)、类作用域和文件作用域.

5-2 什么叫做可见性?可见性的一般规则是什么? 解:

可见性是标识符是否可以引用的问题;可见性的一般规则是:标识符要声明在前,引用在后,在同一作用域中,不能声明同名的标识符。对于在不同的作用域声明的标识符,遵循的原则是:若有两个或多个具有包含关系的作用域,外层声明的标识符如果在内层没有声明同名标识符时仍可见,如果内层声明了同名标识符则外层标识符不可见。

5-3 下面的程序的运行结果是什么,实际运行一下,看看与你的设想有何不同。 #include void myFunction(); int x = 5; int y = 7; int main() {

cout << \ cout << \ myFunction();

cout << \ cout << \ cout << \ return 0;

3 / 9

}

void myFunction() {

int y = 10;

cout << \ cout << \ } 解:

程序运行输出: x from main: 5 y from main: 7 x from myFunction: 5 y from myFunction: 10 Back from myFunction! x from main: 5 y from main: 7

5-4 假设有两个无关系的类 Engine和 Fuel,使用时,怎样允许 Fuel成员访问 Engine中的私有和保护的成员? 解: 源程序: class fuel; class engine {

friend class fuel; private:

int powerLevel; public:

engine(){powerLevel = 0;} void engine_fn(fuel &f); }; class fuel {

friend class engine; private: int fuelLevel; public:

fuel(){ fuelLevel = 0;} void fuel_fn( engine &e); };

6-2 在数组 A[20]中第一个元素和最后一个元素是哪一个? 解:

第一个元素是 A[0],最后一个元素是 A[19]。

4 / 9

6-7 什么叫做指针?指针中储存的地址和这个地址中的值有何区别? 解:

指针是一种数据类型,具有指针类型的变量称为指针变量。指针变量存放的是另外一个对象的地址,这个地址中的值就是另一个对象的内容。

6-10定义一个有五个元素的int型数组,在程序中提示用户输入元素值,最后再在屏幕上显示出来。 解:

#include int main() {

int myArray[5]; int i;

for ( i=0; i<5; i++) {

cout << \ cin >> myArray[i]; }

for (i = 0; i<5; i++)

cout << i << \ return 0; }

程序运行输出: Value for myArray[0]: 2 Value for myArray[1]: 5 Value for myArray[2]: 7 Value for myArray[3]: 8 Value for myArray[4]: 3 0: 2 1: 5 2: 7 3: 8 4: 3

6-17 下列程序有什么问题,请仔细体会使用指针时应该如何避免出现这个问题。 解:

指针 p没有初始化,也就是没有指向某个确定的内存单元,它指向内存中的一个随机地址,给这个随机地址赋值是非常危险的。

6-18下列程序有何问题,请改正;仔细体会使用指针时应避免出现的这个问题。 #include int Fn1(); int main() {

5 / 9


c++语言程序设计课后答案.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:图书馆管理系统软件设计文档--示范

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: