《面向对象程序设计》高起专习题三答案

合集下载

成人教育 《面向对象程序设计》期末考试复习题及参考答案

成人教育 《面向对象程序设计》期末考试复习题及参考答案

面向对象程序设计复习题二一、填空1.程序的三种常见结构是、、,其中结构是程序的默认结构。

2.同名方法给出不同的实现,并通过参数类型或个数进行区分,称为。

3.和“继承”匹配的概念是。

4.由类构建对象的过程称为。

5.抽象类是含有的类。

6.实现软件复用有两种方式,分别为、、。

7.有定义const int *p,p称为。

8.通过继承产生的类称为。

9.virtual关键字在C++中有两个用处,分贝是,和。

10.方法重载和实现了多态性。

11.请给出C++外的另外一种支持面向对象设计语言。

12.类的三个要素是、、。

13.对象释放前执行的函数是。

二、名词解释1、构造函数2、对象3、运算符重载4、析构函数5. 面向对象6. 继承三、简答1.比较类和结构体?2.重载的意义?3.抽象类的作用和意义?4.组合与继承的区别?四、辩析1.任何父类对象都可以被子类对象替代。

2.public修饰符号破坏了数据的开放性。

3.private继承方式不能产生子类。

4.不能实例化的类一定是抽象类。

五、综合回答1.简述多态的实现机制。

2.谈谈多态的意义。

3.面向对象程序设计思想的优点和缺点。

面向对象程序设计复习题二答案一、填空(1)顺序(2)选择(3)循环(4)顺序(5)函数重载(6)抽象(7)实例化(8)纯虚函数(9)继承(10) 组合(9)和(10)不区分顺序(11)常量指针(12)派生类(13)虚函数(14)虚拟继承(13)和(14)不区分顺序(15)覆盖(16)Java或者C#(17)类的标识(18)类的状态(19)类的操作(17)(18)(19)不区分顺序(20)析构函数二、名词解释1、当类实例化时自动调用的成员函数,负责实现对象的初始化2、按照数据类型分配的内存空间,可以实现方法的调用3、将系统定义的运算符操作对象的类型扩展的过程,一般针对自定义类型4、对象空间释放之前自动调用的函数5、是程序设计思想,相对面向过程而言更加强调封装性6、两个类之间的一种关系,其中一个类的某个成员类型是另一个类三、简答1、C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public2、重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。

C++面向对象程序设计第三章习题答案解析

C++面向对象程序设计第三章习题答案解析

C++⾯向对象程序设计第三章习题答案解析整理⼀下⾃⼰写的作业,供考试前复习⽤,哈哈进⼊正题题⽬:2.分析下⾯的程序,写出其运⾏时的输出结果这⾥就不展⽰课本源代码,直接给出修改后的代码,错误部分代码已给出具体的注释1 #include<iostream>2//原题的#include<iostream.h>写法错误3 #include<stdlib.h>4//⽤于解决闪屏的头⽂件5using namespace std;6//原题缺少该⾏代码,⽤于输⼊cin和输出cout7class Date{8public:9 Date(int,int,int);10 Date(int,int);11 Date(int);12 Date();1314void display();15private:16int month;17int day;18int year;1920 };2122 Date::Date(int m,int d,int y):month(m),day(d),year(y){}2324 Date::Date(int m,int d):month(m),day(d)25 {year=2005;}2627 Date::Date(int m):month(m)28 {day=1;year=2005;}2930 Date::Date()31 {month=1;day=1;year=2005;}3233void Date::display()34 {35 cout<<month<<"/"<<day<<"/"<<year<<endl;36 }3738int main()39 {40 Date d1(10,13,2005);41 Date d2(12,30);42 Date d3(10);43 Date d4;44 d1.display();45 d2.display();46 d3.display();47 d4.display();48 system("pause");49//解决闪屏的代码50return0;51 }运⾏结果:3.如果将第2题中程序的第四⾏改为⽤默认参数,即Date(int =1,int =1,int =2005);分析程序有⽆问题。

