面向对象程序设计单元复习指导及解答(4)

合集下载

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程序设计》课程知识 复习 学习材料 试题与参考答案

《面向对象程度设计》课程知识复习学习材料试题与参考答案一、单选题1.下列(C)的调用方式是引用调用。

A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实参是变量D.形参是变量,实参是地址值2.假定CTest为一个类,并且有一无默认值的的有参构造函数和一无参构造函数,则执行“CTest objTest;”语句时将自动调用该类的(B)。

A.有参构造函数B.无参构造函数C.复制构造函数D.赋值构造函数3.假定AA为一个类,a为该类私有的数据成员,GetValue()为该类公有函数成员,它返回a 的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(D)。

A.x.aB.x.a()C.x->GetValue()D.x.GetValue()4.C++编译系统确定调用是具体对象的过程称为关联。

C++有(B)关联。

A.1种B.2种C.3种D.4种5.下面有关重载函数的说法中正确的是(C)。

A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同6.如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为(C)。

A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)7.下列对继承关系的描述中,(D)是正确的。

A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;C.在私有继承中,基类中只有公有成员对派生类是可见的;D.在私有继承中,基类中的保护成员对派生类的对象是可见的;8.定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为(A)。

A.int *p=new int[30];B.int *p=new int(30);C.int *p=new [30];D.*p=new int[30];9.在一个类中可以对一个运算符进行(D)重载。

面向对象程序设计教程 答案

面向对象程序设计教程 答案

面向对象程序设计教程答案面向对象程序设计教程第1章引言1.1 背景1.1.1 传统的结构化程序设计方法1.1.2 面向对象的程序设计方法1.2 目标1.3 本教程的组织结构第2章面向对象的基本概念2.1 类和对象2.1.1 类的定义2.1.2 对象的创建与使用2.2 封装和信息隐藏2.2.1 封装的概念2.2.2 信息隐藏的重要性2.3 继承和多态2.3.1 继承的概念与用法 2.3.2 多态的概念与用法 2.4 抽象和接口2.4.1 抽象的概念与用法 2.4.2 接口的概念与用法第3章面向对象的设计原则3.1 单一职责原则3.2 开放-封闭原则3.3 里氏替换原则3.4 依赖倒置原则3.5 接口隔离原则3.6 迪米特法则第4章面向对象的分析与设计 4.1 需求分析4.1.1 确定需求4.1.2 分析需求4.2 类的设计4.2.1 识别类的责任4.2.2 定义类的属性和行为 4.3 协作关系的设计4.3.1 关联关系4.3.2 依赖关系4.3.3 聚合关系4.3.4 组合关系4.3.5 继承关系第5章面向对象的编程语言5.1 Java5.2 C++5.3 Python5.4 Ruby第6章实例分析:学绩管理系统 6.1 需求分析6.2 类的设计6.3 协作关系的设计6.4 实现与测试第7章总结本文档涉及附件:无本文所涉及的法律名词及注释:1:封装:将数据和对数据的操作封装在一个类中,外部无法直接访问和修改内部数据,只能通过类提供的接口访问和修改。

2:信息隐藏:对于类的用户来说,只需要知道如何使用类的接口,而不需要知道类的实现细节。

3:继承:一个类可以从另一个类继承属性和方法,继承可以提高代码的复用性和可维护性。

4:多态:同一个方法可以根据不同的对象调用不同的实现,提高代码的灵活性和可扩展性。

5:抽象:将一组具有相似属性和行为的对象抽象成一个类,可以减少代码重复。

6:接口:描述类的行为,定义类应该实现的方法。

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

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

第一章:面向对象程序设计概述[1_1]什么是面向对象程序设计?面向对彖程序设计是一种新型的程序设计范型。

这种范型的主要特征是:程序=对象+消息。

面向对彖程序的基本元素是对象,面向对象程序的主要结构特点是:第一:程序一般由类的定义和类的使用两部分组成,在主程序中定义各对彖并规定它们之间传递消息的规律。

