程序的设计教程_用C语言编程(第二版)课后答案

程序设计教程 --用C语言编程 (第二版习题解答) 目 录 第1章 概述2 第2章 基本数据类型和表达式4 第3章 程序的流程控制语句7 第4章 过程抽象函数16 第5章 构造数据类型22 第6章 数据抽象类37 第7章 操作符重载53 第8章 继承派生类77 第9章 类属(泛型)机制模板87 第10章 输入/输出(I/O)89 第11章 异常处理90 第12章 实例--面向对象的Windows应用程序框架90 第1章 概述 1、 简述诺依曼计算机的工作模型。

答诺依曼计算机的工作模型是待执行的程序从外存装入到存中,CPU从存中逐条地取程序中的指令执行;
程序执行中所需要的数据从存或从外设中获得,程序执行中产生的中间结果保存在存中,程序的执行结果通过外设输出。

2、 简述寄存器、存以及外存的区别。

答寄存器主要用于记录下一条指令的存地址、当前指令的执行状态以及暂时保存指令的计算结果供下一(几)条指令使用,其作用主要是减少访问存的次数,提高指令的执行效率。

存用于存储计算机程序(指令和数据),存由许多存储单元构成,每个存储单元都有一个地址,对存储单元的访问是通过其地址来进行的,与寄存器相比,存的容量要大得多,但指令访问存单元所花费的时间比访问寄存器要多得多。

外存是大容量的低速存储部件,用于永久性地存储程序、数据以及各种文档等信息,存储在外存中的信息通常以文件形式进行组织和访问,外存储了在容量和速度上与存不同,另一个区别在于存中存储的是正在运行的程序和正在使用的数据,外存中存储的则是大量的、并非正在使用的程序和数据。

3、 CPU能执行哪些指令 答CPU所能执行的指令通常有 算术指令实现加、减、乘、除等运算。

比较指令比较两个操作数的大小。

数据传输指令实现CPU的寄存器、存以及外设之间的数据传输。

执行流程控制指令用于确定下一条指令的存地址,包括转移、循环以及子程序调用/返回等指令。

4、 什么是软件软件是如何分类的 答计算机软件是计算机系统中的程序以及有关的文档。程序是对计算任务的处理对象(数据)与处理规则(算法)的描述;
文档是为了便于人理解程序所需的资料说明,供程序开发与维护使用。

软件通常可以分为系统软件、支撑软件和应用软件。系统软件居于计算机系统中最靠近硬件的一级,它与具体的应用领域无关,其他软件一般要通过系统软件发挥作用,如操作系统属于系统软件。支撑软件是指支持软件开发与维护的软件,一般由软件开发人员使用,如软件开发环境就是典型的支撑软件。应用软件是指用于特定领域的专用软件,如人口普查软件、财务软件等。

5、 什么是虚拟机 答在由硬件构成的计算机(称为“裸机”)之上,加上一些软件就得到了一个比它功能更强的计算机,称为“虚拟机”。

6、 十进制数0.1的二进制表示是什么 答0.110 0.000110011...2,它是无限循环小数。也就是说,十进制数0.1无法精确用二进制表示 7、 简述程序设计型。

答基于不同的计算模型来对计算进行描述就形成了不同的程序设计型。典型的程序设计型有过程式、对象式、函数式以及逻辑式等。

过程式程序设计是一种以功能为中心、基于功能分解和过程抽象的程序设计型。一个过程式程序由一些子程序构成,每个子程序对应一个子功能,它实现了功能抽象。

对象式程序设计是一种以数据为中心、基于数据抽象的程序设计型。一个面向对象程序由一些对象构成,对象是由一些数据及可施于这些数据上的操作所组成的封装体。

函数式程序设计是围绕函数来进行的,计算过程体现为一系列的函数应用。

逻辑程序设计是把程序组织成一组事实和一组推理规则,在事实基础上运用推理规则来实施计算。

8、 简述程序设计的步骤。

答程序设计一般遵循以下步骤 明确问题;

系统设计;

用某种语言进行编程;

测试与调试;

运行与维护 9、 低级语言与高级语言的不同之处是什么 答低级语言是指与特定计算机体系结构密切相关的程序语言,它是特定计算机能够直接理解的语言(或与之直接对应的语言),包括机器语言和汇编语言。低级语言的优点在于写出的程序效率比较高,包括执行速度快和占用空间少。其缺点是程序难以设计、理解与维护,难以保证程序的正确性。

高级语言是指人容易理解和有利于人对解题过程进行描述的程序语言。高级语言的优点在于程序容易设计、理解与维护,容易保证程序正确性。高级语言的缺点是用其编写的程序相对于用低级语言编写的程序效率要低,翻译成的目标代码量较大。

10、 简述编译与解释的区别。

答编译是指把高级语言程序首先翻译成功能上等价的机器语言程序或汇编语言程序,然后执行目标代码程序,在目标代码程序的执行中不再需要源程序。

解释则是指对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了,这种翻译方式不产生目标程序。一般来说,编译执行比解释执行效率要高。

