C++语言程序设计课后答案12.pdf
《C++语言程序设计课后答案12.pdf》由会员分享,可在线阅读,更多相关《C++语言程序设计课后答案12.pdf(83页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 一 章 概 述1-1简述计算机程序设计语言的发展历程。解:迄今为止计算机程序设计语言的发展经历了机器语言、汇编语言、高级语言等阶段,C+语言是一种面向对象的编程语言,也属于高级语言。1-2面向对象的编程语言有哪些特点?解:面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特征)和行为(动态特征),形成类。通过类的继承与多态可以很方便地实现代码重用,大大缩短了软件开发周期,并使得软件风格统一。因此,面向对象的编程语言使程序能够
2、比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C+语言是目前应用最广的面向对象的编程语言。1-3什么是结构化程序设计方法?这种方法有哪些优点和缺点?解:结构化程序设计的思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块之间的关系尽可能简单,在功能上相对独立;每一模块内部均是由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序。结构化程序设计由于采用了模块分解与功能抽象,自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子任务,便于开发和维护。虽然结构化程序设计
3、方法具有很多的优点,但它仍是一种面向过程的程序设计方法,它把数据和处理数据的过程分离为相互独立的实体。当数据结构改变时,所有相关的处理过程都要进行相应的修改,每一种相对于老问题的新方法都要带来额外的开销,程序的可重用性差。由于图形用户界面的应用,程序运行由顺序运行演变为事件驱动,使得软件使用起来越来越方便,但开发起来却越来越困难,对这种软件的功能很难用过程来描述和实现,使用面向过程的方法来开发和维护都将非常困难。1-4什么是对象?什么是面向对象方法?这种方法有哪些特点?解:从一般意义上讲,对象是现实世界中一个实际存在的事物,它可以是有形的,也可以是无形的。对象是构成世界的一个独立单位,它具有自
4、己的静态特征和动态特征。面向对象方法中的对象,是系统中用来描述客观事物的个实体,它是用来构成系统的一个基本单位,由一组属性和-组行为构成。面向对象的方法将数据及对数据的操作方法放在起,作为一个相互依存、不可分离的整体-对象。对同类型对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口,与外界发生关系,对象与对象之间通过消息进行通讯。这样,程序模块间的关系更为简单,程序模块的独立性、数据的安全性就有了良好的保障。通过实现继承与多态性,还可以大大提高程序的可重用性,使得软件的开发和维护都更为方便。面向对象方法所强调的基本原则,就是直接面对客观存在的事物来进
5、行软件开发,将人们在日常生活中习惯的思维方式和表达方式应用在软件开发中,使软件开发从过分专业化的方法、规则和技巧中回到客观世界,回到人们通常的思维。1-5 什么叫做封装?解:封装是面向对象方法的一个重要原则,就是把对象的属性和服务结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。1-6 面向对象的软件工程包括哪些主要内容?解:面向对象的软件工程是面向对象方法在软件工程领域的全面应用,它包括面向对象的分析(0 0 A)面向对象的设计(0 0 D)、面向对象的编程(OOP),面向对象的测试(0 0 T)和面向对象的软件维护(O O S M)等主要内容。1-7 简述计算机内部的信息可分为几类?解
6、:计算机内部的信息可以分成控制信息和数据信息二大类;控制信息可分为指令和控制字两类;数据信息可分为数值信息和非数值信息两类。1-8什么叫二进制?使用二进制有何优点和缺点?解:二进制是基数为2,每位的权是以2为底的基的进制,遵循逢二进一原则,基本符号为0和 1。采用二进制码表示信息,有如下几个优点:1.易于物理实现:2.二进制数运算简单;3.机器可靠性高;4.通用性强。其缺点是它表示数的容量较小,表示同一个数,二进制较其他进制需要更多的位数。1-9请将以下十进制数值转换为二进制和十六进制补码:(1)2 (2)9 (3)9 3(4)-3 2 (5)6 5 5 3 5 (6)-1解:(1)(2)1
7、0=(1 0)2=(2)1 6 (2)(9)1 0=(1 0 0 1)2=(9)1 6(3)(9 3)1 0=(1 0 1 1 1 0 1)2 =(5 D)1 6 (4)(-3 2)1 0=(1 1 1 0 0 0 0 0)2 =(E 0)1 6(5)(6 5 5 3 5)1 0=(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)2=(F F F F)1 6 (6)(-1)1 0=(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)2=(F F F F)1 61-1 0 请将以卜 微值转换为十进制:(1)(1 0 1 0)2 (2)(1 0 0 0 1 1 1 1
8、)2 (3)(0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1)2(4)(7F)16(5)(2D3E)16(6)(F10E)16解:(1)(1010)2=(10)10(2)(10001111)2=(143)10(01011111 11000011)2=(24515)10(4)(7F)16=(127)10(5)(2D3E)16=(11582)10(6)(F10E)16=(61710)101-11简要比较原码、反码、补码等几种编码方法。解:原码:将符号位数字化为0 或 1,数的绝对值与符号一起编码,即所谓 符号绝对值表示 的编码。正数的反码和补码与原码表示相同。负数的反码与原码有如下
9、关系:符号位相同(仍用1 表示),其余各位取反(0变 1,1 变 0)。补码由该数反码的最末位加1 求得。第 二 章 C+简单程序设计2-1 C+语言有那些主要特点和优点?解:C+语言的主要特点表现在两个方面,一是全面兼容C,二是支持面向对象的方法。C+是一个更好的C,它保持了 C 的简洁、高效、接近汇编语言、具有良好的可读性和可移植性等特点,对 C 的类型系统进行了改革和扩充,因此C+比 C 更安全,C+的编译系统能检查包更多的类型错误。C+语言最重要的特点是支持面向对象。2-2 下列标识符哪些是合法的?Program,-page,Jock,test2,3inl,mail,A_B_C_D解:
10、Program,Jock,tes A_B_C_D是合法的标识符,其它的不是。2-3 例 2.1中每条语句的作用是什么?#include void main(void)coutHello!n;coutWelcome to c+!n;解:#include 指示编译器将文件iostream.h中的代码嵌入到该程序中该指令所在的地方void main。主函数名,void表示函数没有返回值 函数体标志cout”Hello!n“;输出字符串Hello!到标准输出 设 备(显示器)上。coutWelcome to c+!n;输出字符串 Welcome to C+!在屏幕输出如下:Hello!Welcome
11、to C+!2-4 使用关键字const而不是#define语句的好处有哪些?解:const定义的常量是有类型的,所以在使用它们时编译器可以查错;而且,这些变量在调试时仍然是可见的。2-5 请写出C+语句声明一个常量P I,值为3.1416;再声明一个浮点型变量a,把 P I的值赋给 a。解:const float PI=3.1416;float a=PI;2-6 在卜面的枚举类型中,Blue的值是多少?enum COLOR WHITE,BLACK=100,RED,BLUE,GREEN=300;解:Blue=1022-7 注释有什么作用?C+中有哪几种注释的方法?他们之间有什么区别?解:注释在
12、程序中的作用是对程序进行注解和说明,以便于阅读。编译系统在对源程序进行编译时不理会注释部分,因此注释对于程序的功能实现不起任何作用。而且由于编译时忽略注释部分,所以注释内容不会增加最终产生的可执行程序的大小。适当地使用注释,能够提高程序的可读性。在 C+中,有两种给出注释的方法:一种是延用C 语言方法,使用/*和*/括起注释文字。另一种方法是使用7/,从 开始,直到它所在行的行尾,所有字符都被作为注释处理。2-8 什么叫做表达式?x=5+7 是个表达式吗?它的值是多少?解:任何一个用于计算值的公式都可称为表达式。x=5+7 是一个表达式,它的值为12。2-9 下列表达式的值是多少?1.201/
13、42.201%43.201/4.0解:1.50 2.1 3.50.252-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 的值为1002-13写-一条for语句,计数条件为n 从 100到 2 0 0,步长为2;然后用while和 do while语
14、句完成同样的循环。解:for循环:for(int n=100;n=200;nwhile(n=200)do+=2);n+=2;(while循环:do while循环:n+=2;int x=100;int n=100;while(n y)x=y;else/y x 1 1 y=x y=x;2-17修改下面这个程序中的错误,改正后它的运行结果是什么?#include j=20;/*给 j 赋值*/void main()cout i+j=i+j;/*输出结果*/int i;int j;return 0;i=10;/*给 i 赋值解:改正:#include int main()int i;int j;i=
15、10;/给 i 赋值j=20;/*给 j 赋值*/cout i+j=M i+j;/*输出结果*/return 0;程序运行输出:i+j=302-18编写一个程序,运行时提示输入一个数字,再把这个数字显示出来。解:源程序:#include int main()int i;cout ”请输入一个数字:cin i;cout ”您输入一个数字是 i endl;return 0;程序运行输HI:请输入一个数字:5您输入一个数字是52;9 C+有哪几种数据类型?简述其值域。编程显示你使用的计算机中的各种数据类型的字节数。解:源程序:#include int main()cout The size of a
16、n int is:tt sizeof(int)bytes.n;cout The size of a short int is:t sizeof(short)bytes.n;cout The size of a long int is:t sizeof(long)bytes.n;cout The size of a char is:tt sizeof(char)bytes.n;cout The size of a float is:tt sizeof(float)bytes.n;cout The size of a double is:t sizeof(double)bytes.n;return
17、 0;程序运行输出:The size of an int is:4 bytes.The size of a short int is:2 bytes.The size of a long int is:4 bytes.The size of a char is:1 bytes.The size of a float is:4 bytes.The size of a double is:8 bytes.2-20打印ASCII码为32127的字符。解:#include int main()for(int i=32;i128;i+)cout(char)i;return 0;程序运行输出:!#$%G(
18、)*+,./0123456789:;?ABCDEFGHIJKLMNOP_QRSTUVWXYZAabcdefghijklmnopqrstuvwxyzs2-21运行下面的程序,观察其输出,与你的设想是否相同?#include int main()unsigned int x;unsigned int y=100;unsigned int z=50;x=y-z;cout Difference is:x;x=z-y;cout nNow difference is:x endl;return 0;解:程序运行输出:Difference is:50Now difference is:4294967246注
19、意,第二行的输出并非-5 0,注意x、v、z 的数据类型。2-22运行下面的程序,观察其输出,体会i+与+i的差别。/include int main()int myAge=39;/initialize two integersint your Age=39;cout I am:myAge years old.n;cout You are:your Age years oldn;myAge+;/postfix increment+yourAge;/prefix incrementcout One year passes.n;cout I am:myAge years old.n;cout Yo
20、u are:your Age years oldn;cout Another year passesn;cout I am:myAge+years old.n;cout You are:*+yourAge *years oldn;cout Lets print it again.nu;cout I am:myAge years old.n;cout You are:your Age years oldn;return 0;解:程序运行输出:I am 39 years oldYou are 39 years oldOne year passesI am 40 years oldYou are 4
21、0 years oldAnother year passesI am 40 years oldYou are 41 years oldLets print it againI am 41 years oldYou are 41 years old2-23什么叫常量?什么叫变量?解:所谓常量是指在程序运行的整个过程中其值始终不可改变的量,除了用文字表示常量外,也可以为常量命名,这就是符号常量;在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。2-24变量有那几种存储类型?解:变量有以下几种存储类型:auto存储类型:采用堆栈方式分配内存空间,属于一时性存储,其存储空间可以被若
22、干变量多次覆盖使用;register存储类型:存放在通用寄存器中;extern存储类型:在所有函数和程序段中都可引用;static存储类型:在内存中是以固定地址存放的,在整个程序运行期间都有效。2-25写出下列表达式的值:1.2 3&a 6 92.!(45)|(62)解:1.true2.false3.true2-26 若 a=1,b=2,c=3,下列各式的结果是什么?1.a|b-c2.a A b&-c3.a&b|c4.a|b&c解:1.-12.13.34.32-27 若 a=L卜列各式的结果是什么?1.!a|a2.a|a3.a A a4.a 2解:L 12.-13.04.02-28编写一个完整
23、的程序,实现功能:向用户提问“现在正在下雨吗?,提示用 户 输 入Y或N。若输入为Y,显示“现在正在下雨。若输入为N,显示“现在没有下雨。否则继续提问”现在正在卜雨吗?解:源程序:#include#include cout ”现在正在下雨吗?(Yes or No):;void main()cin flag;if(toupper(flag)=Y)char flag;while(l)cout 现在正在下雨。break;程序运行输出:)现在正在下雨吗?(Yes or No):xif(toupper(flag)=N)现在正在下雨吗?(Yes or No):l(现在正在下雨吗?(YesorNo):q8
24、a 现在没有下雨。;现在正在下雨吗?(Yes or No):nbreak;现在没有下雨。)成)现在正在下雨吗?(Yes or No):y)现在正在下雨。2-29编写一个完整的程序,运行时向用户提问 你考试考了多少分?(0100),接收输入后判断其等级,显示出来。规则如下:解:#include break;void main()case 8:(cout100 1 1 score0)cout 你的成绩为中!cout 分数值必须在0 到 100之间!”;break;elsedefault:(cout 你的成绩为差!i=score/10;)switch(i)()case 10:程序运行输出:case
25、9:你考试考了多少分?(0100):85cout 你的成绩为优!;你的成绩为良!2-30(1)实现一个简单的菜单程序,运行时显示Menu:A(dd)D(elete)S(ort)Q(uit),Selectone:提示用户输入,A 表示增加,D 表示删除,S 表示排序,Q 表示退出,输入为A、D、S时分别提示 数据已经增加、删除、排序。输入为Q 时程序结束。要求使用i f else语句进行判断,用break、continue控制程序流程。解:#include else if(choice=,S)#include void main()cout ”数据已经排序.endl;(continue;char
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 语言程序设计 课后 答案 12
限制150内