第二: 程序中的一切操作都是通过向对彖发送消息来实现的,对彖接受到消息后,启动有关方法完成相应的操作。

面向对彖程序设计方法模拟人类习惯的解题方法,代表了计算机程序设计新颖的思维方式。

这种方法的提出是软件开发方法的一场革命,是目前解决软件开发面临困难的最有希塑、最有前途的方法之一。

[1_2]什么是类?什么是对象?对象与类的关系是什么?在面向对彖程序设计中,对彖是描述其属性的数据以及对这些数据施加的一组操作封装在一起构成的统一体。

对象可以认为是:数据+操作在面向对彖程序设计中,类就是具有相同的数据和相同的操作的一组对彖的集合,也就是说, 类是对具有相同数据结构和相同操作的一类对彖的描述。

类和对彖之间的关系是抽象和具体的关系。

类是多个对彖进行综合抽象的结果,一个对象是类的一个实例。

在面向对彖程序设计中,总是先声明类,再由类生成对象。

类是建立对彖的“摸板”,按照这个摸板所建立的一个个具体的对象,就是类的实际例子,通常称为实例。

[1_3]现实世界中的对象有哪些特征?请举例说明。

对彖是现实世界中的一个实体,其具有以下一些特征:(1)每一个对彖必须有一个名字以区别于其他对彖。

(2)需要用属性来描述它的某些特性。

(3)有一组操作,每一个操作决定了对象的一种行为。

(4)对彖的操作可以分为两类:一类是自身所承受的操作,一类是施加于其他对象的操作。

例如:雇员刘名是一个对象对象名:刘名对象的属性:年龄:36生口:1966.10.1工资:2000部门:人爭部对象的操作:吃饭开车[1_4]什么是消息?消息具有什么性质?在面向对彖程序设计中,一个对象向另一个对象发出的请求被称为“消息”。

面向对象程序设计教程-答案

面向对象程序设计教程-答案

面向对象程序设计教程-答案(面向对象程序设计教程(C++语言描述)题解与课程设计指导第1章面向对象程序设计概论一、名词解释抽象封装消息¥【问题解答】面向对象方法中的抽象是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。

面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位,并尽可能隐蔽对象的内部细节。

消息是面向对象程序设计用来描述对象之间通信的机制。

一个消息就是一个对象要求另一个对象实施某种操作的一个请求。

二、填空题(1)目前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。

(2)结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。

(3)在结构化程序设计方法中,程序可表示为程序=数据结构+算法;而面向对象的程序设计方法,程序可表示为程序=对象+消息。

|(4)结构化程序设计方法中的基本模块是过程;而面向对象程序设计方法中的基本模块是类。

(5)面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。

三、选择题(至少选一个,可以多选)(1)面向对象程序设计着重于( B )的设计。

A. 对象B. 类C. 算法D. 数据(2)面向对象程序设计中,把对象的属性和行为组织在同一个模块内的机制叫做( C )。

A. 抽象B. 继承C. 封装D. 多态(3)在面向对象程序设计中,类通过( D )与外界发生关系。

|A. 对象B. 类C. 消息D. 接口(4)面向对象程序设计中,对象与对象之间的通信机制是( C )。

A. 对象B. 类C. 消息D. 接口(5)关于C++与C语言的关系的描述中,( D )是错误的。

A. C语言是C++的一个子集B. C语言与C++是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的【结果分析】¥C语言是面向过程的。

C++语言是一种经过改进的更为优化的C 语言,是一种混合型语言,既面向过程也面向对象。

《面向对象程序设计》编程题复习及其答案

《面向对象程序设计》编程题复习及其答案

《⾯向对象程序设计》编程题复习及其答案《⾯向对象程序设计》复习题1、(C++的输⼊输出)天猫优惠券,我就要券/doc/a2caece903020740be1e650e52ea551811a6c980.html定义⼀个函数max,实现输⼊两个数a、b,⽐较并从⼩到⼤输出。

2、(函数的重载)(1)定义⼀个带两个参数的函数max,输出最⼤值。

(2)再定义⼀个带三个参数的函数max,输出最⼤值。

(3)主函数测试之。

3、(有默认参数的函数)将题2⽤带默认参数的函数实现。

4、(变量的引⽤)(1)定义⼀个swap1函数,以普通形参传⼊两个变量a、b,互换a、b的值。

(2)定义⼀个swap2函数,以指针形参传⼊两个变量a、b,互换a、b的值。

(3)定义⼀个swap3函数,以引⽤形参输⼊两个变量a、b,互换a、b的值。

(4)主函数定义两个变量x、y传⼊三个函数,观察x、y值前后的变化。

5、(类的定义)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1) set函数,键盘输⼊学号,姓名,年龄,性别(2) display函数,输出学⽣信息。