11、 简述C++程序的编译执行过程。在你的C开发环境中运行1.3.2节中给出的简单C程序。

答首先可以利用某个编辑程序把C源程序输入到计算机中,并作为文件保存到外存中,文件名为“*.cpp”和“*.h”。然后利用某个C编译程序对保存在外存中的C源程序进行编译,编译结果作为目标文件保存到外存,文件名为“*.obj”。然后再通过一个联接程序把由源文件产生的目标文件以及程序中用到的一些系统功能所在的目标文件联接起来,作为一个可执行文件保存到外存,文件名为“*.”。最后通过操作系统提供的应用程序运行机制,把可执行文件装入存,运行其中的可执行程序。

在Visual C 6.0环境中,首先要建立一个project(项目);
其次往该project中添加、编辑程序模块(源文件);
然后选择菜单Build中的Build ... 或Rebuild All;
最后选择菜单Build中的cute ...运行程序。

12、 C的单词分成哪些种类 答构成C的单词有标识符、关键词、字面常量、操作符以及标点符号等。

13、 下面哪一些是合法的C标识符 extern, _book, Car, car_1, ca1r, 1car, friend, car1_Car, Car_Type, No.1, 123 答合法的C标识符_book, Car, car_1, ca1r, car1_Car, Car_Type 第2章 基本数据类型和表达式 1、 C提供了哪些基本数据类型检查你的计算机上各种类型数据所占存空间的大小(字节数)。

答C提供了以下5种基本数据类型整数类型、实数类型、字符类型、逻辑类型以及空值类型。一台计算机上各种数据类型的数据所占用的存大小(字节数)可以通过“sizeof类型名”来计算。

2、 下面哪一些是合法的C字面常量,它们的类型是什么 -5.23,1e50, -25, 105, 20 .20,e5, 1e-5, -0.0e5, \n -000,A, 5, 3.14, false red,\r, \f “Today is Monday.“, “\““ 答字面常量是指在程序中直接写出常量值的常量。-5.23, 1e50,-25, 20 ,.20, 1e-5, -0.0e5, \n, -000, A, 5, \r, \f , “Today is Monday.“, “\““都是字面常量。其中 整数类型常量-25, 20, -000 实数类型常量-5.23, 1e50 , .20, 1e-5, -0.0e5 字符常量 \n, A, 5, \r, \f 字符串常量“Today is Monday.“, “\““ 3、 什么是符号常量符号常量的优点是什么 答符号常量是指有名字的常量,在程序过常量的名字来使用这些常量。程序中使用符号常量有以下优点 1) 增加程序易读性 2) 提高程序对常量使用的一致性 3) 增强程序的易维护性 4、 如何理解变量变量定义和声明的作用是什么 答在程序中,其值可以改变的量称为变量。变量可以用来表示可变的数据。

程序中使用到的每个变量都要有定义。变量定义指出变量的类型和变量名,另外还可以为变量提供一个初值。

C中使用变量之前,必须对使用的变量进行声明(变量定义属于一种声明,即定义性声明),变量声明指出了一个变量的类型,使得编译程序能对变量的操作进行类型检查并做相应的类型转换。

整个程序中,某变量的定义只能由一个,但它的声明可以有多个。

5、 什么是表达式其作用是什么 答表达式是由操作符、操作数以及圆括号所组成的运算式。在程序设计语言中,对数据操作的具体实施是通过表达式来描述的。

6、 操作符的优先级和结合性分别是指的什么 答运算符的优先级和结合性决定表达式中各个运算符的运算次序。操作符的优先级规定了相邻的两个操作符谁先运算优先级高的先计算;
如果相邻的两个操作符具有相同的优先级,则需根据操作符的结合性来决定先计算谁,操作符的结合性通常分为左结合和右结合左结合表示从左到右计算,右结合表示从右到左计算。

7、 表达式中的类型转换规则是什么下面的表达式计算时如何进行操作数类型转换 (1) 3/5*12.3 (2) a10*5.2 (3) 12U3.0F*24L 答表达式中类型转换规则是基于单个操作符依次进行转换。

1)3与5同类型,不转换,结果为0,转换成double型后与12.3做乘法。

2)10转换成double型与5.2做乘法,’a’转换成double型后与前者结果做加法。

3)3.0F与24L均转换成double型后做乘法,12U转换成double型后与前者结果做加法。

8、 将下列公式表示成C的表达式 (1) (可利用C标准库中的求平方根的函数sqrtx) (2) (3) 答1)-1*bsqrtb*b-4*a*c/2*a 2)sqrts*s-a*s-b*s-c 3)a*b/c*d*3/1b/2.5c4*pi*r*r*r/3 9、 写出下列条件的C表达式 (1) i能被j整除。

(2) ch为字母字符。

(3) m为偶数。

(4) n是小于100的奇数。

(5) a、b、c构成三角形的三条边。

答1)ij0 2)cha int main {double a3.3, b1.1; int ia/b; cout i endl; return 0; } 结果与你预期的是否相符如果不符,请解释它的原因。

答运行结果为2。由于十进制小数3.3和1.1无法用dou