面向对象程序设计习题及答案

面向对象程序设计习题及答案

面向对象程序设计一、选择填空1.对于 C++与 C 语言的关系描绘中,( D)是错误的。

(A) C 语言是 C++的一个子集(B)C语言与C++是兼容的(C) C++对 C 语言进行了一些改良(D)C++和C语言都是面向对象的2.下边对于对象观点的描绘中,(B)是错误的。

(A)对象就是 C 语言的结构变量(B)对象代表着正在创立的系统中的一个实体(C)对象是一个状态的操作(或方法)的封装体(D)对象之间的信息传达是经过信息进行的3.下边对于类观点的描绘中,(D)是错误的。

(A)类是抽象数据种类的实现(B)类是拥有共同行为的若干对象的一致描绘体(C)类是创立对象的样板(D)类就是C语言的结构种类4.依照表记符的要求,( A)符号不可以构成表记符。

(A)连结符(B)下划线(C)大小写字母(D)数字字符5.以下符号中,( C)不行作为分开符。

(A),(B):(C)(D);6.在 16 位机中, int型字宽为(A)字节。

(A)2(B)4(C)6(D)87.种类修饰符unsigned 修饰( D)种类是错误的。

(A) char(B)int(C)long int(D)float8.对于 int *pa[5];的描绘,(D)是正确的。

(A) pa 是一个指向数组的指针,所指向的数组是 5 个 int型元素(B) pa 是一个指向某数组中第 5 个元素的指针,该元素是int变量(C) pa[5] 表示某个数组的第 5 个元素(D) pa 是一个拥有 5 个元素的指针数组,每个元素是一个int型指针。

9.以下对于指针的运算中,(D)是非法的。

(A)两个指针在必定条件下,能够进行相等或不等的运算。

(B)能够有一个空指针赋值给某个指针。

(C)一个指针能够加上一个整数。

(D)两个指针在必定条件下,能够相加。

10.指针能够用来表示数组元素,以下表示中(A)是错误的。

已知:int a[3][7];( A) *(a+1)[5](B)*(*a+3)(C)*(*(a+1))(D)*(&a[0][0]+2) 11.以下表示引用的方法中,(A)是正确的。

西安交通大学3月课程考试《面向对象程序设计(高起专)》作业考核试题