6、(构造函数和析构函数)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display函数,输出学⽣信息。

(3)析构函数,输出学⽣学号。

(4)主函数定义多个对象,并注意构造函数和析构函数的调⽤顺序。

7、(构造函数的重载)在题6基础上增加⼀个默认构造函数,实现构造函数的重载8、将题6⽤带默认参数的构造函数实现。

9、(对象数组和对象的动态建⽴及释放)在题8基础上,实现如下主函数:(1)在主函数中定义⼀个包含三个学⽣的数组,并初始化之。

(2)在主函数中定义⼀个student类指针p并⽤new运算符分配动态内存(3)⽤delete删除p指向的动态内存。

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 {// 一个数如果恰好等于它的因子之和,这个数就成为”完数“。

《面向对象程序设计》习题四答案

《面向对象程序设计》习题四答案

面向对象程序设计习题4
(3) 下列程序中,基类base和派生类d1、d2中都含有私有、 保护和公有成员,d1类是base的派生类,d2是d1问属性的变化
面向对象程序设计习题4 #include <iostream.h> #include <iostream.h> class base class base {{private: int n1; private: int n1; protected: int k1; protected: int k1; public: public: base(){n1=0;k1=1;} base(){n1=0;k1=1;} void fun1(){cout<<n1<<k1<<endl;} }; void fun1(){cout<<n1<<k1<<endl;} }; class d1:public base class d1:public base {{ int n2; int n2; protected: protected: int k2; int k2; public: public: d1(){n2=10;k2=11;} d1(){n2=10;k2=11;} void fun2(){cout<<n1<<k1<<endl; cout<<n2<<k2<<endl;} }; void fun2(){cout<<n1<<k1<<endl; cout<<n2<<k2<<endl;} }; class d2:public d1 class d2:public d1 {{ int n3; int n3; protected: protected: int k3; int k3; public: public: d2(){n3=20;k3=21;} d2(){n3=20;k3=21;} void fun3() void fun3()

面向对象程序设计课后答案

面向对象程序设计课后答案

面向对象程序设计课后答案面向对象程序设计是计算机科学领域的一门重要课程,通过学习这门课程,我们可以深入理解面向对象的编程思想和方法。

本文将针对面向对象程序设计的一些常见问题给出详细的答案,帮助读者更好地理解和掌握这门课程。

一、什么是面向对象程序设计?面向对象程序设计(Object-Oriented Programming,简称OOP)是一种软件开发的方法和思想,它将程序中的数据和操作数据的方法组合成一个对象,通过对象的相互调用来完成任务。

面向对象程序设计可以更好地模拟现实世界的事物和关系,提高软件的可维护性和可扩展性。

二、面向对象程序设计的基本特征有哪些?1. 封装(Encapsulation):将数据和操作封装在一个对象中,对外部隐藏内部的实现细节,提供统一的接口进行访问。

2. 继承(Inheritance):通过继承可以使一个类获取另一个类的属性和方法,减少代码的重复性,提高代码的复用性。

3. 多态(Polymorphism):不同的对象可以对相同的消息做出不同的响应,同一个方法可以根据具体的对象类型来执行不同的操作。

三、什么是类和对象?1. 类(Class):类是一种抽象的数据类型,它定义了对象共同具有的属性和方法。

类是面向对象程序设计的基础,用于描述对象的特征和行为。

2. 对象(Object):对象是类的一个实例,具有类定义的属性和方法。

对象是面向对象程序设计的基本单位,可以通过对象来访问和操作数据。

四、如何定义一个类?在面向对象程序设计中,可以通过以下步骤来定义一个类:1. 确定类的名称:类名通常使用大写字母开头,采用驼峰命名法。

2. 确定类的属性:类的属性是描述对象特征的变量,可以包括基本数据类型和其他对象。

3. 确定类的方法:类的方法是描述对象行为的函数,可以有参数和返回值,用于操作类的属性。

五、如何创建对象?在面向对象程序设计中,可以通过以下步骤来创建对象:1. 使用关键字new来实例化一个对象:Object obj = new Object();2. 调用对象的构造方法(Constructor):构造方法用于初始化对象的属性,在类中可以定义一个或多个构造方法。

面向对象程序设计复习总结题(含部分答案)

面向对象程序设计复习总结题(含部分答案)

《面向对象程序设计》复习要点及复习题(一)复习要点1.标识符、基本数据类型(字节数)、构造数据类型、运算符的种类、运算符的优先级和结合性、控制台输入和输出2.三种基本控制结构、if…else语句、switch语句、for语句、while语句、do…while语句、跳转语句;函数参数传递、函数重载、内联函数;标识符的作用域和生存期。

3.类的定义和使用、this指针、构造函数和析构函数、组合技术、静态成员、友元、运算符重载4.指针与数组、二级指针、动态内存的分配与释放、深复制与浅复制、递归。

5.派生类的构造与析构、派生类与基类的赋值兼容、多重继承与虚基类。

6.虚函数与动态绑定、纯虚函数与抽象类(二) 复习题一、单项选择题。

1.在switch语句中,为了结束分支,一般应在每个分支的结尾处加上语句(C)。

A. continueB. gotoC. breakD. default2.说明友元函数的关键字是(D)。

A. inlineB. virtualC. staticD. friend3.下面对指向常量的指针描述正确的是(C)。

A. 只能指向常量B. 指向的数据可以被修改C. 可以指向普通变量D. 必须进行初始化4.友元函数没有(A)。

A. this指针B. 返回类型C. 函数名D. 参数5.关于重载,(A)不正确。

A. 类名可以重载B. 函数名可以重载C. 运算符可以重载D. 缺省参数是重载的一种方式6.用new分配n维数组空间,首地址赋予指针p,则p应为指向(C)维数组的指针。

A. 0B. 1C. n-1D. n7.为类X重载前缀自增运算,则函数返回类型应为(C)。

A. XB. X*C. X&D. int8.以下(A)未调用构造函数(X为类名)。

A. X*p;B. X obj;C. X obj(1);D. X obj=2;9.若在类外有函数调用X::func();则函数func是类X的(C)函数。

C-面向对象程序设计习题解答(全)Word版

C-面向对象程序设计习题解答(全)Word版

《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。

第二章对C语言的基础扩充................................................................... 错误!未定义书签。

第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。

第四章类和对象的进一步解析.............................................................. 错误!未定义书签。

第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。

第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。

面向对象程序设计知识题及答案解析

面向对象程序设计知识题及答案解析

面向对象程序设计一、选择填空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)是正确的。

