C++语言程序答案第 四版清华大学
第一章概述
1-1简述计算机程序设计语言的发展历程。 解:
迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等 阶段,C++语言是一种面向对象的编程语言,也属于高级语言。 1-2面向对象的编程语言有哪些特点? 解:
面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是 为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的 编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的 共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可 以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。 因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件 开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++ 语言是目前应用最广的面向对象的编程语言。
1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点? 解:
结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为 若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模 块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法 是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、 分而治之的方法,从而有效地将一个较复杂的程序系统设讣任务分解成许多易 于控制和处理的子任务,便于开发和维护。
虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计 方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变 时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法 都要带来额外的开销,程序的可重用性差。
由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使 川起来越来
越方便,但开发起来却越来越困难,对这种软件的功能很难用过程 来描述和实现,使用面向过程的方法来开发和维护都将非常困难。
1-4什么是对象?什么是面向对象方法?这种方法有哪些特点? 解:
从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的, 也可以是无形的。对象是构成世界的一个独立单位,它具有自己的静态特征和 动态特征。面向对象方法中的对象,是系统中用来描述客观事物的一个实体, 它是用来构成系统的一个基本单位,由一组属性和一组行为构成。
面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不 可分离的整体--对象。对同类型对象抽象出其共性,形成类。类中的大多数数 据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关 系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单, 程序模块的独立性、数据的安全性就有了良好的保障。通过实现继承与多态 性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。 面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开 发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软 件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思 维。 1-5什么叫做封装? 解:
封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独 立的系统单位,并尽可能隐蔽对象的内部细节。
1-6面向对象的软件工程包括哪些主要内容? 解:
面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向 对象的分析(OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、 面向对象的测试(OOT)和面向对象的软件维护(OOSM)等主要内容。
1-7简述计算机内部的信息可分为几类? 解:
计算机内部的信息可以分成控制信息和数据信息二大类;控制信息可分为指令 和控制字两类;数据信息可分为数值信息和非数值信息两类。 1-8什么叫二进制?使用二进制有何优点和缺点? 解:
二进制是基数为2,每位的权是以2为底的幕的进制,遵循逢二进一原则,基 本符号为。和1。采用二进制码表示信息,有如下几个优点:1 ,易于物理实现; 2,二进制数运算简单;3,机器可靠性高;4.通用性强。其缺点是它表示数的容量 较小,表示同一个数,二进制较其他进制需要更多的位数。
1-9请将以下十进制数值转换为二进制和十六进制补码:
(1) 2 (2) 9 (3) 93 (4) -32 (5) 65535 (6) -1
解:
(1) (2) (3) (4) (5)
(2) 10= (10) 2= (2) 16 (9) 10= (1001) 2= (9) 16 (93) 10= (1011101) 2= (5D) 16 (-32) 10= (11100000) 2= (E0) 16
(65535) 10= (11111111 11111111) 2= (FFFF) 16
(6) (-1) 10= (11111111 11111111) 2= (FFFF) 16
1-10请将以下数值转换为十进制:
(1) (1010) 2 (2) (10001111) 2 (3) (01011111 11000011) 2 (4) (7F) 16 (5) (2D3E) 16 (6) (F10E) 16
解:
(1) (1010) 2= (10) 10 (2) (10001111) 2= (143) 10
(3) (01011111 11000011) 2= (24515) 10 (4) (7F) 16= (127) 10 (5) (2D3E) 16= (11582) 10 (6) (F10E) 16= (61710) 10
1-11简要比较原码、反码、补码等几种编码方法。
解:
原码:将符号位数字化为。或1,数的绝对值与符号一起编码,即所谓\符号一 一绝对值表示”的编码。
正数的反码和补码与原码表示相同。 负数的反码与原码有如下关系:
符号位相同(仍用1表示),其余各位取反(0变1, 1变0)。 补码由该数反码的最末位加1求得。 第二章 C++简单程序设计
2-1 C++语言有那些主要特点和优点? 解:
C++语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的 方法。C++是一个更好的C,它保持了 C的简洁、高效、接近汇编语言、具有 良好的可读性和可移植性等特点,对c的类型系统进行了改革和扩充,因此 C++比C更安全,C++的编译系统能检查出更多的类型错误。C++语言最重要 的特点是支持面向对象。 2-2下列标识符哪些是合法的?
Program, -page,」ock, tes ⑵ 3inl, ?mail, A_B_C_D 解: Program, Jock, test2, A_B_C_D是合法的标识符,其它的不是。 2-3例2.1中每条语句的作用是什么? #include
(
cout?HHello!\\nH;
cout?HWelcome to c++!\\nM;
) 解:
#inckide
〃嵌入到该程序中该指令所在的地方
void main。〃主函数名,void表示函数没有返回值 {〃函数体标志
coutvv”Hello!\\n”;〃输出字符串Hello!到标准输出设备(显示器)上。 cout?HWelcome to c++!\\nM; 〃输出字符串 Welcome to C++!