logo资料库

c++语言程序设计第三版课后习题答案.pdf

第1页 / 共192页
第2页 / 共192页
第3页 / 共192页
第4页 / 共192页
第5页 / 共192页
第6页 / 共192页
第7页 / 共192页
第8页 / 共192页
资料共192页,剩余部分请下载后查看
第 一 章 概述 1-1 简述计算机程序设计语言的发展历程。 解: 迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C++语 言是一种面向对象的编程语言,也属于高级语言。 1-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接 的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具 有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征), 形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使 得软件风格统一。因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目, 软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目 前应用最广的面向对象的编程语言。 1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点? 解: 结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模 块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和 循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用 了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统 设计任务分解成许多易于控制和处理的子任务,便于开发和维护。 虽然结构化程序设计方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数 据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要 进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。 由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越 方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过 程的方法来开发和维护都将非常困难。 1-4 什么是对象?什么是面向对象方法?这种方法有哪些特点? 课后答案网 www.khdaw.com
解: 从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形 的。对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。面向对象方法中 的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位,由一 组属性和一组行为构成。 面向对象的方法将数据及对数据的操作方法放在一起,作为一个相互依存、不可分离的整体 --对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行 处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。 这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。 通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方 便。 面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进行软件开发,将人们在 日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方 法、规则和技巧中回到客观世界,回到人们通常的思维。 1-5 什么叫做封装? 解: 封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单 位,并尽可能隐蔽对象的内部细节。 1-6 面向对象的软件工程包括哪些主要内容? 解: 面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析 (OOA)、面向对象的设计(OOD)、面向对象的编程(OOP)、面向对象的测试(OOT)和 面向对象的软件维护(OOSM)等主要内容。 1-7 简述计算机内部的信息可分为几类? 解: 计算机内部的信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两 类;数据信息可分为数值信息和非数值信息两类。 1-8 什么叫二进制?使用二进制有何优点和缺点? 课后答案网 www.khdaw.com
解: 二进制是基数为 2,每位的权是以 2 为底的幂的进制,遵循逢二进一原则,基本符号为 0 和 1。采用二进制码表示信息,有如下几个优点:1.易于物理实现;2.二进制数运算简单; 3.机器可靠性高;4.通用性强。其缺点是它表示数的容量较小,表示同一个数,二进制较其 他进制需要更多的位数。 1-9 请将以下十进制数值转换为二进制和十六进制补码: (1)2 (2)9 (3)93 (4)-32 (5)65535 (6)-1 解: (1) (2)10 = (10)2 = (2)16 (2) (9)10 = (1001)2 = (9)16 (3) (93)10 = (1011101)2 = (5D)16 (4) (-32)10 = (11100000)2 = (E0)16 (5) (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 简要比较原码、反码、补码等几种编码方法。 解: 原码:将符号位数字化为 0 或 1,数的绝对值与符号一起编码,即所谓"符号──绝对值表 示"的编码。 正数的反码和补码与原码表示相同。 负数的反码与原码有如下关系: 符号位相同(仍用 1 表示),其余各位取反(0 变 1,1 变 0)。 课后答案网 www.khdaw.com
补码由该数反码的最末位加 1 求得。 第 二 章 C++简单程序设计 2-1 C++语言有那些主要特点和优点? 解: C++语言的主要特点表现在两个方面,一是全面兼容 C,二是支持面向对象的方法。C++是 一个更好的 C,它保持了 C 的简洁、高效、接近汇编语言、具有良好的可读性和可移植性 等特点,对 C 的类型系统进行了改革和扩充,因此 C++比 C 更安全,C++的编译系统能检 查出更多的类型错误。 C++语言最重要的特点是支持面向对象。 2-2 下列标识符哪些是合法的? Program, -page, _lock, test2, 3in1, @mail, A_B_C_D 解: Program, _lock, test2, A_B_C_D 是合法的标识符,其它的不是。 2-3 例 2.1 中每条语句的作用是什么? #include void main(void) { cout<<"Hello!\n"; cout<<"Welcome to c++!\n"; } 解: #include //指示编译器将文件 iostream.h 中的代码 //嵌入到该程序中该指令所在的地方 void main() //主函数名,void 表示函数没有返回值 { //函数体标志 cout<<"Hello!\n"; //输出字符串 Hello!到标准输出设备(显示器)上。 cout<<"Welcome to c++!\n"; //输出字符串 Welcome to c++! } 在屏幕输出如下: 课后答案网 www.khdaw.com
Hello! Welcome to c++! 2-4 使用关键字 const 而不是#define 语句的好处有哪些? 解: const 定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试 时仍然是可见的。 2-5 请写出 C++语句声明一个常量 PI,值为 3.1416;再声明一个浮点型变量 a,把 PI 的值 赋给 a。 解: const float PI = 3.1416; float a = PI; 2-6 在下面的枚举类型中,Blue 的值是多少? enum COLOR { WHITE, BLACK = 100, RED, BLUE, GREEN = 300 }; 解: Blue = 102 2-7 注释有什么作用?C++中有哪几种注释的方法?他们之间有什么区别? 解: 注释在程序中的作用是对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译 时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于编译时忽略注释 部分,所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释,能够提高程 序的可读性。在 C++中,有两种给出注释的方法:一种是延用 C 语言方法,使用"/*"和"*/" 括起注释文字。另一种方法是使用"//",从"//"开始,直到它所在行的行尾,所有字符都被作 为注释处理。 2-8 什么叫做表达式?x = 5 + 7 是一个表达式吗?它的值是多少? 课后答案网 www.khdaw.com
解: 任何一个用于计算值的公式都可称为表达式。x = 5 + 7 是一个表达式,它的值为 12。 2-9 下列表达式的值是多少? 1. 201 / 4 2. 201 % 4 3. 201 / 4.0 解: 1. 50 2. 1 3. 50.25 2-10 执行完下列语句后,a、b、c 三个变量的值为多少? a = 30; b = a++; c = ++a; 解: a:32 ; b:30 ; c:32; 2-11 在一个 for 循环中,可以初始化多个变量吗?如何实现? 解: 在 for 循环设置条件的第一个";"前,用,分隔不同的赋值表达式。 例如: for (x = 0, y = 10; x < 100; x++, y++) 2-12 执行完下列语句后,n 的值为多少? int n; for (n = 0; n < 100; n++) 解: n 的值为 100 课后答案网 www.khdaw.com
2-13 写一条 for 语句,计数条件为 n 从 100 到 200,步长为 2;然后用 while 和 do…while 语句完成同样的循环。 解: for 循环: for (int n = 100; n <= 200; n += 2); while 循环: int x = 100; while (n <= 200) n += 2; do…while 循环: int n = 100; do { n += 2; } while(n <= 200); 2-14 if ( x = 3 ) 和 if (x = = 3) 这两条语句的差别是什么? 解: 语句 if(x = 3)把 3 赋给 x,赋值表达式的值为 true,作为 if 语句的条件;语句 if(x == 3)首先 判断 x 的值是否为 3,若相等条件表达式的值为 ture,否则为 false。 2-15 什么叫做作用域?什么叫做局部变量?什么叫做全局变量,如何使用全局变量? 解: 作用域是一个标识符在程序正文中有效的区域。局部变量,一般来讲就是具有块作用域的变 量;全局变量,就是具有文件作用域的变量。 2-16 已知 x、y 两个变量,写一条简单的 if 语句,把较小的的值赋给原本值较大的变量。 解: if (x > y) x = y; else // y > x || y == x 课后答案网 www.khdaw.com
y = x; 2-17 修改下面这个程序中的错误,改正后它的运行结果是什么? #include void main() int i int j; i = 10; /* 给 i 赋值 j = 20; /* 给 j 赋值 */ cout << "i + j = << i + j; /* 输出结果 */ return 0; } 解: 改正: #include int main() { int i; int j; i = 10; // 给 i 赋值 j = 20; /* 给 j 赋值 */ cout << "i + j = " << i + j; /* 输出结果 */ return 0; } 程序运行输出: i + j = 30 2-18 编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。 解: 源程序: #include int main() { int i; cout << "请输入一个数字:"; cin >> i; cout << "您输入一个数字是" << i << endl; 课后答案网 www.khdaw.com
分享到:
收藏