面向对象程序设计单元复习指导及解答

面向对象程序设计单元复习指导及解答

面向对象程序设计单元复习指导及解答2011春面向对象程序设计单元复习指导(3)一、填空题:1. 若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。

A. inB. inlineC. inLineD. InLiner2. 在关键字public后面定义的成员为类的()成员。

A. 私有B. 公用C. 保护D. 任何3. 假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。

A. x.aB. x.a()C. x->aD. x->a()4. 假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为()。

A. int AA::a()B. int AA:a()C. AA::a()D. AA::int a()5. 在多文件结构的程序中,通常把类的定义单独存放于()中。

A. 主文件B. 实现文件C. 库文件D. 头文件6. 一个C++程序文件的扩展名为()。

A. .hB. .cC. .cppD. .cp7. 假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为()。

A. intB. charC. AAD. AA*8. 假定AA是一个类,“AA* abc()const;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x 的值()。

A. 已经被改变B. 可能被改变C. 不变D. 受到函数调用的影响9. 当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( )。

A. nB. n+1C. n-1D. n-210. 在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾(即最后一个)元素的位置为( )。

A. length+1B. first+lengthC. (first+length-1)%MSD. (first+length)%MS11. 在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给( )。

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

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

面向对象程序设计复习选择题1. 一个设计得好的面向对象系统具有(B)特征。

