上海电力学院C++课后习题答案_第1页
上海电力学院C++课后习题答案_第2页
上海电力学院C++课后习题答案_第3页
上海电力学院C++课后习题答案_第4页
上海电力学院C++课后习题答案_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 1章 C+及其开发环境概述 一、问答题 1结构化程序设计主要有哪些劣势? 【答案】 ( 1)程序的开发效率低下 ( 2)程序的可重用性差 ( 3)程序的维护成本高 ( 4)无法适应信息的快速膨胀和多样化 2面向对象的程序设计有哪些优点? 【答案】 ( 1)程序的开发效率高 ( 2)程序代码的可重用性高 ( 3)程序易于维护 3 C+的发展经历了哪些阶段? 【答案】 C+语言起源于 C 语言。 1980 年初期,美国贝尔实验室的 士及其同事在 C 语言的基础上,从 引入面 向对象的特征,开发出一种过程性与对象性相结合的程序设计语言,最初称为“带类的 C”, 1983 年正式取名为 C+。 后来, 他的同事陆续将运算符重载、继承、虚函数等特性引入 C+, 1989年后推出 C+ ,并经过多次改进和完善,发展成为现在的 C+。 4 C+主要有哪些特点? 【答案】 ( 1) C+可以被看成 C 语言的一个超集,是对 C 的增强和扩展。因此,许多 C 代码可以不经修改即可为 C+所用。自然,也可以利用 C+开发环境来开发 C 程序。 ( 2) C+几乎支持所有面向对象的程 序设计特征,因此,利用 C+不仅可以进行传统的结构化程序设计,而且可以较好地进行面向对象的程序开发。 ( 3) C+很好地保持了 C 的简洁、高效、灵活和接近汇编语言的特点,因此, C+程序的执行效率也很高。 5一个 C+程序一般由哪几部分构成? 【答案】 预处理命令。 C+提供了三种预处理命令,即宏定义命令、文件包含命令和条件编译命令。 全局声明部分。此部分内容通常会给出用户自定义的数据类型声明,以及程序中所涉及变量的定义,例如类的声明。 数据结构 2 函数。一个程序中可包含一个或多个函数,它们是执行用户指定操 作的主要部分。 6使用 + 开发 C+程序时一般要经过哪几个步骤?每个步骤的作用是什么?相应地产生哪些文件? 【答案】 ( 1)编写程序 C+是一种高级语言,所以用其编写的程序称为“源程序”,以 为后缀。我们可以利用 +、 +等编译软件来编写 C+源程序。 ( 2)编译程序 计算机不能识别高级语言,为了将源程序翻译成计算机可识别的二进制指令,需将源程序进行编译,编译之后的文件称作“目标文件”,以 为后缀。编译时以每个源程序单元为单位,每一个源程序 文件编译成一个目标文件。因此,如果一个工程中有多个源程序单元,系统会分别将其编译成多个目标文件。 另外,编译时系统会自动进行错误检查,一旦检查出有错误,便不会生成目标文件,需改正后重新编译。 ( 3)连接目标文件 一个程序中可能会包含很多文件,编译后会生成很多独立的目标文件,此时系统的“连接程序”将这些目标文件和库文件以及系统提供的其他信息连接起来,形成二进制可执行文件,以 后缀。 ( 4)运行程序 运行二进制可执行文件,得到运行结果。如运行结果不正确,则需修改源文件,之后重新编译运行。 二、分析运行结 果 1 #) ) 课后习题答案 3 a,b,c; ab; c=a+b; 100&y=10&b+ca&c+ab ( 8) (=0)&(00!=0)|(00=0) 四、阅读下列程序,写出执行结果 ( 1) # a=1,b=2,x,y; y=&b; x,y,z,f; x=y=z=1; f=z+; x,i,j,k; x; i=x/100; j=(00)/10; k=000; x,y,b; xy; b=(0 if(x!=0) if(x=0)y=0; if(x0)y=1; y= 1; y=0 C if(x=0); C a=5;a); D i=3;i; 【答案】 B 二、阅读下列程序,写出执行结果 1 # a,b,c,d,x; a=c=0;b=1;d=20; if(a) 课后习题答案 9 d=b) c) x=15; x=25; a=0,b=1; a) :b) : i=1; i i=0,j=5; i+; if(i3)j0); i,j; i=1,j=5;i i,s=0; i=0;i i,j,x=0; i=0;i a,b,c,t; abc; if(ab)t=a;a=b;b=t; if(ac)t=a;a=c;c=t; if(bc)t=b;b=c;c=t; s: s:课后习题答案 13 m,i = 2; m; i i; i=100; i i,j,s; i=1; i i,j,k; i=1; i ; ; ; ; ; ; ; ; x=0; i=3; 课后习题答案 17 n) a, b) b = 0) 1; a/b; 数据结构 18 # f,c,b; f; i); /判断一个数是否是质数的函数 i; i; i) # 数据结构 20 i,j); /求最大公约数的函数 i,j,x,y; i ; j ; x = i,j); y = i * j / x; )次幂。 课后习题答案 21 【源程序】 #x,y); # 运行结果为: 请输入年 /月 /日 :1984 03 05 1 9 8 4 0 3 0 5 65 课后习题答案 23 第 5章 数组与字符串 一、选择题: ( 1)以下一维数组 a 的正确定义是( )。 A a(10); B n=10,an; C n; D #0 n; a an; 【答案】 D ( 2)以下能对具有 10 个元素的一维数组 a 进行正确初始化的语句是( )。 A a10=(0,0,0,0,0); B a10=10*1; C a =0; D a10= ; 【答案】 B ( 3)在定义 a10;之后,对 a 的引用正确的是( )。 A a10 B a C a(6) D a10【答案】 D ( 4)以下对二维数组 a 进行不正确初始化的是( )。 A a23=0; B a3=3,2,1,1,2,3; C a=3,2,1,1,2,3; D a23=3,2,1,1,2,3; 【答案】 C ( 5)在执行 a3=1,2,3,4,5,6;语句后, a11的值 是( )。 A 4 B 1 C 2 D 5 【答案】 D ( 6)为了判断两个字符串 否相等,应当使用( )。 A B s1=C s1,=0) D s1, 【答案】 C ( 7)定义如下变量和数组: i; x33=1,2,3,4,5,6,7,8,9; 则以下语句的输出结果是( )。 i=0;i =12; i,s=0; i=0;chi=0&chi i,j, 课后习题答案 25 a34=1,2,3,4,9,8,7,6,2,0,5; a00; i=0;i i,r;0=0= i=r=0;s1i!=0 & s2i!=0;i+) s1i=s2i)i+; r=s1ii; a44=1,2,4,0,13,14,3,0,2,; i,j,s=0; i=0;i i,j; a10=1,1,1,1,1,1,1,1,1,1; i=0;i # 20 aN,i; i=0;iai; i=0;i 课后习题答案 27 a5,i,j,k=0; i=0;iai; a0; i=1;ai;_ _; ak=aj= ) m; i,j; i=0,j=i=2。本题答案如下: 2 m 四、编程题 : ( 1)编写程序,要求首先输入学生人数(最多为 50 个人),然后按编号从小到大的顺序依次输入学生成绩(包括语文、数学和英语 3 门课程的成绩),最后统计每门课程全班的总成绩和平均成绩以及每个学生课程的总成绩和平均成绩。 源程序: 定义一个 05数组, 、 分别存储 3 门课程的分数, 和 分别存储计算出来的总分和平均分;定义 个长度为 3 的一维数组,分别存放 3门课程的总分和平均分。程序如下: # 05,; i,j,n; n; i0i1i2; i=0;i i=0,n,j,0; 数据结构 30 n; i+; i=n%n=n/n!=0); ; 100 n,i,j,k; ,*N; n; i=0;i # 100 ,i=0,j=0; i!=0) if(i!= j=i; j+; i+; j=0; = i; i=0;i 4=,(*q)4=p; /二维数组, q 是指向一 维数组指针,并且一维数组每行只有 4 个字符, q 被 /赋予二维数组 地址 i; p=*p=b; /装入字符 b *(*q+3)=*p; i=0;i pn,n=10,m=20; pf,n; *m; i,*p,a=10,20,30,40,50,60; p=a; i=0;i b44=10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25; *a)4,*p; a=b; /指针变量 a,取得二维数组第一行地址 p=a1; /指针变量 p,取得二维数组第二行第一列地址 i=1;i &a,m) 数据结构 36 a=m; p=a; i=0;i # ) /1 i=0; i=0; ;i+) /2 if(ai=a&ai # ) ; i,j; i=0; 4) pj=pj+1 分析:( 1)由实参得知函数 有两个形参,根据 上题得 p,n。 数据结构 38 ( 2)有下面语句 pj可以得到 字符中指针。 ( 3)根据冒泡排序方法和字符串比较函数得到 pj,pj+1)0。 ( 4)字符串指针可以通过赋值语句传递值,字符串变量不能够使用赋值语句传递值。 四、编程题 ( 1)编写程序,使用指针实现两个字符串的首尾连接(提示:将字符串 到 面的 0被取消)。 # i,m=0; m!=0) m+; /求数组 度 i=0; i!=0) m+i=i; i+; /将字符串 有字符依次装入字符串 m+i=0; 6= ,n) i,j=0; j); /求数组 长度并赋给变量 ,只要字符串长度大于 赋给 保留其下标 i=1; j=i; i) ; 课后习题答案 39 j; a4=; p,q) 0; p); p,q); q, a20=*ap=a; b20=*bp=b; (*p) 4)若有语句 数据结构 42 a,b=2,c,d=4,ek; k=a; 则 k 的值是 _。 0 ( 5)将以下程序的空白处补充完整,程序实现的功能是:查找分数最高和最低的同学,分别输出其姓名和成绩。 # i; ; =赵萍 ,92,钱兵 ,72,孙洋 ,83,李虎 ,88,周金 ,95; ; i=1;i x; s; t; t) 课后习题答案 43 0; ); ; t); ) 0; a2=100,70,90,70,80,90,*pa=a; k2+k3 数据结构 44 0; ; q,i) q-q-q-q-q-q- q,j,a) i=0;a) p,30, ( 2) 假设 某公司有员工 200 人,员工的信息包括编号、姓名、基本工资、补贴、奖金和应扣款。 编写程序,实现对员工工资信息的管理,包括 查询和打印工资明细、应发工资和实发工资 。 参考代码如下: 本题是在上题的基础上,加了一些控制功能,由此可见程序的编写其实是很实际简单的事。 # 0; ; q,j) q-no;q-q-q-q-q-a) q-q-q-q-q-q-q-q-a) q-q-q-q-n; if(n=e) m; p,200,m); if(n=p) l; l; 数据结构 48 p,200,l); 0; 0; ,实现内存共享 0; 0; ; q,j)/数组建设函数 q-q-q-q-if(q-0000)/学号大于 10000,证明是学生 q-q- 课后习题答案 49 q,j,a)/查询函数 i=0;a) q,j,a)/更新函数 i=0;a) q-q-q-q-if(q-0000) q-q- q,j)/浏览函数 i=0;0) /不显示学号或代号为 0 的记录 0000) a) q-; /将学号或代号置 0 ; x,y; ); y;/y为操作,其他为不操作 y=y)/循环询问操作 x; if(x=y) , x; if(x=y) , 课后习题答案 51 x; if(x=y) ); x; if(x=y) , y;/由变量 y 中的字符判断 第 8章 类和对象 一、填空题 ( 1)声明类的关键字是 。通常,类的成员由 和 两部分组成,其中,用类的 表示类的属性,用类的 表示类的操作。 答案: ( 1) 2) 数据成员 ( 3) 成员函数 ( 4) 数据成员 ( 5) 成员函数 ( 2)类数据成员的访问属性有 、 和 三种,其中,私有数据成员只能由 的成员函数来访问。 数据结构 52 答案: ( 1) 有的) ( 2) 有的) ( 3) 护的) ( 4) 本类 ( 3)构造函数通常用于 ,它只在 时被调用,且只调用一次。 答案: ( 5) 初始化数据成员 ( 6) 对象建立 ( 4)与普通成员函数相比,构造函数主要有这么几个特点: 构造函数名必须与 相同; 构造函数没有 和 ; 构造函数可以有多个,它们之间可以通过 来区分,这被称为构造函数的重载。 答案: ( 7) 类名 ( 8) 返回值 ( 9) 返回类型 ( 10) 参数表 ( 5)当对象的声明周期结束时,析构函数主要用来执行一些“善后工作”,如释放对象占用的内存等。析构函数的特点主要有: 其名称与 相同 ,但要在名称前增加一个 符号; 析构函数没有 和 ; 一个类中只能定义 个析构函数。 答案: ( 11) 类名 ( 12) ( 13) 参数 ( 14) 返回值 ( 15) 一 二、简答题 ( 1)如何声明和定义对象指针?如何利用对象指针访问类中数据成员和成员函数? 答:要声明对象指针,其一般形式为: 类名 *对象指针名 ; 对象指针 =&对象名 ; 要通过对象指针访问对象中的成员,其一般形式为: 对象指针数据成员名 或 对象指针 成员函数名(参数列表) ( 2)在友元函数中,如何去访问对象的成员? 答: 友元函数不是类的成员函数, 在友元函数中,不能直接引用对象成员的名字,必须通过形参传递进来的对象名或对象指针来引用该对象的成员,即 对象名加运算符“ .”加对象 课后习题答案 53 成员名。 ( 3)类的静态数据成员与其他数据成员的最大区别是什么? 答:静态数据成员是所有对象共享的成员,所有对象都可以访问它。静态数据成员不属于某一个对象,它在内存中占据一个公共的存储空间,所有对象都可以直接访问该存储空间。而不同对象的非静态数据成员占据不同的存储空间,该空间是不能共享 的。 ( 4)类的静态成员函数有什么特点? 答:静态成员函数只能用来访问类中静态数据成员,而不能直接访问类中非静态数据成员。与静态数据成员类似,我们也可以利用“类名 :静态成员函数名 (参数列表 );”形式来直接调用它。要在静态成员函数中访问非静态数据成员,可将该类对象作为静态成员函数的参数。 三、编程题 ( 1)构造一个日期时间类 现对日期(年、月、日)、时间(时、分、秒)的设置及输出。 解 : #R2001,2003,2005; T YR MT 2000;an; R a,MT b,c) a; b; c; 2;0; R &,);/使用引用一次取得 3个数值 ,); R ,; ; 数据结构 54 ; ; R &y,m,d) y=m=d= a,b,c) a=b=c= R a,MT b,c) a; b; c; a,b,c) hh=a; mm=b; ss=c; ,直接访问私有的数据成员 数据结构 56 l=0, t=0, r=0, b=0); ; /析构函数,在此函数体为空 l,t,r,b); / 以下四个函数皆为内联成员函数 ; ; ; ; / 构造函数,带缺省参数,缺省值为全 0,在声明中 指定 l , t, r, b) l; t; r; b; l, t, r, b) /赋值 l; t; r; b; r,a=0); ); ); r; 数据结构 58 ; a) r=a; r*r*r* r= ) r=R; r*r*r* ), 9; /身份证号 ,18位数字 0; /姓名 /性别 /生日 ,格式 1986年 8月 18日写作 19860818 0; /家庭地址 ,); ); ; ; ; ; /其他接口函数 ; id, if(m) ex=; /吸收回车符 ,否则地址输不进去 I=x,y; x = 0; y = 0; xv,x = xv;y = x = y = x; y; ; # y,m,d) y; m; d; I= /几何图形 数据结构 74 =0; /定义纯虚函数,求 周长 =0; /定义纯虚函数,求 面积 =0; /定义纯虚函数,求 体 积 ; /声明虚函数 ; 0; /定义构造函数 /定义带参数的构造函数 /周长 I* /面积 I* /体积 ; ; ; ; ; ; ; ; 课后习题答案 79 ; d; d; ; 程序运行输出: . . . . . ( 3)定义点坐标类 重载 +(自增) 运算符实现横纵坐标值均加 1,重载 减)运算符 ,实现横纵坐标值均减 1。 解: #数据结构 80 (); ( ; _x = _y = 0; x() x; y() y; x, _y; ; () _x+; _y+; ( *+* _ *-* 课后习题答案 81 ; ; ; ; ; ; ; ; 运行结果 : 调用派生类的函数 调用基类的非虚函数 调用派生类的函数 调用派生类的函数 ( 5) 定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论