西安交通大学3月课程考试《面向对象程序设计(高起专)》作业考核试题
正确答案:D
31:不能通过派生类对象引用从私有基类继承过来的任何成员。( )
A:错误
B:正确
正确答案:B
32:对使用默认参数的构造函数,如果在类外定义构造函数,应该在定义构造函数时指定默认值( )。
A:错误
B:正确
正确答案:A
33:如果定义了一个类的对象数组,该数组有10个元素,则要调用10次构造函数来对每个元素初始化。( )。
A:错误
B:正确
正确答案:A
49:在用class定义一个类时,如果不加声明,数据成员和成员函数默认的访问权限是public。( )
A:错误
B:正确
正确答案:A
50:友元类必须被说明为公用成员。( 案:A
D:20和5
正确答案:C
15:关于运行时多态的下列描述中,()是错误的。
A:运行时多态是以虚函数为基础的;
B:运行时多态是在运行时确定所调用的函数代码的;
C:用基类指针或引用所标识的派生类对象来操作虚函数才能实现运行时多态;
D:运行时多态是在编译时确定操作函数的。
正确答案:D
16:下面是五条顺序出现的声明语句,非法的初始化语句是()。
B:x [a]
C:x-&gt;a
D:x.a
正确答案:D
5:继承机制的作用是( )。
A:信息隐藏
B:数据封装
C:定义新类
D:数据抽象
正确答案:C
6:面向对象软件开发中使用的OOD表示( )。
A:面向对象分析
B:面向对象设计
C:面向对象语言
D:面向对象方法
正确答案:B

面向对象C++程序设计——各章习题答案

面向对象C++程序设计——各章习题答案

面向对象C++程序设计各章习题参考答案第1章面向对象技术概论一.选择题1. A2. C3. D4. B5. C二.填空题1. 封装、继承、多态性2. 面向对象分析(OOA)、面向对象设计(OOD)、面向对象实现(OOI)、面向对象测试(OOT)和面向对象系统维护(OOSM)。

3. 实例实例4. 多态性5. 消息消息传递第2章 C++简单程序设计一.选择题:1. B2. B3. B4. C5. C6. D7. D8. C9. D 10. C11. A 12. A二.填空题:1.4;2;2;8;12. 103. 04. 87;79;115. (1)x值为6,表达式的值为6(2)x值为6,但表达式的值为5(3)x值为4,表达式的值为4(4)x值为5,表达式的值为5(5)x变为6,y的值为5(6)x变为4,y的值为4(7)x变为6,y的值为25(8)x的值为6,y的值为366. const7. c+i*sizeof (c[i])8. x<=3||x>=109. a<=b&&b!=510. 30 30三.程序分析题:1.s=552.a,b99,96,194100.2,94.8,1963.i,s=15,564.13 15 22 14 645.14 25四.编程题(参考答案):1. 假设数组中含8个元素,参考答案如下:#include<iostream.h>void main(){int c=0,i,a[8],k;cout<<"input a[i]:"<<endl;for(i=0;i<8;i++)cin>>a[i];cout<<"input k:"<<endl;cin>>k;for (i=0;i<8;i++)if (a[i]>=k) c++;cout<<c;cout<<endl;}2. 参考答案:#include<iostream.h>void main(){const int n=50,m=10;int i,j,k;int index[n]; //存放学号float s,score[n],sum; //存放成绩for(i=0;i<n;i++)cin>>index[i]>>score[i]; //从键盘输入数据sum+=score[i];cout.precision(2); //设置输出宽度cout<<endl<<"A verage score:"<<sum/n; //输出平均分数cout.width(28); //设置输出宽度cout<<endl<<"Student ID:"; //输出学号for(i=0;i<10;i++) //选取前m名分数最高的学生,输出其学号及成绩{s=score[i];k=i;for(j=i+1;j<n;j++)if(s<score[j]){s=score[j];k=j;}if(k>i){score[k]=score[i];score[i]=s;j=index[k];index[k]=index[i];index[i]=j;}cout.width(4); //输出序号,学号和分数cout<<endl<<i+1;cout.width(11);cout<<index[i];cout.width(12);cout.precision(2);cout<<score[i];}cout<<endl;}3.#include<iostream.h>void main(){double x,y;cout<<”Input x:”;cin>>x;if(x<3.0)y=(x-2)*x;elseif(x>=-3.0&&x<=3.0) y=x;else y=x-2;cout<<”x=”<<x<<”,”<<”y=”<<y<<endl;}执行该程序后,显示如下信息:(分别输入3.2,2,-5) Input x:3.2↙输出结果如下:x=3.2,y=1.2Input x:2↙输出结果如下:x=2,y=2Input x:-5↙输出结果如下:x=-5,y=35该程序中使用了if-else if-else语句,用来实现三路分支。

面向对象 作业三答案

面向对象 作业三答案

面向对象程序设计技术作业三一、填空题1、假定p所指对象的值为28,p+1所指对象的值为62,则*p++的值为28 。

2、假定p所指对象的值为28,p+1所指对象的值为62,则*++p的值为62 。

3、假定p所指对象的值为25,p+1所指对象的值为50,则执行”(*p)++;”语句后,p所指对象的值为26 。

4、假定p所指对象的值为25,p+1所指对象的值为50,则执行”*(p++);”语句后,p所指对象的值为50 。

5、假定a是一个指针数组,则a+I所指对象的地址比a地址大4*I 字节。

6、假定a是一个一维数组,则a [i]的指针访问方式为*(a+i)。

7、假定a是一个二维数组,则a[i][j]的指针访问方式为*(*(a+i)+j) 。

8、假定a是一个一维数组,则a[i]对应的存储地址(以字节为单位)为a+4*j 。

9、假定一个二维数组为a[M][N],则a[i][j]对应的存储地址(以字节为单位)为a+4*i*N+4*j 。

10、假定一个二维数组为a[M][N],则a[i]的地址值(以字节为单位)为a+4i*N 。

11、假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大 4 字节。

12、假定a为一个字符数组名,则元素a[8]的字节地址为a+8 。

13、假定a为一个整型数组名,则元素a[4]的字节地址为a+16 。

14、假定一个结构类型的定义为”struct A{int a, b;short c;A * d;};”,则该类型的大小为14 字节。

15、假定一个结构类型的定义为”struct B{int a[8];char*b;};”,则该类型的大小为36 字节。

16、假定一个结构类型的定义为”struct D{int a;union{int b;double c;};D*d[3];};”,则该类型的大小为24 字节。

17、假定要动态分配一个类型为Worker的具有n个元素的数组,并由r 指向这个动态数组,则使用的语句为Worker *r=new Worker[n] 。

(完整版)Java程序设计习题附答案(三)

(完整版)Java程序设计习题附答案(三)

第三部分面向对象程序设计1、引用数据种类变量拥有基本属性为( A 、变量名 B、数据种类ABCD )C、储存单元D、变量值。

2、面向对象技术的特征是(ACD )A 、继承性B 、有效性C、多态性3、以下哪个命题为真?(C)D 、封装性。

A、全部类都一定定义一个结构函数。

B、结构函数一定有返回值。

C、结构函数能够接见类的非静态成员。

D、结构函数一定初始化类的全部数据成员。

4、对于子类与父类关系的描绘正确的选项是(ACD )A、子种类的数据能够隐式变换为其父种类的数据;B、父种类的数据能够隐式变换为其子种类的数据;C、父种类的数据一定经过显示种类变换为其子种类的数据;D、子种类实例也是父种类的实例对象。

5、以下哪一项说法最好地描绘了Java 中的对象?( C)A 、对象是经过import 命令引入到程序中的全部事情B、对象是方法的会合,这些方法在小程序窗口或应用程序窗口中产生图形元素,或许计算和返回值C、对象是一种数据结构,它拥有操作数据的方法D、对象是一组拥有共同的结构和行为的类6、下边哪个重点字不是用来控制对类成员的接见的?(C)A 、 public B、 protected C、 default D、 private7、 Java 语言正确的常量修饰符应当是(D)A 、 final B、 static final C、 static D、 public static final ;8、接口的全部成员域都拥有public、static和final属性。

9、接口的全部成员方法都拥有public和abstract属性。

10、编译以下源程序会获得哪些文件?(C)class A1{}class A2{}public class B{public static void main(String args[]){}}A) 只有B)只有 A1.class 和 A2.class 文件C)有、 A2.class 和 B.class 文件D)编译不行功11、以下哪一种说法是正确的?( A )A、私有方法不可以被子类覆盖。