A 低内聚、低耦合B 高内聚、低耦合C 高内聚、高耦合D 低内聚、高耦合2. 面向对象程序设计的特点主要概括为(C)。

A 可分解性、可组合性、可分类性B 继承性、封装性、多态性C 抽象封装性、继承性、多态性D 封装性、易维护性、可扩展性、可重用性3. 关于C#程序的书写,下列不正确的说法是( D )。

A. 区分大小写B. 一行可以写多条语句C. 一条语句可写成多行D. 一个类中只能有一个Main()方法,因此多个类中可以有多个Main()方法4. 关于C#语言的基本语法,下列哪些说法正确的是(C)A. C#语言使用using 来引用需要用到的命名空间;B. 用C#编写的程序中,Main 函数是唯一允许的全局函数;C. C#语言中使用的名称严格区分大小写;D. C#中一条语句必须写在一行内;5 以下标识符中,正确的是(A)。

A._nNameB. typeofC. 6bD. x5#6.字符串连接运算符包括&和(A)。

A. +B. -C. *D. /7.拆箱是关于:(B)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换8.装箱是关于:(A)A、值类型到引用类型的转换B、引用类型到值类型的转换C、引用类型到引用类型的转换D、值类型到值类型的转换9.下列引用类型和值类型描述正确的是(A)。

A. 引用类型变量保存内存地址,值类型直接保存变量值B. 引用类型在变量中直接保存变量值,值类型保存内存地址C. 引用类型和值类型保存数据的方式相同D. .NET Framework不支持值类型,因为所有的类型都是引用类型了10.一个类中的静态方法的调用可以:(A)A、通过类名调用B、通过实例化的对象调用C、在主方法中直接调用D、在同一个类中的某一方法中直接调用11.以下数据类型中,属于引用类型的是:(A)A、string类型B、double类型C、int类型D、 char类型12.下列类型中为值类型的是(C)A. 字符串类型B. 树组类型C. 枚举类型D. 接口类型13.decimal类型和浮点类型都可以表示小数,正确说法:(C)A. 两者没有任何区别B. 小数类型比浮点类型取值范围大C.小数类型比浮点类型精度高D. 小数类型比浮点类型精度低14. 有定义语句:int [,]a=new int[5,6]; 则下列正确的数组元素的引用是(C)。

java面向对象程序设计实验指导与习题解

java面向对象程序设计实验指导与习题解

java面向对象程序设计实验指导与习题解
1、Java面向对象程序设计实验指导:
(1)理解Java面向对象程序设计的基本概念,如类、对象、封装、
继承、多态等;
(2)熟悉Java常用API的使用,比如String、Random等;
(3)掌握Java多线程编程及技术;
(4)学会使用Java GUI编程;
(5)熟悉Java网络编程及Java数据库技术;
(6)理解面向对象编程的设计原则及过程;
(7)熟练使用UML实现面向对象程序;
(8)能够设计出更强大、更高效的Java程序;
(9)夯实基础,熟练掌握和运用带实例的实验指导,学会把它们运
用到自己的实际应用中。

2、Java面向对象程序设计习题解:
(1)《Java编程思想》中的实例:
从《Java编程思想》一书的示例中学习,包括图形化编程,多线程,网络协议和数据库;
(2)面向对象设计思维:
熟练掌握设计模式的概念,并能够设计出更加优秀的类和对象;
(3)增强实现能力:
举出实际应用场景,结合实际应用,夯实基础,运用实验指导解决实际问题。

