华中科技大学面向对象程序设计模拟试卷
面向对象程序设计模拟题(C)
面向对象程序设计模拟题一、简答题:1. 什么是对象?什么是对象的事件和方法?试列举几个常用的事件和方法?答:对象是代码和数据的组合,可以作为一个单位来处理。
对象可以使应用程序的一部分,也可以是整个应用程序。
对象事件是对象可以识别的动作,即窗体、控件和其他对象可以识别的动作。
常用的事件有Click事件、Paint事件、Load事件等。
方法是对象要执行的动作,常见的有Clear、AddIRem、RemoveITem等。
2.VB有几种类型的表达式?请举例说明。
答:VB有5中类型的表达式,它们是算术表达式(例2*Pi*r*r)、字符串表达式(例“欢迎您”)、日期型表达式(例#11/22/98)、关系表达式(”abc”>”abcd”)和布尔表达式(2<=4AND6>3)。
二、填空题:1.单选按钮用于建立一组多选一的选项供用户选择,即在这些选项中,用户一次只能选择其中的一个选项选项,并且必须选择其中一个选项。
同时,当一个单选钮被选中时,其他选项自动关闭。
2.列表框是以列表形式显示一系列项目和信息,用户可通过单击其中某一项来选择的自己所需项目或信息。
在Windows中,使用列表框输出数据是保证数据标准化的重要手段,它是一个重要的输出控件。
在工具栏中它是一个标着带有滚动条的列表图案的按钮。
3.MsgBox 函数用来在对话框中显示消息,等待用户单击按钮,并返回一个整数,告诉程序用户单击了哪一个按钮。
4.在VB中有三种形式的数组,静态数组、动态的数组和控件数组。
静态数组就是指数组元素的个数在程序运行时保持不变,动态数组是指数组中的元素个数在程序运行时可以变化的数组,控件数组是使用VB中某些常用控件创建的数组。
使用静态数组、动态数组前必须要先声明,才能在程序中使用。
5.VB提供了图形控件,如Shape控件和Line控件。
它们提供一定的绘图样式,虽比较简单,但是使用非常方便,不需要编写代码,只要设置相应的属性即可。
中大实践考核面向对象(C)程序设计试题和答案 (上机考试)
面向对象(C++)程序设计 (上机考试)样题1.下列Shape类是一个表示形状的抽象类,Area()为求图形面积的函数,Total()则是一个通用的用以求不同形状的图形面积总和函数。
请从Shape类派生三角形类(triangle)、矩形类(rectangle),并给出具体的求面积函数。
编写程序验证求面积函数的正确性。
Shape、total的定义如下所示。
Class shape{Pubilc:Virtual float area()=0};float total (shape *s[ ], int n){float sum=0.0;for(int i=0; i<n; i++)sum += s [ I ] ->area ();return sum;}解答: #include <iostream.h>class shape{public:virtual float area()=0;};float total(shape *s[], int n){float sum=0;for(int i=0; i<n; i++)sum += s[i] -> area();return sum;}class triangle : public shape{protected:float H, W;public:triangle(float h, float w) { H=h; W=w;}float area() { return H*W*0.5;}};class rectangle : public triangle{public:rectangle(float h, float w) : triangle(h, w) {}float area() { return H*W;}};void main(){shape *s[4];s[0] = new triangle( 3.0, 4.0 );s[1] = new rectangle( 2.0, 4.0 );s[2] = new triangle( 5.0, 8.0 );s[3] = new rectangle( 6.0, 8.0 );float sum = total(s,4);cout << "The total area is:" << sum << endl;}样题2. 以面向对象的概念设计一个类,此类包括3个私有数据,unlead(无铅汽油), lead有铅汽油, total (当天总收入)。
面向对象程序设计试卷及答案
考试试卷A(答案)面向对象程序设计注意事项:1. 请考生按要求在试卷装订线内填写、学号和年级专业。
2. 请仔细阅读各种题目的答复要求,在规定的位置填写答案。
3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。
4. 总分值100分,考试时间为120分钟。
一.单项选择(本大题共10小题,每题3分,共30分)1. C#中每个int类型的变量占用〔B 〕个字节的内存。
〔A〕8 〔B〕4 〔C〕2 〔D〕12. 面向对象的特点是〔A 〕〔A〕封装、继承、多态〔B〕抽象、封装、多态〔C〕抽象、继承、封装〔D〕抽象、多态、重载3. C#控制台程序的主入口点是〔C 〕〔A〕Page_Load函数〔B〕Run函数〔C〕Main函数〔D〕Form_Load函数4. 引用类型存储在〔B 〕中。
〔A〕堆栈〔B〕堆内存〔C〕队列〔D〕列表5. 在C#中,表示一个字符串的变量应使用以下哪条语句定义〔B 〕〔A〕CString str 〔B〕string str〔C〕Dim str as string 〔D〕char *str6.在中,用来与数据源建立连接的对象是〔A 〕。
〔A〕Connection对象〔B〕Command对象〔C〕DataAdapter对象〔D〕DataSet对象7. 在类的定义中,类的〔 B 〕描述了该类的对象的行为特征。
〔A〕类名〔B〕方法〔C〕所属的名字空间〔D〕私有域8. 如果未显式赋值,则将整型值〔 B 〕赋给枚举中的第一个元素。
〔A〕1 〔B〕0 〔C〕2 〔D〕39. float类型的值可以隐式转换成〔 C 〕类型的值而保持值不被改变。
〔A〕char 〔B〕long 〔C〕double 〔D〕int10. 在C#中,假设Class1是一个类,而IExample 是一个接口,下面的〔 A 〕类声明是正确的。
〔A 〕class Employee: Class1, IExample〔B 〕class Employee: IExample, Class1〔C 〕class Employee- Class1, IExample〔D 〕class Employee: Class1/IExample二.判断题 (本大题共5小题,每题3分,共15分)1. C#中子类可以继承多个基类,也可以继承一个接口。
面向对象程序设计-模拟测试
《面向对象程序设计》课程模拟测试一、选择题1、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()A.面向过程B.面向对象C.安全性D.复用性2、关于虚函数的描述中,正确的是()A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型3、下列关于构造函数的描述中,错误的是()A.构造函数可以设置默认参数;B.构造函数在定义类对象时自动执行C.构造函数可以是内联函数;D.构造函数不可以重载4、在以下关于C++语言的注释的叙述中,不正确的是()A.C++程序中,注释可用“/*”、“*/”形式表示,也可用“//”形式表示B.C++编译器在编译一个程序时,将跳过注释,不对其进行处理C.C++编译器在编译一个程序时,可发现注释中的单词拼写错误D.程序中注释的多少不会影响所生成的可执行文件的长度5、C++语言的跳转语句中,对于break和continue说法正确的是()A.break语句只应用于循环体中B.continue语句只应用于循环体中C.break是无条件跳转语句,continue不是D.break和continue的跳转范围不够明确,容易产生问题6、下列关于C++函数的说明中,正确的是()A.内联函数就是定义在另一个函数体内部的函数B.函数体的最后一条语句必须是return语句C.标准C++要求在调用一个函数之前,必须先声明其原型D.编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式7、在下面的一维数组定义中,哪一个有语法错误。
()A.int a[ ]={1,2,3} B.int a[10]={0}C.int a[ ] D.int a[5]8、面向对象系统不具有()特性A. 继承性B. 封装性C. 过程性D. 多态性9、下列静态数据成员的特性中,错误的是()A.说明静态数据成员前边加staticB.静态数据成员要在类体外初始化C.引用静态数据成员时,要在静态数据成员前加<类名>和作用域运算符D.静态数据成员不是一个类所有对象共享的10、若用数组名作为函数调用时的实参,则实际上传递给形参的是()A.数组首地址B.数组的第一个元素值C.数组中全部元素的值D.数组元素的个数二、填空题1、C++语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。
Java面向对象程序设计模拟试题1及答案
Java面向对象程序设计模拟试题1一、单项选择题(本大题共15小题,每小题1分,共15分)1. Java语言属于A. 机器语言B. 高级语言C. 自然语言D. 汇编语言2. Java源文件的扩展名是A. docB. exeC. javaD. class3. Java语言的字符使用的字符编码是A. ASCIIB. UnicodeC. UTF-8D. GB23124. Java中int类型所占字节数是A. 1B. 2C. 4D. 85. 给定下面代码段,程序运行结果是public class Foo{public static void main(String[] args){int i = 1;int j = i++;if((++i > j) && (i++ == j)){i += j;}System.out.println("i = "+i) ;}}A. i = 1B. i = 2C. i = 3D. i = 4 if内的判断也会对数值有影响6. 设有Circle类,执行下面语句后,哪个对象可以被垃圾回收器回收Circle a = new Circle();Circle b = new Circle();Circle c = new Circle();a = b;a = c;c = null;A.原来a所指的对象B.原来b所指的对象C.原来b和c所指的对象D.原来c所指的对象7. 下列程序段的运行结果为int index = 1;int foo[] = new int[3];int bar = foo[index];int baz = bar + index;A. baz 的值为0B. baz 的值为1C. baz 的值为2D. 抛出一个异常8. 执行下列语句后输出的结果是String s = "\"Hello,World!\"";System.out.println(s.length());A. 12B. 14C. 16D. 189. 下列代码执行后输出foo的结果为int index = 1;String[] test = new String[3];String foo = test[index];System.out.println(foo);A. ""B. nullC. 抛出一个异常D. 代码不能编译10. 下面程序运行结果为class Super{public int i = 0;public Super(String text){i = 1;}}public class Sub extends Super{public Sub(String text){i = 2;}public static void main(String[] args){Sub sub = new Sub("Hello");System.out.println(sub.i);}}A. 该程序有编译错误B. 编译成功输出0C. 编译成功输出1D. 编译成功输出211.下面代码在运行时会产生什么异常int a[] = {1,2,3,4,5};System.out.println(a[5]);A. ArrayIndexOutOfBoundsExceptionB. IndexOutOfBoundsExceptionC. ObjectClastExceptionD. NullPointerException12.有下列一段代码,执行后输出结果为。
《面向对象程序设计》模拟试卷1
《⾯向对象程序设计》模拟试卷1浙江警官职业学院2013—2014学年第⼀学期期末考试《⾯向对象程序设计》模拟试卷⼀、判断题。
(共10分,每题1分,对的打“√”,错的打“メ”)1、C#程序必须包含⼀个Main⽅法作为程序的⼊⼝点。
(√)2、String类型是引⽤类型。
(√)3、只有Get访问器的属性称为只写属性。
(メ)4、构造函数可以被重载。
(√)5、属性占⽤存储空间。
(メ)6、类中的静态构造函数不能带参数,不能具有可访问性修饰符。
(√)7、⼀个类可以有多个不同名的构造函数。
(メ)8、⼦类将继承⽗类所有的成员。
(√)9、变量在可以作为ref引⽤参数传递之前,可以不赋值。
(メ)10、⼀个类可以实现多个接⼝。
(√)⼆、选择题。
(共20分,每题1分)1、以下C#注释代码,不正确的是( D )。
A、//C#注释代码B、//C#注释代码1//C#注释代码2C、////C#注释代码D、/*C#注释代码*/2、下⾯属于合法的字符串常量的是( B )。
A、@XYZB、"XYZ"C、’XYZ’D、XYZ3、在窗体中,改变label标签的显⽰结果,需修改的属性是(A )。
A、TextB、NameC、TitleD、Index4、当没有定义访问修饰符时,类的成员的默认访问修饰符为( D )。
A、privateB、publicC、protectedD、internal5、执⾏下列语句将产⽣的结果是( B )。
int i=1;if ( i ) Console.WriteLine(true);else Console.WriteLine(false);A、输出1B、输出trueC、输出falseD、编译错误6、以下关于静态⽅法的说法,不正确的是(D )。
A、静态⽅法不对特定实例进⾏操作B、静态⽅法只能直接访问静态成员C、在静态⽅法中引⽤this会导致编译时错误D、静态⽅法通过类的实例来访问7、定义⼀个数组string[] role={“赵灵⼉”,“李逍遥”,“林⽉如”,“杨过”,“⼩龙⼥”},数据中的role[5]指的是( D )。
面向对象程序设计模拟练习题(含答案)
面向对象程序设计模拟练习题(含答案)一、单选题(共50题,每题1分,共50分)1、下列关于JDK和JRE的说法中,错误的是()A、JDK是java开发核心组件,是用来编译解释java程序的核心组件B、JDK包括Java编译器、Java文档生成工具、Java打包工具等C、JRE是个单独的软件,所以安装JDK后,还需要单独安装JRED、JRE是java运行环境,用来支持java程序的运行正确答案:C2、下列File类的构造方法格式,错误的是()A、File(File parent)B、File(String pathname)C、File(String parent,String child)D、File(URI url)正确答案:A答案解析:A选项,正确的应该是File(File parent, String child)3、下列关于静态变量的描述中,错误的是()A、静态变量指的是被static修饰的变量B、静态变量是随着类的加载而加载C、静态变量可以被所有的实例对象共享D、静态变量同成员变量一样,都需要通过实例对象来调用正确答案:D答案解析:静态变量是通过“类名.变量名”“方式调用的。
4、下列对于Runtime的描述中,正确的是()A、每一个Java应用程序运行时都产生一个Runtime类实例B、Runtime实例可以将应用程序和运行环境相结合C、Runtime类有构造函数D、Runtime实例需要被创建后才可以通过getRuntime()方法获取正确答案:A答案解析:Runtime类用于表示虚拟机运行时的状态,它用于封装JVM虚拟机进程。
每次使用java命令启动虚拟机都对应一个Runtime实例,并且只有一个实例,因此该类采用单例模式进行设计,可以通过getRuntime()方法获得一个Runtime实例。
5、下列关于LinkedList类的方法,不是从List接口中继承而来的是()A、toArray()B、pop()C、remove()D、isEmpty()正确答案:B答案解析:pop()方法表示移除并返回此列表的第一个元素,是LinkedList特有的方法。
面向对象程序设计模拟试题
计算机技术与软件水平考试面对对象程序设计试题(6)一、单项选择题( 在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
每小题2 分,共40 分)1.C++ 对C 语言作了许多改进,即从面对过程变成为面对对象的主要缘由是( )A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必需用原型D. 引进了类和对象的概念2. 下列符号不能组成标识符的是( )A. 连接符B. 下划线C. 大小写字母D. 数字字符3. 类型修饰符unsigned 不能修饰( )A. charB. intC. long intD. float4. 在int a=3,int *p=&a ;中,*p 的值是( )A. 变量a 的地址值B. 无意义C. 变量p 的地址值D.35. 下列关于指针的操作中,错误的是( )A. 两个同类型的指针可以进行比较运算B. 可以用一个空指针赋给某个指针C. 一个指针可以加上两个整数之差D. 两个同类型的指针可以相加6. 重载函数在调用时选择的依据中,错误的是( )A. 函数的参数B. 参数的类型C. 函数的名字D. 函数的类型7. 一个函数功能不太困难,但要求被频繁调用,选用( )A. 内联函数B. 重载函数C. 递归函数D. 嵌套函数8. 下列不是描述类的成员函数的是( )A. 构造函数B. 析构函数C. 友元函数D. 拷贝构造函数9. 构造函数不具备的特征的是( )A. 构造函数的函数名与类名相同B. 构造函数可以重载C. 构造函数可以设置默认参数D. 构造函数必需指定类型说明10. 通常,拷贝构造函数的参数是( )A. 某个对象名B. 某个对象的成员名C. 某个对象的引用名D. 某个对象的指针名11. 继承机制的作用是( )A. 信息隐藏B. 数据封装C. 定义新类D. 数据抽象12. 类的析构函数的作用是( )A. 一般成员函数B. 类的初始化C. 对象的初始化D. 删除对象创建的全部对象13. 类的析构函数是在( ) 调用的。
2017-2018年度华科面向对象程序设计试卷答案
学生类别______________考试日期______________ 院系_______________2018年1月19日一、填空(共15分,每空1分)1、编译时的多态性是通过函数重载、运算符重载、模板来实现。
2、面向对象的四个基本特性是抽象、多态、继承和封装。
3、假定AB为一个类,则执行“C a(2), &p=a, c[1], *b=c;”语句时调用该类构造函数的次数为2。
4、C++类成员访问属性public、private、protected三种类型。
5、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。
6、要实现动态联编,必须通过基类指针或引用来调用虚函数实现。
7、在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 私有___。
8、[]、::、+、= 等四种运算符中,不可重载的运算符是::,可采用友元函数重载的运算符是+。
9、成员函数中有纯虚函数的类不能用来实例化对象。
二、问答题(共35分,每小题5分)1.阐述为何在类的派生中要引入虚基类?答案:当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生二义性。
而且在派生类中会保留这个间接共同基类数据成员的多个同名成员。
为了消除访问的二义性,同时减少成员冗余,C++中引入虚基类来解决。
2.简述带虚基类和非虚基类的多继承派生类构造函数调用顺序。
答案:多继承基类构造函数初始化按虚基类优先,非虚基类,子对象,派生类自身构造函数顺序调用进行初始化,同类按出现先后顺序调用。
只执行最后的派生类调用虚基类的构造函数,忽略虚基类其他派生类调用虚基类构造函数。
具体顺序如下:(1)按继承虚基类的顺序调用虚基类的构造函数;(2)按继承非虚基类的顺序调用非虚基类的构造函数;(3)按声明成员对象的顺序调用其构造函数;(4)调用派生类自己的构造函数。
3.写出下面程序的运行结果4 外部对象g_glb_Obj[构造]5 外部静态对象g_sta_Obj[构造]6 main内动态分配对象m_all_Obj[构造]7 main内调用fun函数1 fun内: cal12 fun内静态对象fun_sta_Obj[构造]3 fun内自动对象fun_Obj[构造]3 fun内自动对象fun_Obj[析构]1 fun内: cal23 fun内自动对象fun_Obj[构造]3 fun内自动对象fun_Obj[析构]6 main内动态分配对象m_all_Obj[析构]2 fun内静态对象fun_sta_Obj[析构]5 外部静态对象g_sta_Obj[析构]4 外部对象g_glb_Obj[析构]4.写出下面程序的输出结果A::P1 a = 2A::P2 a = 2 , b = 1.9B::P1 a = 2A::P2 a = 2 , b = 1.95.写出下面程序的输出结果答案:3-调用Base1类构造函数4-调用Base2类构造函数6-调用Base4类构造函数5-调用Base3类构造函数1-调用OBJ1类构造函数2-调用OBJ2类构造函数3-调用Base1类构造函数3-调用Base1类构造函数4-调用Base2类构造函数7-调用派生类构造函数成功8-end#include <iostream>#include <string>using namespace std;class OBJ1{6.以下程序代码是否有错,如有请改正并写出运行结果答案:编译链接错误,模板类型参数,A <float>add(2.5,3.3);运行结果:x+y=5.8#include <iostream>using namespace std;template <typename T> class A{7.以下程序可动态分配二维数组并释放内存,且可实现二维指针和一维指针复用,试问程序能否正常运行,如有错找出原因并改正之。
面向对象程序设计考试模拟题(附参考答案)
面向对象程序设计考试模拟题(附参考答案)一、单选题(共10题,每题1分,共10分)1、下面关于javac命令作用的描述中,正确的是()。
A、可以执行java程序B、可以将编写好的Java文件编译成.class文件C、可以把文件压缩D、可以把数据打包正确答案:B答案解析:javac命令将java文件编译成java字节码文件。
2、下列关于构造方法的描述,错误的是()A、在构造方法中不能使用return语句返回一个值,但是可以单独使用return作为方法的结束B、一个类中只能定义一个空参数的构造方法C、构造方法的方法名前面没有返回值类型的声明D、一个类中可以定义多个构造方法正确答案:B3、以下关于成员属性与成员方法的描述中,错误的是()A、成员属性我们也叫成员变量,它就是描述对象的特征。
它可以定义在类中,也可以定义在方法中B、成员方法用于描述对象的行为C、在类中定义的变量,我们称为成员变量D、在类中定义的方法,我们称变成员方法正确答案:A答案解析:类中可以定义成员变量和成员方法,其中成员变量用于描述对象的特征,也被称作属性,成员方法用于描述对象的行为,可简称为方法。
定义在类中的变量被称为成员变量,定义在方法中的变量被称为局部变量。
4、FileWriter类的write(int c)方法的作用是()A、写出单个字符B、写入多个C、写入一个整形数据D、写入单个字符正确答案:D答案解析:write(int c)方法用于写入单个字符。
5、下列关于集合的描述中,哪一个是错误的()A、集合按照存储结构可以分为单列集合Collection和双列集合Map。
B、List集合的特点是元素有序、元素可重复。
C、Set集合的特点是元素无序并且不可重复。
D、集合存储的对象必须是基本数据类型。
正确答案:D答案解析:集合可以存储多种数据类型的数据,包括引用数据类型。
6、下列关键字中,哪个不能修饰接口中的成员变量?()A、publicB、staticC、finalD、private正确答案:D答案解析:接口中的成员变量其实是一个常量,用public static final 修饰,所以,用private修饰是错误的。
面向对象程序设计考试模拟题含参考答案
面向对象程序设计考试模拟题含参考答案一、单选题(共50题,每题1分,共50分)1、下列数据结构中,哪一个是ArrayList类的底层实现()A、数组结构B、链表结构C、哈希表结构D、红黑树结构正确答案:A答案解析:ArrayList的底层是数组实现的。
2、Java属于以下哪种语言()A、机器语言B、汇编语言C、高级语言D、以上都不对正确答案:C答案解析:Java是一门高级编程语言。
3、下面关于path和classpath的说法中,错误的是()A、path用来指定java虚拟机(JVM)所在的目录B、classpath用来指定我们自己所写的或要用到的类文件(.jar文件)所在的目录C、在dos命令行中,classpath和path环境变量的查看与配置的方式不相同D、只要设置了classpath这个环境变量系统就不会再在当前目录下查询某个类正确答案:C答案解析:classpath和path环境变量的查看与配置的方式完全相同,都是通过 set关键字实现的。
4、若double val = Math.ceil(-11.9);,则val的值是()A、11.9B、-11.0C、-11.5D、-12.0正确答案:B答案解析:ceil是天花板的意思,表示向上取值,永远是得到大于参数的最小整数。
5、下列集合中,不属于Collection接口的子类的是()A、ArrayListB、LinkedListC、TreeSetD、Properties正确答案:D答案解析:Properties集合属于Map集合的子类。
6、下列关于类与对象的说法中,错误的是()A、类是对某一类事物的抽象描述,而对象则是该类事物的个体。
B、对象是类的实例化。
C、类用于描述多个对象的共同特征,它是对象的模板。
D、类与对象没有什么实际关系。
正确答案:D答案解析:对象是通过类来创建的。
7、下列关于List接口的描述中,错误的是()A、List接口继承自Collection接口,是单列集合。
面向对象程序设计原理考核试卷
B.聚合表示部分和整体的生命周期可以不同
C.组合是一种强关系
D.聚合是一种弱关系
14.以下哪些操作符可以用于对象的比较?()
A. ==
B. !=
C. equals()
D. compareTo()
15.以下哪些说法关于静态变量和静态方法是正确的?()
A.静态变量属于类,所有实例共享
1.以下哪些是面向对象程序设计的基本原则?()
A.抽象
B.封装
C.继承
D.多态
2.在面向对象程序设计中,类和对象的关系是()
A.类是对象的抽象
B.对象是类的实例
C.类和对象是同一概念
D.类和对象没有关系
3.以下哪些是类的成员?()
A.属性
B.方法
C.构造函数
D.运算符
4.关于继承,以下哪些说法是正确的?()
11.关于抽象类,以下哪些说法是正确的?()
A.抽象类不能被实例化
B.抽象类可以包含抽象方法
C.抽象类可以包含具体实现的方法
D.抽象类只能被继承
12.以下哪些是Java中的访问控制符?()
A. public
B. private
C. protected
D. default
13.以下哪些说法关于组合和聚合是正确的?()
D. super
8.以下哪个方法可以用来隐藏父类的同名方法?()
A. overload
B. override
C. inherit
D. hide
9.以下哪个关键字用于调用父类的构造方法?()
A. this
B. super
C. new
D. extends
华中科技大学c++程序的设计考试题
33.以下程序的执行结果为。#inelude
using namespace std;
virtualvoidwho()
{cout«〃baseclass};〃<
classderive1:publicbase {
public: voidwho()
{cout«〃derivelclass};〃<
正确答案:【或2】
39.若有定义 “structAA {int a; char b; double c;}x;则”x,占用空间大小
为字节。
正确答案:【3】分值:【】
40.若y是x的引用,则&y和&x的值即为变量的地
址。
正确答案:相等或X】分值:【】
41.执行作将释放由p所指向的动态分配的数据空间。
正确答案:delete p】分值:【l】
1.C++系统预定了4个用于标准数据流的对象,下;正确答案:D】分值:
1】;2.设有说明:charw;intx;floaty;正确答案:D】分值:【0】;3.下列对析
构函数的描述中,正确的是(____)C.析构函数的定义只能在类体内D.析构函数可
以有;正确答案:A】分值:IB】;4.下列定义数组的语句中正确
27.在类定义的外部,可以被访问的成员有A.所有类成员
B.private或protected的类成员C.public的类成员
D.public或private的类成员
正确答案:C1
28.若class B中定义了一个class A的类成员A a,关于类成员的正确叙 述是(____)A.在类B的成员函数中可以访问A类的私有数据成员B.在类B的 成员函数中可以访问A类的保护数据成员
2016-2017年度面向对象程序设计试卷
华中科技大学研究生课程考试试卷□√公共课□√开卷面向对象程序设计课程名称:课程类别考核形式□专业课□闭卷学生类别______________考试日期______________ 院系_______________2017 年1 月9 日学号__________________姓名__________________任课教师___________________杨卫东、左峥嵘一、填空(共15 分,每空 1 分)1、编译时的多态性通过__重载__函数实现。
2、面向对象的四个基本特性是抽象、多态、继承和封装。
3、假定AB为一个类,则执行“AB a(10), *b=&a, &p=a; ”语句时调用该类构造函数的次数为 2 。
4、C++类成员访问属性public 、private 、protected 三种类型。
5、非成员函数应声明为类的__友元___函数才能访问这个类的private 成员。
6、。
要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。
7、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为不可访问。
8、+、=、[] 、->等四种运算符中,可采用友元函数重载的运算符是+ 。
9、抽象类是指具有纯虚函数的类,它只能作为基类来使用。
1/ 8二、问答题(共30 分,每小题 6 分)1.简述运算符重载的实现方式有哪几种?给出对应的声明语法形式。
答案:(1)类外定义的运算符重载函数格式为:friend < 返回类型> operator <op>(< 类型> 参数1,<类型> 参数2){ < 函数体> }(2)成员运算符重载函数<返回类型> <类名>::operator <op> (< 类型> 参数){ < 函数体> }2.什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?答案:多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。
面向对象程序设计与开发模拟试卷1
一、选择题(每空1分,共20分)1.在C++中使用流进行输入输出,其中用于屏幕输出的对象是()。
A.cerr B.cin C.cout D.cfile2.对使用关键字new所开辟的动态存储空间,释放时必须使用()。
A.free B.create C.delete D.realse3.如没有使用private关键字定义类的数据成员,则默认为()。
A.private B.public C.protected D.friend4.下面概念中,不属于面向对象方法的是()。
A.对象 B.继承 C.类 D.过程调用5.已知:int m=10;在下列定义引用的语句中,正确的是()。
A.int &x=m B.int y=&m C.int &z D.int &t=&m6.使用值传递方式将实参传给形参,下列说法正确的是()。
A.形参是实参的备份 B.实参是形参的备份C.形参和实参是同一对象 D.形参和实参无联系7. int Func(int,int);不可与下列哪个函数构成重载()。
A.int Func(int,int,int); B.double Func(int,int);C.double Func(double,double); D.double Func(int,double);8.类的私有成员可在何处访问()。
A.通过子类的对象访问 B.本类及子类的成员函数中C.通过该类对象访问 D.本类的成员函数中9.this指针存在的目的是()。
A.保证基类公有成员在子类中可以被访问B.保证每个对象拥有自己的数据成员,但共享处理这些数据成员的代码C.保证基类保护成员在子类中可以被访问D.保证基类私有成员在子类中可以被访问10.下列关于类的权限的描述错误的是()。
A.类本身的成员函数只能访问自身的私有成员B.类的对象只能访问该类的公有成员C.普通函数不能直接访问类的公有成员,必须通过对象访问D.一个类可以将另一个类的对象作为成员11.设类A将其它类对象作为成员,则建立A类对象时,下列描述正确的是()。
2017-2018年度华科面向对象程序设计试卷
华中科技大学研究生课程考试试卷课程名称: 课程类别考核形式学生类别______________考试日期______________院系_______________ 学号__________________姓名__________________任课教师___________________一、填空(共15分,每空1分)1、编译时的多态性是通过________________来实现。
2、面向对象的四个基本特性是________、________、________和________。
3、假定AB 为一个类,则执行“C a(2), &p=a, c[1], *b=c;”语句时调用该类构造函数的次数为________。
4、C++类成员访问属性________、________、________三种类型。
5、非成员函数应声明为类的________函数才能访问这个类的private 成员。
6、要实现动态联编,必须通过基类指针或________来调用虚函数实现。
7、在用class 定义一个类时,数据成员和成员函数的默认访问权限是________。
8、[]、::、+、= 四种运算符中,不可重载的运算符是________,可采用友元函数重载的运算符是________。
9、成员函数中有________的类不能用来实例化对象。
二、问答题(共35分,每小题5分)1.阐述为何在类的派生中要引入虚基类?2.简述带虚基类和非虚基类的多继承派生类构造函数调用顺序。
3.写出下面程序的运行结果#include <iostream>#include <string.h>面向对象程序设计 2018年1月19日 杨卫东、左峥嵘using namespace std;class A {char string[80];public :void show();A(char * st);~A( );};A::A(char * st){strcpy(string, st);cout << string << "[构造]" << endl;}A::~A( ){ cout << string << "[析构]" << endl; }void A::show(){cout << string << endl;}void fun(char * st){cout << "1 fun内: " << st << endl;static A fun_sta_Obj("2 fun内静态对象fun_sta_Obj");A fun_Obj("3 fun内自动对象fun_Obj");}A g_glb_Obj("4 外部对象g_glb_Obj");static A g_sta_Obj("5 外部静态对象g_sta_Obj");void main( ){A *ptrA = new A("6 main内动态分配对象m_all_Obj"); if(ptrA==NULL) return;cout<<"7 main内调用fun函数"<< endl;fun( "cal1");fun( "cal2");delete ptrA;}4.写出下面程序的输出结果#include <iostream>using namespace std;class A{public:virtual void Print(int a){ cout << "A::P1 " << "a = " << a << endl; }virtual void Print(float a, double b=2.8){ cout << "A::P2 " << "a = " << a << " , b = " << b << endl; } };class B : public A {public:virtual void Print(int a){ cout << "B::P1 " << "a = " << a << endl; }virtual void Print(float a, float b){ cout << "B::P2 " << "a = " << a << " , b = " << b << endl; } };void Show(A * p){p -> Print( 2 );p -> Print( 2, 1.9 );}void main( ){A * pa = new A;B * pb = new B;Show( pa );Show( pb );delete pa;delete pb;}5.写出下面程序的输出结果#include <iostream>#include <string>using namespace std;class OBJ1{public:OBJ1(){ cout<< "1-OBJ1类构造"<<endl;}};class OBJ2{public:OBJ2(){ cout<< "2-OBJ2类构造"<<endl;}};class Base1{public:Base1(){ cout<< "3-Base1类构造"<<endl;}};class Base2 : virtual public Base1{public:Base2(){ cout<< "4-Base2类构造"<<endl;}};class Base3{public:Base3(){ cout<< "5-Base3类构造"<<endl;}};class Base4{public:Base4(){ cout<< "6-Base4类构造"<<endl;}};class DerivedA: public Base1,virtual public Base2, public Base3,virtual public Base4{public:DerivedA():Base4(),Base3(),Base2(),Base1(),obj2(),obj1(){cout<<"7-派生类构造成功"<<endl;}protected:OBJ1 obj1;OBJ2 obj2;Base1 base1;Base2 base2;};int main(int argc, char* argv[]){DerivedA aa;cout<<"8-end" << endl;return 0;}6.以下程序代码是否有错,如有请改正并写出运行结果#include <iostream>using namespace std;template <typename T> class A{private:T x,y,s;public:A(T a,T b) {x=a,y=b;s=x+y;}void show() {cout<<"x+y="<<s<<endl; }};void main(){A add(2.5,3.3);add.show();}7.以下程序可动态分配二维数组并释放内存,能实现二维指针和一维指针复用,试问程序有几处错,找出并说明原因改正之。
C++模拟题华中科技大学
C++模拟试卷一、单选题(每题2分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。
1. 下面选项中不属于面向对象程序设计特征的是(C) 。
A)继承性B)多态性C)相似性D)封装性2. 有如下程序段:int i=1;while(1){i++;if (i==10) break;if(i%2==0) cout<<’*’;}执行这个程序段输出字符*的个数是(C)A. 10B. 3C. 4D.53. 假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为(A)。
A)0 B) 4 C)8 D)64. 下列有关数组的叙述中,正确的是( B )A)C++中数组的存储方式为列优先存储B)数组名可以作为实参赋值给指针类型的形参C)数组下标索引从1开始,至数组长度n结束D)数组指针的语法形式为:类型名*数组名[下标表达式];5. 若有下面的函数调用:fun(a+b, 3, max(n-1, b));其中实参的个数是(A)A)3 B)4 C)5 D)66. 以下哪一关键字可用于重载函数的区分( C )A)extern B)static C)const D)virtual7. 下面程序的输出结果是( B )#include <iostream>using namespace std;int i = 0;int fun(int n){static int a = 2;a++;return a+n;}void main(){int k = 5;{int i = 2;k += fun(i);}k += fun(i);cout << k;}A)13 B)14 C)15 D)168. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’9. 下面的程序段的运行结果为( D )char str[] = "job", *p = str;cout << *(p+2) << endl;A)98 B)无输出结果C)字符’b’的地址D)字符’b’10. 以下程序的输出结果是:(D )#include <iostream>using namespace std;int fun(char *s){ char *p=s;while (*p!='\0') p++;return (p-s);}void main(){cout<<fun("abc")<<endl;}A.0 B. 1 C. 2 D. 311. 实现运行时多态的机制是(A)A)虚函数B)重载函数C)静态函数D)模版函数12. 假定AA为一个类,a为该类私有的数据成员,GetV alue( )为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为(X )。
【免费下载】华科面向对象期末试卷
2. (C++) 对于类定义 struct A { virtual void f( ) {} = 0; void g(); }; struct B { void f() const; virtual void g(); };
protected: int e;
题号 一 二 三 四 五 六 总分 核对人 题分 20 10 20 20 15 15 100 得分
得分 评卷人 一、单项选择题(每题 2 分,共 20 分)
1. (C++) 假设 class A 的定义如下: class A { private: int i; public: A(int x= 0) { i = x ;} };
6. (C++) 关于运算符( )的重载,下面说法正确的是________ A. 只能重载为单目运算符,不能重载为多目运算符 B. 只能重载为多目运算符,不能重载为单目运算符 C. 可以被重载为单目和多目运算符 D. 可以通过类的普通成员函数和全局函数重载
第 2 页 共 10 页
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
19.对于 main,对象 b 的私有成员为___________________________。 20.对于 main,对象 b 的保护成员为___________________________。 21.对于 main,对象 c 的保护成员为___________________________。 22.对于 main,对象 c 的公有成员为___________________________。 23.对于 main,对象 d 的保护成员为___________________________。 24.对于 main,对象 d 的公有成员为___________________________。 25.main 应使用语句 x=__________取对象 d 的基类 C 的成员 c 的值。 四.名词解释(每小题 3 分,共 15 分) 26.标识符: 27.重载: 28.异常: 29.类型强制: 30.抽象类: 五.判断改错题(阅读以下程序并判断各题是否正确,对正确的就在其题号前打√;错 误的在其题号前打χ,并在题干后的括号内更正。每小题 3 分,共 15 分) #include <iostream.h> struct A{A( ){ cout<<'A';}}; struct B{B( ){ cout<<'B';}}; struct C: A{C( ){ cout<<'C';}}; struct D: virtual B, C{D( ){ cout<<'D';}}; struct E: A { C c; E( ): c( ){ cout<<'E';} }; struct F: virtual B, C, D, E{ F( ){ cout<<'F';} }; void main( ){ /*……*/ } ( ) 31.如 main 定义 A ( ) 32.如 main 定义 C ( ) 33.如 main 定义 D ( ) 34.如 main 定义 E ( ) 35.如 main 定义 F
return x; }
面向对象程序设计模拟试卷二
一.单项选择题 (从下列各题四个备选答案选出一个正确答案,并将其代号填在题干 前的括号内。答案选错或未作选择者,该题不得分。每小题 1 分,共 10 分) ( )1.以下有关析构函数的叙述,选择正确的填入括号内。 A. 可以进行重载可以定义为虚函数 B. 不能进行重载可以定义为虚函数 C. 可以进行重载不能定义为虚函数 D. 不能进行重载不能定义为虚函数 ( )2.以下有关函数缺省参数的出现位置,选择正确的叙述填入括号内。 A. 必须全部出现在函数参数表的左部 B. 必须全部出现在函数参数表的右部 C. 必须全部出现在函数参数表的中间 D. 都不对 ( )3.关于两个同名函数重载的叙述,选择最为正确的填入括号内。 A. 两个函数的参数个数不同 B. 两个函数对应的参数类型不同 C. 两个函数的参数个数不同或对应的参数类型不同 D. 都不对 ( )4.关于 inline 保留字的用途,选择正确的叙述填入括号内。 A. 只能用于定义成员函数 B. 只能用于定义非成员函数 C. 可以定义成员函数及非成员函数 D. 都不对 ( )5.关于类的构造函数的定义位置,将最为正确的叙述填入括号内。 A. 只能在 private 下定义 B. 只能在 protected 下定义 C. 只能在 public 下定义 D. 定义位置没有限制 ( )6.如下修饰类体中函数的返回类型,将正确的用法填入括号内。 A. 同时使用 static 和 friend B. 同时使用 static 和 virtual C. 同时使用 friend 和 virtual D. 不同时使用上述三个保留字中的任意两个 ( )7.在如下关于继承的叙述中,选择正确的填入括号内。 A. 私有继承用于实现类之间的 ISA 关系 B. 保护继承用于实现类之间的 ISA 关系 C. 公有继承用于实现类之间的 ISA 关系 D. 都不对 ( )8.对于用 union 定义的类 A,选择正确的叙述填入括号内。 A. 类 A 可以作为某个类的基类 B. 类 A 可以作为某个类的派生类 C. 类 A 既不能作基类又不能作派生类
struct F: virtual B, C, D, E{ F( ){ cout<<'F';} }; void main( ){ A a; cout<<'\n'; B b; cout<<'\n'; C c; cout<<'\n'; D d; cout<<'\n'; E e; cout<<'\n'; F f; cout<<'\n'; } 四. 指出以下程序的语法错误及其原因(15) 。 class A{ static int a=0; protected: int b; public: int c; A(int); operator int( ); } a(1, 2); class B: A{ B(int); virtual int d; int e; public: A::b; friend int operator =(B); static B(int, int); } b=5; class C: B{ public: int operator++(double); }; int main( ){ int *A::*p, i; i=a.a; i=A(4); i=b.c; p=&A::c; i=b; return ; } 五. 指出 main 变量 i 在每条赋值语句执行后的值(15) 。
二.多项选择题(从下列各题四个备选答案选出二至四个正确答案,并将其代号填在题 干前的括号内。答案选错或未选全者,该题不得分。每小题 2 分,共 10 分) ( )11.将符号为分隔符的编号填入括号内。 ( ( ( ( A. m B. + C. { D. = )12.将用于定义类的保留字的编号填入括号内。 A. class B. struct C. int D. union )13.将用于释放 p=new int[8]的内存的编号填入括号内。 A. free (p) B. delete p C. delete []p D. sizeof p )14.将派生类成员函数可访问的基类成员编号填入括号内。 A. private B. protected C. public D. 所有成员 )15.将不能重载的运算符函数的编号填入括号内。 A. ? : B. :: C. % D. <<
int x=2, y=x+30; struct A{ static int x; int y; public: operator int( ){ return x-y; } A operator ++(int){ return A(x++, y++); } A(int x=::x+2, int y=::y+3){ A::x=x; A::y=y; } int &h(int &x); }; int &A::h(int &x) { for(int y=1; y!=1|| x<201; x+=11, y++) if(x>200) { x-=21; y-=2;} return x-=10; } int A::x=23; void main( ){ A a(54, 3), b(65), c; int i, &z=i, A::*p=&A::y; z=b.x; i=a.x; i=c.*p; i=a++; i=::x+c.y; i=a+b; b.h(i)=7; } 六. 为了没有误差地表示分数,定义类 FRACTION 来表示分数,请编程实现分数类中的除 cmd 外的所有函数(15)。 class FRACTION{ //对于 7 ,numerator 存分子 6,denominator 存分母 7 int numerator, denominator; static int cmd(int x, int y); public: int operator>(const FRACTION&)const; FRACTION(int num, int den=1); FRACTION operator*( )const; FRACTION operator+(const FRACTION&)const; //大于比较,例 7 > 3 //num、den 各为分子和分母 //分数约简,* 36 = 6 //加法, 7 + 3 = 21
6 2 12 4 6 2 32 30 5 6 2 6
//求整数 x,y 的最大公约数
FRACTION operator*(const FRACTION&)const;//乘法, 7 * 3 = 21 = 7 }; int FRACTION::cmd(int x, int y){ int r; if(x<y){ r=x; x=y; y=r; } while(y!=0){ y=x%(r=y); x=r; }
(
(
D. 类 A 既可以作基类又可以作派生类 )9.有关在类中声明友元函数的叙述,将正确的答案填入括号内。 A. 只能在 private 下声明 B. 只能在 protected 下声明 C. 只能在 public 下声明 D. 声明位置没有限制 )10.在构造派生类 A 的对象时,选择正确的叙述填入括号内。 A. 最先构造派生类 A 的基类 B. 最先构造派生类 A 的虚基类 C. 最先构造派生类 A 的数据成员对象 D. 都不对
三. 指出 main 中每行的输出结果(20) 。 #include <iostream.h> struct A{A( ){ cout<<'A';}}; struct B{B( ){ cout<<'B';}}; struct C: A{C( ){ cout<<'C';}}; struct D: virtual B, C{D( ){ cout<<'D';}}; struct E: A{ C c; E( ): c( ){ cout<<'E';} };