C++习题和答案

C++课后习题及答案 一、 选择填空 1. 下列各种高级语言中,( )是面向对象的程序设计语言。 A.BASIC; B.PASCAL; C.C++ D.Ada 2. 下列各种高级语言中,( )是最早提出了对象的概念。 A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ 3. 下述面向对象抽象的原理中,( )是不对的。 A. 数据抽象; B. 行为共享; C.进化; D. 兼容; 4. ( )不是面向对象系统所包含的要数。 A. 重载; B. 对象; C. 类; D. 继承; 5. 关于C++与C语言的关系的描述中,( )是错误的。 A. C语言是C++的一个子集; B. C语言与C++是兼容的; C. C++对C语言进行了一些改进; D. C++和C语言都是面向对象的; 6. 下面关于对象概念的描述中,( )是错误的。 A.对象就是C语言中的结构变量; B.对象代表着正在创建的系统中的一个实体; C. 对象是一个状态和操作(或方法)的封装体; D.对象之间的信息传递是通过消息进行的; 7. 下面关于类概念的描述中,( )是错误的。 A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类就是C语言中的结构类型; 8. C++对C语言作了很多改进,下列描述中( )使得C语言发生了质变,即从面向过程变成为面向对象。 A.增加了一些新的运算符; B.允许函数重载,并允许设置缺省参数; C.规定函数说明必须用原型; D.引进了类和对象的概念; 9. 按照标识符的要求,( )符号不能组成标识符。 A.连接符; B. 下划线; C.大小写字母; D.数字字符; 10. 下列符号中,( )不可作为分隔符。 A.,; B.:;C.?; D.; ### C++习题知识点解析 #### 一、选择填空 1. **面向对象的程序设计语言** - **选项**: A.BASIC; B.PASCAL; C.C++; D.Ada - **正确答案**: C.C++ - **解析**: C++ 是一种支持面向对象编程的语言,它是在 C 语言的基础上发展起来的。BASIC 和 Pascal 不支持面向对象编程,而 Ada 虽然支持某些面向对象特性,但 C++ 更全面地支持这一编程范式。 2. **最早提出对象概念的高级语言** - **选项**: A.Algol 60; B.Simula 67; C.Smalltalk; D.C++ - **正确答案**: B.Simula 67 - **解析**: Simula 67 被认为是第一个真正意义上的面向对象编程语言,它首次引入了对象、类等概念。Algol 60 是过程化的,Smalltalk 在 Simula 之后提出并进一步发展了面向对象编程,而 C++ 则是在这些基础上发展起来的。 3. **面向对象抽象的错误原理** - **选项**: A.数据抽象; B.行为共享; C.进化; D.兼容; - **正确答案**: D.兼容; - **解析**: 面向对象的抽象原则包括数据抽象、行为共享以及进化。兼容并不是面向对象编程的核心原理之一,而是指不同系统之间可以互相协作或者互换部件的能力。 4. **非面向对象系统的要素** - **选项**: A.重载; B.对象; C.类; D.继承; - **正确答案**: A.重载 - **解析**: 重载(Overloading)是面向对象编程中的一个重要特性,允许在一个类中定义多个同名但参数列表不同的方法。而对象、类和继承则是面向对象编程的基本构成元素。 5. **关于 C++ 与 C 语言关系的错误描述** - **选项**: A.C语言是C++的一个子集; B.C语言与C++是兼容的; C.C++对C语言进行了一些改进; D.C++和C语言都是面向对象的; - **正确答案**: D.C++和C语言都是面向对象的; - **解析**: C++ 是基于 C 语言发展起来的,因此 C 语言是 C++ 的一个子集,并且两者在很多方面是兼容的。C++ 引入了许多新的概念如类、对象、继承等,使其支持面向对象编程,而 C 语言本身并不支持面向对象编程。 6. **关于对象概念的错误描述** - **选项**: A.对象就是C语言中的结构变量; B.对象代表着正在创建的系统中的一个实体; C.对象是一个状态和操作(或方法)的封装体; D.对象之间的信息传递是通过消息进行的; - **正确答案**: A.对象就是C语言中的结构变量 - **解析**: 对象不仅仅是数据的集合,它是状态和行为的封装体。C 语言中的结构体仅仅是一些数据成员的组合,并不包含任何行为。 7. **关于类概念的错误描述** - **选项**: A.类是抽象数据类型的实现; B.类是具有共同行为的若干对象的统一描述体; C.类是创建对象的样板; D.类就是C语言中的结构类型; - **正确答案**: D.类就是C语言中的结构类型; - **解析**: 类不仅仅是数据的集合,它还包含了成员函数,用于描述对象的行为。C 语言中的结构体仅包含数据成员,而不包含函数。 8. **使 C 语言发生质变的改进** - **选项**: A.增加了一些新的运算符; B.允许函数重载,并允许设置缺省参数; C.规定函数说明必须用原型; D.引进了类和对象的概念; - **正确答案**: D.引进了类和对象的概念; - **解析**: 引入类和对象的概念是 C++ 相对于 C 最大的改进之一,这使得 C++ 成为了支持面向对象编程的语言。其他选项虽然也是 C++ 的改进之处,但并未导致 C 语言的根本性质发生变化。 9. **不符合标识符要求的符号** - **选项**: A.连接符; B.下划线; C.大小写字母; D.数字字符; - **正确答案**: A.连接符; - **解析**: 在 C++ 中,标识符可以由字母、数字和下划线组成,但不能以数字开头,也不能包含特殊符号如连接符。 10. **不可作为分隔符的符号** - **选项**: A.,; B.:; C.?; D.; - **正确答案**: C.? - **解析**: 在 C++ 中,逗号 (,)、冒号 (:) 和分号 (;) 常用作语句或表达式的分隔符。问号 (?) 通常用于条件运算符中,而不是作为分隔符。 #### 二、判断题解析 1. **C++ 引进的引用概念** √ - **解析**: 引用是 C++ 的一个重要特性,它提供了更高效和更安全的方式来处理变量和数据。 2. **C++ 允许使用友元** √ - **解析**: 友元确实会破坏封装性,因为它允许一个函数或类访问另一个类的私有成员。 3. **C++ 中的注释符** × - **解析**: C++ 支持 C 风格的注释 /*...*/, 并且引入了 // 这种新的注释风格。 4. **C++ 减少了一些运算符** × - **解析**: 实际上,C++ 相对于 C 添加了一些新的运算符,例如用于字符串操作的新运算符。 5. **C++ 语句结尾的分号** √ - **解析**: 在 C++ 中,每个语句都必须以分号 (;) 结尾。 6. **C++ 中标识符的大小写敏感性** × - **解析**: C++ 中标识符是区分大小写的,这意味着 `Var` 和 `var` 是两个不同的标识符。 7. **C++ 中定义符号常量的方式** × - **解析**: C++ 支持使用宏定义 (`#define`) 和 `const` 关键字两种方式定义符号常量。 8. **C++ 编程格式的重要性** √ - **解析**: 使用标准的格式有助于提高代码的可读性和维护性。 9. **C++ 的实现方式** √ - **解析**: C++ 是一种编译型语言,需要经过编译器转换成机器码才能执行。 10. **C++ 编译过程的步骤** √ - **解析**: C++ 的编译过程通常包括预处理、编译和链接三个阶段,这个顺序通常是固定的。 11. **预处理过程的位置** × - **解析**: 预处理过程是在编译过程之前发生的。 12. **编译和连接过程中的错误** × - **解析**: 在编译和连接过程中都可能出现错误信息。 #### 三、程序输出结果分析 1. **输出字符串** - **代码**: ```cpp cout<<"BeiJing"<<""; cout<<"ShangHai"<<"\n"; cout<<"TianJing"<<endl; ``` - **输出结果**: BeiJingShangHai TianJing - **解析**: 第一行输出 "BeiJing" 后紧接着输出空字符串 "", 实际上是没有任何效果的。第二行和第三行分别输出 "ShangHai" 和 "TianJing",并在 "ShangHai" 后添加了换行符,所以 "TianJing" 输出在新的一行。 2. **读取并输出数据** - **代码**: ```cpp int a, b; cout<<"input a, b:"; cin>>a>>b; cout<<"a="<<a<<","<<"b="<<b<<endl; cout<<"a-b="<<a-b<<"\n"; ``` - **假设输入**: 85 - **输出结果**: input a, b: 8 5 a=8,b=5 a-b=3 - **解析**: 输入时应该提供两个数,如 "8 5",而不是只输入 "85"。如果按示例输入,则 a 会被赋值为 8,b 会被赋值为 5,所以输出结果为 "a=8,b=5" 和 "a-b=3"。 3. **输出字符和整数** - **代码**: ```cpp char c='m'; int d=5; cout<<"d="<<d<<":"; cout<<"c="<<c<<"\n"; ``` - **输出结果**: d=5:c=m - **解析**: 输出 d 和 c 的值。这里需要注意的是,输出 d 后没有立即换行,而是接着输出 ":",因此 "c=m" 会在同一行输出。 #### 四、程序调试及输出结果 1. **缺少头文件和主函数类型** - **原始代码**: ```cpp main() { cout<<"Thisisastring!"; } ``` - **修改后代码**: ```cpp #include<iostream.h> void main() { cout<<”Thisisastring!”; } ``` - **输出结果**: Thisisastring! 2. **变量声明、类型转换和输出** - **原始代码**: ```cpp #include<iostream.h> void main() { cin>>x; int p=x*x; cout<<"p=<<p<<\n"; } ``` - **修改后代码**: ```cpp #include<iostream.h> void main() { int x; cin>>x; int p=x*x; cout<<”p=”<<p<<”\n”; } ``` - **假设输入**: 3 - **输出结果**: p=9 3. **变量声明和使用未初始化的变量** - **原始代码**: ```cpp #include<iostream.h> void main() {int i,j; i=5; int k=i+j; cout<<"i+j="<<k<<"\n"; } ``` - **修改后代码**: ```cpp #include<iostream.h> void main() { int i, j; i = 5; j = 0; // 初始化 j 为 0 int k = i + j; cout << "i+j=" << k << "\n"; } ``` - **输出结果**: i+j=5 - **解析**: 在原始代码中,变量 `j` 未被初始化就使用,这可能导致未定义行为。修改后的代码中 `j` 被初始化为 0,因此输出结果为 "i+j=5"。




































剩余63页未读,继续阅读

- x_ish2013-08-17东西很不错,要出考题的人可以参考一下
- SuperCircle2013-05-04不错,但好像略微浅显了一些,对没有面向对象基础的人更为有用
- a1233252013-10-14非常不错,感谢分享!!!深度刚好

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大气污染控制工程教学日程-303406346.doc
- 重庆市某住宅施工测量专项方案.doc
- 某高层住宅土方开挖工程监控方案.doc
- 项目教学法及其在数据库课程教学中的应用.ppt
- 2021休闲类游戏网络运营代理协议范本.doc
- 海外业务子体系机修厂工作指导书范本.pdf
- 黑龙江省发展高新技术产业计划项目合同书.doc
- 危险源辨识、风险分级与风险控制培训.pptx
- 华为任职资格和员工能力管理(最全面版本).ppt
- 工程部劳动力调配管理办法.doc
- Unit4StageandScreenStartingoutUnderstandingIdeas配套.docx
- [QC成果]确保蒸压加气混凝土砌块墙体质量.doc
- 怎样做好房地产项目前期规划.doc
- 项目部qes管理应急预案.docx
- 未来有发展前景十大通信技术.doc
- 乡村公路建设预算定额(14).doc