计算机科学与技术面向对象程序设计复习提纲(含答案)

计算机科学与技术面向对象程序设计复习提纲(含答案)

计算机科学与技术面向对象程序设计复习提纲(含答案)面向对象程序设计复习提纲1. 下列叙述中正确的是()A) Java是不区分英文字母大小写的,源文件名与程序类名不允许相同B) Java语言以方法为程序的基本单位C) Applet是Java的一类特殊应用程序,它嵌入HTML中,随主页发布到互联网D) 以//符开始的为多行注释语句2. Java语言的许多特点中,下列()特点是C++语言所不具备的A) 高性能B) 跨平台C) 面向对象D) 有类库3. Java源文件中最多只能有一个()类,其他类的个数不限A)abstract B) public C) final D) interface4. Java语言中,()是所有类的根类A) Object B) Root C) Thread D) Applet5. Java语言中,字符变量以char类型表示,它在内存中占()位bitA) 8 B) 16 C) 32 D) 26. 下列叙述中,()是正确的A) 类是变量和方法的集合体B) 数组是无序数据的集合C) 抽象类可以实例化D) 类成员数据必须是公有的7. 下列关于方法形参的叙述中,()是正确的A) 必须有多个B) 至少有一个C) 可以没有D) 只能是简单变量8. 构造方法在()时候被调用A) 类定义时B) 创建对象时C) 调用对象方法时D) 使用对象的变量时9.下列关于继承的叙述中,()是正确的A) 子类能继承父类的所有方法和状态B) 子类能继承父类的非私有方法和状态C) 子类只能继承父类的public方法和状态D) 子类只能继承父类的方法,而不继承状态10. 下列关于接口的叙述中,()是正确的A) 接口与抽象类是相同的概念B) 接口之间不能有继承关系C) 一个类只能实现一个接口D) 接口中只含有抽象方法和常量二、判断题()1、Java的各种数据类型占用固定长度,与具体的软硬件平台环境无关。

()2、用“+”可以实现字符串的拼接,用“-”可以从一个字符串中去除一个字符子串。

c++面向对象程序设计语言重点难点复习题及答案

c++面向对象程序设计语言重点难点复习题及答案

2、如果一个函数定义中使用了static修饰,则该函数不允许被其它文件中的函数调用。

5、C++程序运行时的内存空间可以分成全局数据区,堆区,栈区和代码区。

6、局部变量具有局部生存期,存放在内存的栈区中。

7、对类中对象成员的初始化是通过在构造函数中给出的初始化表来实现的。

8、对类中常量成员的初始化是通过在构造函数中给出的初始化表来实现的。

9、对类中引用成员的初始化只能通过在构造函数中给出的初始化表来实现。

10、对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的函数体来实现。

11、假定要把aa定义为AB类中的一个常量整数型数据成员,则定义语句const int aa。

12、假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为int &aa。

13、假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数aa对其进行初始化,则该类的构造函数的定义为AB (int aa){a=aa;}。

14、假定AB类中只包含一个整型数据成员a,并且它是一个引用成员,若利用引用参数aa对其进行初始化,则该类的构造函数的定义为AB(int &aa){a=aa;}。

15、静态成员函数能够直接访问类的静态数据成员,只能通过对象名访问类的非静态数据成员。

16、静态数据成员必须在所有函数的定义体外进行初始化。

17、一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上类域的限定。

四、修改程序题:下列程序段中,A_class的成员函数Variance()可求出两数的平方差,请改写该程序段,把Variance()函数从A_class类中分离出来,用友元函数来实现该函数的功能。