Java面向对象程序设计课后习题参考答案

Java面向对象程序设计课后习题参考答案

public class San_4 {// 编写一个应用程序求1!+2!+ (20)/*** @param args//本题考查对循环的运用和对算法的编写*/public static void main(String[] args) {// TODO Auto-generated method stubint a;double b = 1, sum = 0;// 定义变量for (a = 1; a <= 20; a++) {// for循环实现该功能b = b * a;// 当a=1时,b=b*a=1,依此类推sum = sum + b;// 当a=1时,sum=sum+b=1,依次类推}for (int w = 1; w <= 19; w++) {// for循环打印出阶乘之和的形式来System.out.print(w + "!" + "+");}System.out.println("20!" + "=" + sum);// 最终输出阶乘之和double sum1 = 0, a1 = 1;int i = 1;while (i <= 20)// 用while循环实现该功能{sum1 = sum1 + a1;i++;a1 = a1 * i;}System.out.println("sum1=" + sum1);}}输出结果:1!+2!+3!+4!+5!+6!+7!+8!+9!+10!+11!+12!+13!+14!+15!+16!+17!+18!+19!+20!=2.18203E18sum1=2.18203E18习题3_5public class San_5 {// 求100以内的素数/*** @param args//本题考查对for循环、break语句、if语句的运用*/public static void main(String[] args) {// TODO Auto-generated method stubint i, j;for (i = 2; i <= 100; i++) {// for循环从2开始,逐渐增1for (j = 2; j <= i / 2; j++) {// for循环从2开始,逐步增1if (i % j == 0) {// 如果i除以j的余数为0,则终止本次for循环break;}}if (j > i / 2) {// 如果j>i/2,输出iSystem.out.print(" " + i);}}}}2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 8389 97习题3_6public class San_6 {// 分别用while和for循环计算1+1/2!+1/3!+1/4!...的前20项和/*** @param args//本题考查同学们对while循环、for循环以及对输出字符串格式的运用 */public static void main(String[] args) {// TODO Auto-generated method stubint i = 1, k;double j = 1, m = 1, sum1 = 0, sum2 = 0;while (i <= 20) {// 用while循环实现sum1 = sum1 + j;i++;j = j * (1.0 / i);}System.out.print("1+");for (int r = 2; r <= 19; r++) {System.out.print("1/" + r + "!" + "+");}System.out.print("1/20!" + "=" + sum1);System.out.println();System.out.print("1+");for (int r = 2; r <= 19; r++) {System.out.print("1/" + r + "!" + "+");}for (k = 1; k <= 20; k++) {// 用for循环实现m *= (1.0 / k);sum2 += m;}System.out.println("1/20!" + "=" + sum2);}}计算结果:1+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.904551+1/2!+1/3!+1/4!+1/5!+1/6!+1/7!+1/8!+1/9!+1/10!+1/11!+1/12!+1/13!+1/14!+1/15!+1/16!+1/17!+1/18!+1/19!+1/20!=1.90455习题3_7public class San_7 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《面向对象程序设计》高起专习题三答案
一、单项选择题(本大题共25小题,每小题2分,共50分)
1、用“>>”运算符从键盘输入多于一个数据时,各数据之间应使用( D )符号作为分隔符。

A、空格或逗号
B、逗号或回车
C、逗号或分号
D、空格或回车
2、C++中声明常量的关键字是( A )。

A、const
B、extern
C、public
D、enum
3、以下叙述中正确的是( B )
A、使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值
B、使用const定义的常量名有类型之分,其值在程序运行时是不可改变的
C、在程序中使用内置函数使程序的可读性变差
D、在定义函数时可以在形参表的任何位置给出缺省形参值
4、下列的符号常变量定义中,错误的定义是( C )。

A、const M=10;
B、const int M=20;
C、const char ch;
D、const bool mark=true;
5、函数原型语句正确的是( B )。

A、int Function(void a)
B、void Function (int);
C、int Function(a);
D、void int(double a);
6、在关键字private后面定义的成员为类的( A )成员。

A、私有
B、公用
C、保护
D、任何
7、在一个类的定义中,包含有( C )成员的定义。

A、数据
B、函数
C、数据和函数
D、数据或函数
8、在类作用域中能够通过直接使用该类的( D )成员名进行访问。

A、私有
B、公用
C、保护
D、任何
9、在关键字public后面定义的成员为类的( B )成员。

A、私有
B、公用
C、保护
D、任何
10、类中定义的成员默认为( B )访问属性。

A、public
B、private
C、protected
D、friend
11、每个类( C )构造函数。

A、只能有一个
B、可以有公用的
C、可以有多个
D、只可有缺省的
12、对类对象成员的初始化是通过构造函数中给出的( B )实现的。

A、函数体
B、参数初始化表
C、参数表
D、参数初始化表或函数体
13、假定AB为一个类,则执行“AB x;”语句时将自动调用该类的 ( B ).。

A、有参构造函数
B、无参构造函数
C、复制构造函数
D、赋值重载函数
14、假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的 ( A )。

A、带参构造函数
B、无参构造函数
C、复制构造函数
D、赋值重载函数
15、假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的( B )。

A、有参构造函数
B、无参构造函数
C、复制构造函数
D、赋值构造函数
16、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( B )。

A、作为友元函数重载的1元运算符
B、作为成员函数重载的1元运算符
C、作为友元函数重载的2元运算符
D、作为成员函数重载的2元运算符
17、在成员函数中进行双目运算符重载时,其参数表中应带有( B )个参数。

A、0
B、1
C、2
D、3
18、双目运算符重载为普通函数时,其参数表中应带有( C )个参数。

A、0
B、1
C、2
D、3
19、如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为( A )。

A、a.operator+(b)
B、b.operator+(a)
C、operator+(a,b)
D、operator(a+b)
20、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( C )。

A、a.operator==(b)
B、b.operator==(a)
C、operator==(a,b)
D、operator==(b,a)
21、派生类的成员函数可以直接访问基类的( B )成员。

A、所有
B、公有和保护
C、保护和私有
D、私有
22、派生类可以访问其基类的( D )。

A、公用成员
B、保护成员
C、私有派生
D、公用和保护成员
23、对于类中定义的成员,其隐含访问权限为( C )。

A、public
B、ptotected
C、private
D、static
24、在定义一个派生类时,若不使用保留字显式地规定采用何种继承方式,则默认为( A )方式。

A、私有继承
B、非私有继承
C、保护继承
D、公用继承
25、在公用继承的情况下,基类成员在派生类中的访问权限( B )
A、受限制
B、保持不变
C、受保护
D、不受保护
二、判断题(本大题共25小题,每小题2分,共50分,正确填“T”,错误填“F”)
1、字符串"sdfgh"的长度是5。

( T )
2、将字符串常量存放到字符串变量时,包含字符串本身和结束符“\0”。

( F )
3、关系运算符可以用来比较两个字符的大小,也可用来比较两个字符串的大小。

( T )
4、使用new运算符创建数组时,可以为该数组指定初始值( F )。

5、在设计类时一般把数据成员设置为私有的,把函数成员设置为公用的,从而实现了公用接口和私有实现的分离。

( T )
6、析构函数必须指定返回类型以及函数参数。

( F )
7、如果定义了一个类的对象数组,该数组有10个元素,则要调用10次构造函数来对每个元素初始化。

( T )。

8、友元函数说明在类体内,它是一种成员函数。

( F )
9、友元类必须被说明为公用成员。

( F )
10、运算符重载以后,其优先级和结合性都不能改变。

( T )
11、重载单目运算符作为类的成员函数,函数没有参数。

( T )
12、将运算符“+”函数重载为类的成员函数,交换律不适用。

( T )
13、不能通过派生类对象引用从私有基类继承过来的任何成员。

( T )
( F )14、若类B是类A的私有派生类,类C是类B的私有派生类,则类C可访问类A的公用成员。

15、在声明派生类时,派生类把基类的的构造函数也一起继承过来。

( F )
16、派生类能够继承基类的析构函数。

( F )
17、使用虚函数可以避免多重继承产生的二义性。

( T )
18、当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。

( T )
19、纯虚函数是在基类中说明的虚函数,它在该基类中必须定义具体的操作内容。

( F )
20、不可以定义抽象类的对象。

( T )
21、使用字符串流时必须打开文件。

( F )
22、程序运行过程出现异常是由于语法错误引起的。

( F )
23、在C++的异常处理方法中,try块和catch块必须作为一个整体出现。

( T )
24在C++中,在文件中只能用“#include <iostream>包含头文件iostream,而不能用“#include <iostream.h>包含头文件iostream。

( F )
25、C++中的所有运算符都允许重载。

( F )。

相关文档
最新文档