IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++程序设计课后习题 -> 正文阅读

[C++知识库]C++程序设计课后习题

参考书目:《C++程序设计(第3版)》谭浩强 编著

第1章——C++的初步认识

1. 请根据你的了解,叙述C++的特点。C++对C有哪些发展?

  • C++主要有三个特点,即封装性、继承性和多态性。
  • 封装性:对于"计算机"这个类,我们将"计算机"的属性(如:颜色、重量、体积、样式等)和行为(启动、关机、散热等)全部打包封装在计算机类中,这样一方面使我们可以容易地看出这些属性和行为的"主人"是什么,进一步方便使用;另一方面也使这些属性和行为不会被错误地访问(例如,汽车也有启动这一行为,这就与计算机的启动行为重复,那么到底访问的是哪一个呢?)。这体现了面向对象编程的封装性。
  • 继承性:在设计了计算机类之后,我们又想设计一个笔记本计算机类,按照一般的思路应该再重新设计一个类。此时发现笔记本计算机类和计算机类很相似。与计算机类相比,笔记本计算机类只不过在属性上多了一个"电池",在方法上多了"打开盖子"和"安装电池",而且在逻辑上讲,它们是"同属"的关系,即笔记本计算机是计算机的一种。在这种关系下,可以在它们之间建立派生关系,让笔记本计算机类从计算机类中扩展出来,这相当于在计算机类原有的属性和方法的基础上扩展一些新的属性和方法,这样就产生了笔记本计算机类。
  • 多态性:但是,上面的设计也有一些问题,因为笔记本计算机与计算机之间的某些方法在具体实现上有细微的差别,如散热,通常台式机由于体积大,散热性能较好,而笔记本计算机体积小,散热性能较差,因此可能需要在外部增设一些散热设备。这就需要在笔记本计算机类中对"散热"方法再次定义,而在计算机类中只是模糊地提一下散热的概念,这体现的是面向对象程序设计的多态性。
  • C语言具有很强的数据处理能力,不仅仅是在软件开发上,在各类科研中都会用到它。但是随着软件规模和复杂度的增加,C语言渐渐有些不合时宜了,这主要体现在数据的封装上,这一点使C语言在数据的安全性上有很大的缺陷。另外,C语言属于面向过程的编程语言,这在企业级的大型程序中无法更好地实现分工。为了应对上述困难,C++语言应运而生,信息屏蔽是C++的一大特点。C++语言几乎继承了C语言的所有优点,但与C语言最大的区别在于"类(class)“的出现,类的出现使抽象程度更高的面向对象编程与泛型编程成为可能。另外,和C语言相比,C++语言引入了更多的特性,包括陈述性声明、类似函数的强制转换、new/delete操作符、布尔类型、参考类型、默认函数、函数重载、命名空间、类(包括所有和类相关的特性,如继承、成员函数、虚函数、抽象类等)、操作符重载、模板、”::"操作符、异常处理和运行时期识别等。

2. 一个C++程序是由哪几部分构成的?其中的每一部分分别起到什么作用?

  • 预处理指令——如#include预处理指令符,它负责告诉编译器,在程序编译之前将尖括号内的文件原地展开,这类文件一般称为头文件。它包含了程序运行的许多函数的声明以及类的接口,为程序的编译提供支持
  • 全局声明部分——包括对用户自己定义的数据类型的声明和程序中所用到的变量的定义。
  • 函数——实现操作的部分
    但是并不要求每一程序文件都必须全部具有以上3个部分,可以缺少某些部分(包括函数)。也就是说,有的程序文件可以不包括函数,而只包括预处理命令和(或)声明部分。

3. 从接受一个任务到获得最终结果,一般要经过几个步骤?

  • 经过5个步骤:①用C++语言编写程序 ②对源程序进行编译 ③将目标文件连接 ④运行程序 ⑤分析运行结果

4. 请说明编辑、编译、连接的作用。在编译后得到的目标文件为什么不能直接运行?

  • 编译是将高级语言写的指令通过编译系统转化为机器能够识别和执行的,由0和1组成的二进制指令,通过编译会将源文件转换为目标文件。目标文件中虽然包含了机器语言代码,但并不是一个完整的程序,由于缺少启动代码与库代码所以暂时不能运行。此时需要将目标文件和系统的库文件以及系统提供的其他信息进行连接,最终生成可直接运行的二进制文件.exe。

第2章 数据的存储、表示形式和基本运算

1. C++为什么要规定对所有用到的变量要"先定义,后使用"。这样做有什么好处?

  • 凡先被事先定义的,不作为变量名,这样就能保证程序中变量名使用得正确。如在声明部分写了int student;,而在执行语句中错写成statent,在编译时检查出statent未经定义,作为错误处理。
  • 每一个变量被指定为一确定类型,在编译时就能为其分配相应的存储单元。如指定a和b为int型,一般的编译系统对其分配4个字节,并按整数方式存储数据。
  • 指定每一变量属于一个特定的类型,这就便于在编译时,据此检查该变量所进行的运算是否合法。如整形变量a和b,可以进行求余运算。如果将a和b指定为实型变量,则不允许进行"求余"运算,在编译时会给出有关"出错信息"。

2. 字符常量与字符串常量有什么区别?

  • 用单撇号括起来的一个字符就是字符常量,在内存中占一个字节。字符常量只包括一个字符,如’AB’是不合法的,撇号是界定符,而不属于字符常量的一部分。
  • 用双撇号括起来的字符就是字符串常量,编译系统会在字符串最后自动加一个’\0’作为字符串结束标志。但’\0’并不是字符串的一部分,它只作为字符串的结束标志。
  • 如"a"和’a’代表不同的含义,前者是字符串常量,占两个字节,后者是字符常量,占一个字节。

3. 区别用#define指令定义的符号常量和用const定义的常变量

  • 符号常量只是用一个符号代替一个字符串,在预编译时把所有符号常量替换为所指定的字符串,它没有类型,在内存中并不存在以符号常量命名的存储单元。
  • 常变量具有变量的特征,它具有类型,在内存中存在着以它命名的存储单元,可以用sizeof运算符测出其长度。与一般变量唯一不同的是指定变量的值不能改变。
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 13:42:06  更:2022-01-01 13:43:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:44:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码