C++课后习题 联系客服

发布时间 : 星期日 文章C++课后习题更新完毕开始阅读9e4230dc0b4e767f5acfcedc

博学谷——让IT教学更简单,让IT学习更有效

第一章题目

一、填空题

1、C++是一种的语言。

2、C++作为一门面向对象语言,它的三大特性分别是、、。 3、C++有、、、、等优点,但C++语言本身过度复杂,并且C++编译器受到C++复杂性的影响,非常难于编写,即使能够使用的编译器也存在大量问题,而且这些问题大多难于发现。 4、观察程序,在下面括号内填入“相等”或“不相等”。 #include using namespace std; int main(void) { int a ,b; cin>> a >> b; bool c = (a == b); if(c) cout<<\与 b ( )\ else cout<<\与 b ( )\ return 0; }

二、选择题

5、下列关于iostream的描述中,错误的是()。 A、它是标准的C++头文件

B、它与iostream.h是两个不同文件 C、C++标准不再支持iostream.h文件

D、iostream与iostream.h文件形式不同,但其内容实现是一样的 6、下列关于C++中的类型转换的说法中,错误的是()。 A、static_cast<>可用于基本数据类型之间的转换

B、const_cast<>在进行类型转换时用来修改类型的const或volatile属性

C、dynamic_cast<>主要用于类层次间的上行和下行转换,以及类之间的交叉转换

D、reinterpret_cast<>在进行类型转换时可以对数据类型进行检查,以确保转换的安全性 7、下列关于string的描述中,正确的是() A、string是C++中的基本数据类型 B、string包含在头文件iostream中

C、用C++ string类来定义字符串,不必担心字符串长度、内存不足等情况 D、C++中无法用字符数组来处理字符串 8、下列关于引用的说法中,错误的是() A、引用在定义时必须初始化 B、引用就是指针

C、引用在初始化时只能绑定左值,不能绑定常量值 D、引用一旦初始化,其值就不能再更改 三、判断题

博学谷——让IT教学更简单,让IT学习更有效

9、语句using namespace std;是对标准命名空间的引用。

10、如果定义string s(5, ‘a’); 则s.length()和s.size()的值是相等的。 11、引用实际上是隐式的指针,和指针是同一种数据类型。 12、 一个函数一旦定义成了内联函数,则在调用时就会将函数代码插入到调用处。 四、简答题

13、请简述一下引用与指针的区别。

14、请简述一下new与malloc在分配内存时的区别。

15、定义一组重载函数,实现int、float、char类型数据的相加。

第一章答案

1、面向对象

2、封装 继承多态。

3、保持与C兼容 支持面向对象的机制可重用性、可扩充性、可靠性和可维护性 代码性能高多种设计风格 4、相等 不相等 5、D 6、D 7、C 8、B 9、对 10、对 11、错 12、错

13、引用是隐式的指针,但使用引用与使用指针却有着本质的区别:

(1)使用引用类型就不必在swap()函数中声明形参是指针变量。指针变量要另外开辟内存单元,其内容是地址。而引用变量不是一个独立的变量,不单独占内存单元。

(2)在main()函数中调用swap()函数时,实参不必用变量的地址(在变量名的前面加&),而直接用变量名。系统向形参传送的是实参的地址而不是实参的值。 14、

(1)new创建对象时返回的是直接带类型信息的指针,而malloc()返回的都是void*类型的指针.

(2)两者在创建对象时都可能造成内存泄露,但new可以定位到哪个文件的哪一行,而malloc()没有这些信息。

(3)对于非内置类型对象而言,new/delete在创建对象时不止是分配内存,还会自动执行构造函数进行初始化,对象消亡之前自动执行析构函数,而malloc()/free()只能简单的分配释放内存。

(4)new与malloc()申请内存位置不同,new从自由存储区(free store)分配,而malloc()从堆区(heap)分配。(这一点依据编绎器不同而不同)。 15、

#include using namespace std;

void add(int x, int y)

博学谷——让IT教学更简单,让IT学习更有效 { cout << x + y << endl; }

void add(char ch1, char ch2) { cout << ch1 + ch2 << endl; }

void add(double f1, double f2) { cout << f1 + f2 << endl; }

int main() { add(1, 2); add('a', 'b'); add(1.2, 2.3); system(\ return 0; }

第二章题目

一、填空题

1、类的默认访问权限是。

2、C++作为类的每个成员函数都有一个隐含定义的指针,称为指针,它的类型是成员函数所属类的类型。

3、若类A中包含成员对象x,则创建A类对象时,先执行的构造函数,再执行的构造函数。 4、已知如下程序的输出结果是23,请将画线处缺失的部分补充完整。 #include using namespace std; class MyClass{ public:

void Print() const { cout << 23;} };

int main() {

MyClass *p = new MyClass(); Print(); return 0; }

二、选择题

博学谷——让IT教学更简单,让IT学习更有效

5、下列关于结构化程序设计方法的说法中,错误的是()。 A、在数据处理过程中,采用的是自顶向下、分而治之的方法 B、将整个程序按功能划分为几个可独立编程的子模块 C、以“对象”和“数据”为中心

D、数据和处理数据的过程代码是分离的、相互独立的实体 6、有如下程序: #include using namespace std;

class MyClass{ public: MyClass(){ cout << 'A'; } MyClass(char c){ cout << c; } ~MyClass(){ cout << 'B'; } };

int main() { MyClass p1, *p2; p2 = new MyClass('X'); delete p2; system(\ return 0; }

执行这个程序,屏幕上将显示输出()。 A、 ABX B、 ABXB C、 AXB D、 AXBB

7、下列情况下,不会调用拷贝构造函数的是()。 A、 用一个对象去初始化同一类的另一个对象时 B、 将类的一个对象赋予该类的另一个对象时

C、 函数的形参是类的对象,调用函数进行形参和实参结合时 D、 函数的返回值是类的对象,函数执行返回调用时 8、下列关于静态成员的描述中,错误的是() A、静态成员不属于对象,是类的共享成员 B、静态数据成员要在类外定义和初始化

C、调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针 D、非静态成员函数也可以操作静态数据成员 三、判断题

9、定义对象引用时,可以对其引用进行初始化,也可以不进行初始化。 10、创建对象时会为每个对象的数据成员和成员函数都分配空间。

11、使用class定义的类,其默认的访问权限是公有的,使用struct定义的类,其默认的访

问权限是私有的。 12、如果一个类拥有资源,比如开辟空间,当这个类的对象发生复制的时候,资源重新分配,