class A_class {private:int x,y,t;public:A_class(int i,int j):x(i),y(j) {if(y>x){t=x;x=y;y=t;}}int Variance(){return x*x-y*y;}//其它函数从略};void main() {A_class A_obj(3,5);cout<<"Result:"<<A_obj.Variance()<<endl;}修改后的源程序:class A_class {private:int x,y,t;public:A_class(int i,int j):x(i),y(j) {if(y>x){t=x;x=y;y=t;}}friend int Variance();//其它函数从略};int variance (){return x*x-y*y;}void main() {A_class A_obj(3,5);cout<<"Result:"<<A_obj.Variance()<<endl;2、数组、指针与字符串一、1、在下面的一维数组定义中,哪一个有语法错误。

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

2011春面向对象程序设计单元复习指导(4)一、填空题:1. 设px是指向一个类对象的指针变量,则执行“delete px;”语句时,将自动调用该类的( )。

A. 无参构造函数B. 带参构造函数C. 析构函数D. 拷贝构造函数2. 假定AB为一个类,则执行“AB a[10];”语句时调用该类无参构造函数的次数为( )。

A. 0B. 1C. 9D. 103. 假定AB为一个类,则执行“AB a(2), b[3], *p[4];”语句时共调用该类构造函数的次数为( )。

A. 3B. 4C. 5D. 94. 假定AB为一个类,px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语句时共调用该类析构函数的次数为( )。

A. 0B. 1C. nD. n+15. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。

A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体6. 一个类的静态数据成员所表示属性 ( )。

A. 是类的或对象的属性B. 只是对象的属性C. 只是类的属性D. 类和友元的属性7. 被非静态成员函数访问的类的数据成员( )。

A. 可以是非静态数据成员或静态数据成员B. 不可能是类的静态数据成员C. 只能是类的非静态数据成员D. 只能是类的静态数据成员8. 引入友元的主要目的是为了()。

A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性9. 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

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

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

A. a.operator++()B. operator++(a)C. operator++(a,1)D. operator++(1,a)12. 一个程序中数组a和变量k定义为“int a[5][10],k;”,且程序中包含有语句“a(2,5)=++k*3;”,则此语句中肯定属于重载操作符的是()。

A. ( )B. =C. ++D. *13. 下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。

A. Value operator+(Value, Value);B. Value operator+(Value,int);C. Value &operator+(Value, Value);D. Value &operator+(Value&, Value&);14. 关于插入运算符<<的重载,下列说法不正确的是()。

A. 运算符函数的返回值类型是ostream & 。

B. 重载的运算符必须定义为类的成员函数。

C. 运算符函数的第一个参数的类型是ostream & 。

D. 运算符函数有两个参数。

15. C++的继承性允许派生类继承基类的()。

A. 部分特性,并允许增加新的特性或重定义基类的特性B. 部分特性,但不允许增加新的特性或重定义基类的特性C. 所有特性,并允许增加新的特性或重定义基类的特性D. 所有特性,但不允许增加新的特性或重定义基类的特性二、填空题1. 当一个队列为满时,不能对其做________元素的操作。

2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,当链队非空时,_____________指向队首结点的后继(即下一个)结点。

3. 在一个用链表实现的队列类中,若链队为空或只含有一个结点,则队首指针的值与队尾指针的值________。

4.一个类的__________函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务。

5.定义类动态对象数组时,其元素只能靠自动调用该类的____________来进行初始化。

6. 假定 AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类构造函数的次数为________。

7.对类中引用成员的初始化只能通过在构造函数中给出的______________来实现。

8. 假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为____________。

9.假定用户为类AB定义了一个构造函数“AB(int aa) {a=aa;}”,则系统(会/不会)_________为该类自动定义一个无参构造函数"AB() {}"。

10.假定用户为类AB定义了一个构造函数“AB(int aa=0):a(aa){}”,则定义该类的对象时,可以有________种不同的定义格式。

11. 派生类的成员函数能够直接访问所含基类的__________成员函数和___________成员函数。

12.在定义一个派生类时,使用private关键字表示为私有继承,使用__________关键字表示为公有继承。

三、程序填空:1. 已知一个利用数组实现栈的类定义如下:const int ARRAY_SIZE=10;class Stack {public:void Init() {top=-1;} //初始化栈为空void Push(int newElem); //向栈中压入一个元素int Pop(); //从栈顶弹出一个元素bool Empty() { //判栈空if(top==-1) return true;else return false;}int Depth() {return top+1;} //返回栈的深度void Print();//按照后进先出原则依次输出栈中每个元素,直到栈空为止private:int elem[ARRAY_SIZE]; //用于保存堆栈元素的数组int top; //指明栈顶元素位置的指针};该类的Pop和Print函数的实现分别如下:___(1)___ {if(top==-1) {cout<<"栈空!"<<endl;exit(1); //中止运行}return ___(2)___;}void Stack::Print() {while(!Empty())cout<<___(3)___ <<' ';}(1) (2) (3)2. #include<iostream.h>#include<stdlib.h>class A {int *a; int n; int MaxLen;public:A(): a(0), n(0), MaxLen(0) {}A(int *aa, int nn, int MM) {n=nn;MaxLen=MM;if(n>MaxLen) exit(1);___(1)___; //由a指向长度为MaxLen的动态数组for(int i=0; i<n; i++) a[i]=aa[i];}~A() {delete []a;}int GetValue(int i) ___(2)___ //函数体返回a[i]的值};void main(){int b[10]={1,2,3,4,5,6,7,8,9,10};A r(b,10,10);int i,s=0;for(i=0; i<10; i++); ___(3)___ //把r对象的a数据成员中的每个//元素值依次累加到s中cout<<"s="<<s<<endl;}(1) (2) (3)3. 在下面一段类定义中, Derived类公有继承了基类Base。

需要填充的函数由注释内容给出了功能。

class Base{private:int mem1,mem2; //基类的数据成员public:Base(int m1,int m2) {mem1=m1; mem2=m2;}void output(){cout<<mem1<<' '<<mem2<<' ';}//...};class Derived: public Base{private:int mem3; //派生类本身的数据成员public://构造函数,由m1和m2分别初始化mem1和mem2,由m3初始化mem3Derived(int m1,int m2, int m3);//输出mem1,mem2和mem3数据成员的值void output(){___(1)___; cout<<mem3<<endl;}//...};Derived::Derived(int m1,int m2, int m3): ___(2)___ {___(3)___;}(1) (2) (3)四、写出程序运行结果:1. #include<iostream.h>class Franction { //定义分数类int nume; //定义分子int deno; //定义分母public://把*this化简为最简分数,具体定义在另外文件中实现void FranSimp();//返回两个分数*this和x之和,具体定义在另外文件中实现Franction FranAdd(const Franction& x);//置分数的分子和分母分别0和1void InitFranction() {nume=0; deno=1;}//置分数的分子和分母分别n和dvoid InitFranction(int n, int d) {nume=n; deno=d;}//输出一个分数void FranOutput() {cout<<nume<<'/'<<deno<<endl;} };void main(){Franction a,b,c,d;a.InitFranction(6,15);b.InitFranction(3,10);c.InitFranction();c=a.FranAdd(b);d=c.FranAdd(a);cout<<"a: "; a.FranOutput();cout<<"b: "; b.FranOutput();cout<<"c: "; c.FranOutput();cout<<"d: "; d.FranOutput();}2. #include<iostream.h>class A {int a,b;public:A() {a=b=0;}A(int aa, int bb) {a=aa; b=bb;}int Sum() {return a+b;}int* Mult() {int *p=new int(a*b);return p;}};void main() {int *k;A x(2,3), *p;p=new A(4,5);cout<<x.Sum()<<' '<<*(x.Mult())<<endl;cout<<p->Sum()<<' '<<*(k=p->Mult())<<endl;delete k;}五、指出程序或函数的功能1. int Count(IntNode *f){if(!f) return 0;int c=0;while(f) {c++;f=f->next;}return c;}假定IntNode的类型定义为:struct IntNode {int data; //结点值域IntNode* next; //结点指针域};2. int f(const char *s){int i=0;while(*s++)i++;return i;};六、程序改错,请根据程序段或函数模块的功能改写个别地方的错误。

相关文档
最新文档