《面向对象程序设计》模拟试卷
面向对象程序设计模拟试题-1
C、对随机文件可以根据记录号进行读写
D、可用Input函数和Print函数进行随机文件的读写
10.在下列的( )事件中可以获取用户按下的键的ASCII码
A、KeyPressB、KeyUpC、KeyDownD、MouseUp
11.要使得文件列表框file1中只显示文件后缀名为bmp和jpg的图片文件,以下哪个语句是对的:()
4.水平滚动条HScroll1的LargeChange属性值为100,表示(C)为100
A、该滚动条值的最大值
B、拖动滚动框时滚动条值的变化量
C、单击滚动箭头和滚动框之间某位置时的滚动条值的变化量
D、单击滚动箭头时的滚动条值的变化量
5.与Microsoft SQL Server数据库连接,一般应采用中的()连接对象
14.要使窗体运行时,显示在屏幕的中央,应设置窗体的(C)属性
A、WindowState
B、StartPosition
C、CenterScreen
D、CenterParent
15.当一个窗体在可见状态下,由非活动窗体变成活动窗体时,产生的事件是:()
A、Load事件
B、Resize事件
C、Initialize事件
说明:此题中所需的数据库文件Henry Books.mdb在上机考试文件中,请找到此文件,用Access打开,找到Branch表,了解表结构设计。
二、单项选择题(在每小题的四个备选答案中选出一个正确答案,并将其号码填在题后的括号内。每小题2分,共30分)
1.下述的说法中,哪种是的程序设计方法:(D)
4.(共15分)数据库操作(在窗体Form3中完成,界面已设计好)
面向对象程序设计模拟题
C. 多态性通常使用虚函数或重载技术来实现
D. 为实现动态多态,基类必须定义为含有纯虚函数的抽象类
下面有关一个类的友元函数的叙述中,正确的是。
A. 允许在类外访问类中除私有成员以外的任何成员
B. 允许在类外访问类中的任何成员
C. 友元函数也是该类的成员函数
对于C++的运算符,不正确的叙述是。
A.C++的所有运算符中,逗号运算符的优先级最低
B.C++的所有运算符中,括号类运算符的优先级最高
C.除逗号运算符外,赋值类运算符优先级较其他运算符优先级低
D.单目运算符的优先级比双目运算符的优先级低
设有说明语句:int d,e,g,f,j,k;以下选项中,存在语法错误的是。
A.d=9+e==d+2; B.d=e+=2;
C.f=g+f=j*k++; D.(++d)++;
以下选项中,存在语法错误的是。
A. float x,&j=x;B.int c,&d=c,&e=d;
C.char b,&k=b;D.int f,&g;g=f;
设有说明“int a = 3, b=5, m;”,则执行表达式“m = a <= 3 && a + b < 8”后,m的值为。
C.析构函数的作用是在对象被撤销时收回先前分配的内存空间
D.一个类只有一个析构函数
一个基类以私有方式派生时,其基类中的公有成员和保护成员在派生类中。
A.均成为私有的成员B.均成为公有的成员
《面向对象程序设计》模拟试题及答案
《面向对象程序设计》模拟试题及答案一、单项选择题(每小题2分,共20分)1. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符2. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择()。
A. 内联函数B.重载函数C.递归函数D.函数模板3. 将两个字符串连接起来组成一个字符串时,选用()函数。
A. strlen()B. strcap()C. strcat()D. strcmp()4. 用new运算符创建一维整型数组的正确语句是__________。
A. int *p=new a[10];B.int *p=new float[10];C. int *p=new int[10];D.int *p=new int[5]={1,2,3,4,5}5. 假定有定义“int b[10]; int *pb;”,则不正确的赋值语句为()。
A. pb=b;B. pb=&b[0];C. pb=new int;D. pb=b[5];6. 假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为()。
A. x(a)B. x[a]C. x->aD. x.a7. 假定AB为一个类,则执行“AB x(a,5);”语句时将自动调用该类的( )。
A. 带参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数8. 对于任一个类,用户所能定义的析构函数的个数至多为( )。
A. 0B. 1C. 2D. 任意个9. 对类中引用成员的初始化是通过构造函数中给出的( )实现的。
A. 函数体B. 参数表C. 初始化表D. 初始化表或函数体10. 如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。
A. a.operator==(b)B. b.operator==(a)C. operator==(a,b)D. operator==(b,a)二、填空题(每小题2分,共20分)1. 常数-4.205和6.7E-9分别具有__________和__________位有效数字。
面向对象程序设计样卷
面向对象程序设计样卷一、选择题( 本大题共10小题, 每题2分, 共20分)4.在下列定义的引用中, ( B )是错误的。
A. int i;B. int i;int &j = i; float &j=i;C. float i;D. char d;float &j = i; char &e = d;5. 假定BB为一个类,则执行BB y;语句时将自动调用该类的( B )A. 有参构造函数B. 无参构造函数C. 拷贝构造函数D. 赋值重载函数7.下列对派生类的描述中, ( C )是错误的。
A. 一个派生类能够作为另一个派生类的基类B.派生类至少应有一个基类C. 基类中成员访问权限继承到派生类中都保持不变D.派生类成员除了自己定义的成员外, 还包含了它的基类成员10.控制输出格式的控制符中, ( D )是设置输出宽度的。
A.wsB.endsC. setfill()D.setw()二、填空题( 本大题共10小题, 每题2分, 共20分)1.以/*开始, 以*/结束, 在/*和*/之间的部分即为注释。
2.重载函数在参数类型或参数个数上不同, 但函数名和类名_相同。
3. 假如一个类的名称为MyClass, 使用这个类的一个对象初始化该类的另一个对象时, 能够调用__拷贝______构造函数来完成此功能。
4.当删除对象时, 程序自动调用析构函数。
5. 对于每一个类的非静态成员函数, 都有一个隐含的_this_______指针。
8. 抽象类是指类里有一个函数, 是纯嘘函数。
三、改错题( 下面程序或程序段中有一处错误, 请用注释标明错误所在行的出错原因。
本大题共5小题, 每题2分, 共10分) 1. #include<iostream>using namespace std;int main(){ cout<<"This is a program."<<endl;return 0;}2. #include<iostream>using namespace std;int main(){x=3;int y=x*x;cout<<"y="<<y<<"\n";return 0;}3. #include<iostream>using namespace std;class Aa{public:Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; } ~Aa(){ cout<<"Destructor "<<a<<endl; }void print( ){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}4.class A{int a,b;public:A(int aa,int bb=78){a=aa;b=bb;} };int main(){A x(2), y(4,9);return 0;}5. #include<iostream>using namespace std;class Test{public:static int x;};int Test :: x=20;int main(){cout<<Test::x;return 0;}四、程序分析题( 分析程序, 写出运行结果。
面向对象程序设计-模拟测试
《面向对象程序设计》课程模拟测试一、选择题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++语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。
面向对象程序设计模拟试卷
面向对象程序设计模拟试卷一一. 单选题(15)。
1. 关于构造的叙述_____正确:A. 最先构造虚基类B. 最先构造基类C. 最先构造派生类的对象成员D. 都不对2. 关于静态数据成员的叙述_____正确:A. 公有的可在类体外初始化B. 私有的不能在类体外初始化C. 私有和保护的不能在类体外初始化D. 都能够且必须在体外初始化3. 若派生类函数不是基类的友元, 关于该函数访问基类成员_____正确:A. 公有的可被派生类函数访问B. 都能够被派生类函数访问C. 公有和保护的可被派生类函数访问D. 都不对4. 关于函数的所有缺省参数的叙述_____正确:A. 只能出现在参数表的最左边B. 只能出现在参数表的最右边C. 必须用非缺省的参数隔开D. 都不对5. 使用friend、 virtual、 static说明函数的叙述_____正确:A. 必须同时使用三个B. 只能同时用其中两个C.只能独立单个地使用 D. 都不对二. 指出各类的成员及其存取属性(20) 。
class A{int a; protected:int b; public:int c;};class B: protected A{int d; protected:int e; public:A::c;int f;}; class C: A{int g; protected:int h; public:int i; };class D: B, C{int j; protected:B::b;int k; private:int n; };三. 指出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';}};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) 。
计09面向对象程序设计 考试试卷(B卷)参考解答
{ cout<<"Num="<<Num<<" Name="<<Name.c_str()<<" Age=" <<Age<<"
Sex="<<Sex<<endl;
}
int main()
{ doctor s1,s2(1002,"周博士",28,'0'),*p;
s1.display();
s2.display(); p = new doctor(1003,"马博士",29,'0');
doctor(int Num0=1001, string Name0="彭博士", int Age0=30,char Sex0='1')
{ Num = Num0; Name = Name0; Age = Age0; Sex = Sex0;
}
void display();
};
void doctor::display()
错误
2 3 4 5 6 7 8 9 10
的打
×
(每
小题
————————————————————————密封线——————————————————————
学号
姓名
系(院) 计算机与通信学院 课程名称 面向对象程序设计 班级
湖南工业大学考试试卷纸
三、填空题(每空 2 分, 共 10 分)
第 1 页 共4 页
(4) new Number(5)
void print(); };
(5) p->GetNum()
面向对象程序设计模拟练习题(含答案)
面向对象程序设计模拟练习题(含答案)一、单选题(共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. 类的析构函数是在( ) 调用的。
面向对象程序设计考试模拟题(附参考答案)
面向对象程序设计考试模拟题(附参考答案)一、单选题(共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修饰是错误的。
面向对象程序设计试卷
面向对象程序设计试卷一、选择题(每题2分,共20分)1. 面向对象程序设计中的三大特征是:A. 封装、继承、多态B. 抽象、封装、继承C. 封装、继承、封装D. 继承、多态、封装2. 下列哪个不是面向对象程序设计的优点?A. 代码重用B. 易于维护C. 程序复杂度低D. 可扩展性好3. 在Java中,哪个关键字用于定义类?A. classB. structC. interfaceD. type4. 以下哪个是Java中不允许的类名?A. MyClassB. 2MyClassC. MyClass2D. MyClass_5. 在面向对象程序设计中,以下哪个概念不是用于实现封装?A. 私有成员B. 公有方法C. 访问控制D. 继承6. 下列哪个不是Java的访问控制修饰符?A. publicB. privateC. protectedD. global7. 以下哪个是Java中不允许的方法名?A. myMethodB. _myMethodC. my_methodD. myMethod_8. 在Java中,哪个关键字用于实现继承?A. extendsB. inheritC. deriveD. base9. 以下哪个不是Java的多态性实现方式?A. 接口B. 抽象类C. 重载D. 重写10. 在Java中,哪个关键字用于定义接口?A. interfaceB. protocolC. abstractD. type二、简答题(每题10分,共30分)1. 简述面向对象程序设计中封装的概念,并给出一个封装的简单示例。
2. 解释什么是多态性,并说明多态性在面向对象程序设计中的重要性。
3. 描述继承在面向对象程序设计中的作用,并举例说明如何使用继承来提高代码的复用性。
三、编程题(每题25分,共50分)1. 定义一个名为`Student`的类,包含以下属性:- 姓名(String类型)- 学号(String类型)- 年龄(int类型)并为该类实现以下方法:- 一个构造函数,用于初始化姓名、学号和年龄。
面向对象程序设计考试模拟题含参考答案
面向对象程序设计考试模拟题含参考答案一、单选题(共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接口,是单列集合。
面向对象程序设计-模拟题
《面向对象程序设计》模拟题一.单选题1.如果一个类中包含纯虚函数,则该类称为().A.抽象类B.虚基类C.派生类D.子类[答案]:A2.在类中将show声明为不带返回值的纯虚函数,则正确的写法是().A.virtual void show()=0;B.virtual show()=0;C.virtual void show();D.void show()=0 virtual;[答案]:A3.虚函数必须是类的().A.构造函数B.友元函数C.成员函数D.私有成员函数[答案]:C4.下列关于虚函数的描述中,()是正确的.A.虚函数一定不能有函数体B.含有虚函数的类,不能定义该类对象C.虚函数只能被重载,不能被继承D.基类中声明虚函数后,派生类中可以不重载该虚函数[答案]:D5.在C++中要实现动态联编,可以使用()调用虚函数.A.类名B.派生类指针C.对象名D.基类指针[答案]:D6.下列函数中,不能说明为虚函数的是().A.私有成员函数B.公有成员函数C.构造函数D.析构函数[答案]:C7.一个类中的某个函数被声明为virtual,则该函数在该类的所有派生类中().A.都是虚函数B.重载后才是虚函数C.被重新说明为virtual时才是虚函数D.不是虚函数[答案]:A8.类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p 是一个指向类A的指针,则p->func()将().A.调用类A中的函数func()B.调用类B中的函数func()C.根据p实际所指对象类型确定调用A或B类中的函数func()D.同时调用A类和B类中的函数func()[答案]:C9.下列关于虚函数的说明中,正确的是().A.从虚基类继承的函数都是虚函数B.虚函数不能是静态成员函数C.通过对象不能调用虚函数D.抽象类中的函数都是虚函数[答案]:B10.有一个重载运算符的函数参数表中,没有任何参数,则可以断定被重载的运算符函数是().A.单目友元函数B.单目成员函数C.双目友元函数D.双目成员函数[答案]:B11.下列关于运算符函数返回值类型的描述中,错误的是().A.可以是类类型B.可以是int类型C.可以是void类型D.可以是float类型[答案]:C12.友元运算符obj1>obj2被C++编译器解释为().A.operator>(obj1,obj2)B.>(obj1,obj2)C.obj1.operator>(obj2)D.obj2.operator>(obj1)[答案]:C13.在表达式x+y*z中,+作为成员函数重载的运算符,*作为友元函数重载的运算符,以下叙述中正确的是().A.operator+有2个参数,operator*有2个参数B.operator+有2个参数,operator*有1个参数C.operator+有1个参数,operator*有2个参数D.operator+有1个参数,operator*有1个参数[答案]:C14.重载赋值运算符时,应声明为()函数.A.友元B.虚C.成员D.多态[答案]:C15.在成员函数中进行双目运算符重载时,参数表中应有()个参数.A.0B.1C.2D.3[答案]:B16.双目运算符重载为友元函数时,参数表中应有()个参数.A.0B.1C.2D.抽象类中的函数都是虚函数[答案]:C17.若表达式a+b中的”+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.双目成员函数[答案]:A18.假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如”m1=m2=m3;”.重载操作符=的函数原型最好是().A.int operaotor=(constM);B.int operator=(constM&);C.Moperator=(constM&);D.可以是float类型19.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是().A.Value operator+(Value,Value);B.Value operator+(Value,int);C.Value &operator+(Value,Value);D.obj2.operator>(obj1)[答案]:A20.类模板允许我们创建一系列相关的().A.类B.变量C.数组D.operator+有1个参数,operator*有1个参数[答案]:A21.关于异常,以下叙述中正确的是().A.友元B.当异常被一个catch块处理后,执行流程进入下一个catch块C.当一个异常被抛出后,其后的第一个catch块执行D.多态22.以下关于函数模板叙述正确的是().A.函数模板也是一个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C.通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型[答案]:C23.有如下函数模板定义,则下列函数调用中错误的是().template<typnameT>Tfunc(T x,T y){returnx*x+y*y;}A.func(3,5);B.func(3,3.5)C.func<int>(3,5.5);D.func<double>(3,3.5);[答案]:B24.下列关于函数模板的描述中,错误的是().A.函数模板必须由程序员实例化为可执行的模板函数B.函数模板的实例化由编译器完成C.一个类定义中,只要有一个函数模板,则这个类是类模板D.类模板的成员函数都是函数模板25.下列模板声明中,正确的是().A.template<typenameT1,T2>B.template<classT1,T2>C.template<T1,T2>D.template<typenameT1,typenameT2>[答案]:D26.类模板的使用实际上是将类模板实例化为一个().A.函数B.对象C.类D.抽象类[答案]:C27.下列关于异常的叙述中,错误的是().A.编译错属于异常,可以抛出B.运行错属于异常C.抛出异常后,将跳过函数中的其它代码D.抛出的异常可以不被捕获[答案]:A28.在C++程序中使用的cin标识符是系统类库中定义的()类中的一个对象.A.istreamB.ostreamC.iostreamD.fstream[答案]:A29.要进行文件的输入输出,除了包含头文件iostream外,还需要包含头文件().A.ifstreamB.fstreamC.ostreamD.cstdio[答案]:B30.定义char*p=“abcd”,能输出p的值(字符串地址)的语句为().A.cout<<&p;B.cout<<p;C.cout<<(char*)p;D.cout<<const_cast<void*>(p);[答案]:D31.用于打开二进制文件的标志是().A.ios::binaryB.ios::inC.ios::outD.ios::trunc[答案]:A32.下列输出字符’B’的方法中,错误的是().A.cout.put(‘B’);B.chara=’B’;cout<<a;C.cout<<put(‘B’);D.cout<<’B’;[答案]:C33.使用setw()等操作函数设置数据输出格式时,应包含头文件().A.<iomanip>B.<iostream>C.<fstream>D.<ostream>[答案]:A34.可设置输出宽度的方法是().A.setfill()B.setw()C.setprecision()D.oct[答案]:B35.面向对象程序设计思想的主要特征不包括().A.继承性B.功能分解,逐步求精C.封装性和信息隐藏D.多态性[答案]:B36.下列能用作C++标识符的是().A._123B.forC.caseD.virtual[答案]:A37.以下工具中,()将C++源代码转换为目标文件.A.编译器B.链接器C.编辑器D.集成开发环境[答案]:A38.C++程序主函数名称是().A.MainB.mainC.MAIND.用户自定义函数[答案]:B39.main函数的返回值类型是().A.charB.doubleC.intD.无返回类型[答案]:C40.下列关于相同类型指针的运算中,()是非法的.A.两个指针进行相等或不等的运算B.将NULL赋值给某个指针变量C.一个指针加上一个整数D.两个指针相加[答案]:D41.下列关于动态联编的叙述中,()是错误的.A.动态联编是以虚函数为基础的B.动态联编在程序运行时确定所调用的函数代码块C.动态联编调用多态函数时,传递的是基类对象的指针或基类对象引用D.动态联编是在编译时确定调用某个函数的[答案]:D42.下列描述中,()是抽象类的特征.A.可以声明虚函数B.不能说明其对象C.可以定义友元函数D.可以进行构造函数重载[答案]:B43.在派生类中重载一个虚函数时,要求函数名.参数个数.参数类型和函数返回值().A.相同B.不同C.相容D.部分相同[答案]:A44.下列关于抽象类的说明中,不正确的是().A.含有纯虚函数的类称为抽象类B.抽象类不能被实例化C.抽象类的派生类一定可以实例化D.可以声明抽象类的指针[答案]:C45.下列运算符中,不能使用友元函数实现的是().A.+B.=C.*D.<<[答案]:B46.若表达式a==b中的”==”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator==(b)B.b.operator==(a)C.operator==(a,b)D.operator==(b,a)[答案]:C47.对于int *p[5],以下叙述正确的是().A.p是一个指向数组的指针,所指向的数组是5个int型元素B.p是一个指向某数组中下标为5的元素的指针,该元素为int型C.p[5]表示某个数组的第5个元素的值D.p是一个具有5个元素的指针数组,每个元素是一个int型指针[答案]:D48.若一个函数无返回值,则定义它时函数的类型应该为().A.voidB.任意C.intD.无[答案]:A49.在VC环境下,int型占用的字节数为().A.1B.2C.4D.8[答案]:C50.类型修饰符unsigned修饰()类型是错误的.A.charB.intC.longintD.float[答案]:D51.已有int m=10;则属于合法引用定义的是().A.int &rm=m;B.int &rm=10;C.int &rm;rm=m;D.int &rm=&m;[答案]:A52.在C++中,下列关于设置参数默认值的叙述中,正确的是().A.不允许设置参数的默认值B.设置参数默认值时,应先设置右边的再设置左边的C.设置参数默认值时,要么全部设置,要么一个也不设置D.设置参数默认值时,应先设置左边的再设置右边的[答案]:B53.下列对重载函数的描述中,()是错误的.A.重载函数中不允许使用缺省参数B.重载函数不能通过返回值类型区分不同的版本C.编译系统根据参数表确定函数版本D.类的析构函数不能重载[答案]:A54.下面动态分配内存的代码执行后,正确的描述是().Int *p;p=new int[5];A.动态开辟5个int元素,初值不确定B.动态开辟初值为5的一个int元素C.动态开辟5个int元素,初值为0D.释放p所指向内存的代码为:delete p;[答案]:A55.重载函数在调用时选择的依据中,()是错误的.A.参数个数B.参数类型C.函数名字D.函数的类型[答案]:D56.已知数组定义,int array[10];则最小数组下标为().A.0B.1C.9D.10[答案]:A57.字符串”ab”在内存中占用的字节数为().A.1B.2C.3D.4[答案]:C58.1条return语句,可以返回()值.A.1个B.多个C.1个或多个D.任意[答案]:A59.以下表达式中,结果为false的是().A.3.15B.-0.5C.0D.‘0’[答案]:C60.已知数组定义,int array[10];()是非法的数组元素访问.A.array[10]B.array[1]C.array[0]D.array[9][答案]:A61.下列的符号常量定义中,错误的定义是().A.int constM=10;B.const intM=20;C.const char ch;D.const bool mark=true;[答案]:C62.设array为一个数组,则表达式sizeof(array)/sizeof(array[0])的结果为().A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数[答案]:B63.用new运算符创建一个含10个元素的一维整型数组的正确语句是().A.int *p=new a[10];B.int *p=new float[10];C.int *p=new int[10];D.int *p=new int[10]={1,2,3,4,5}[答案]:C64.假定指针变量p定义为”int *p=new int[30];”,要释放p所指向的动态内存,应使用语句().A.delete p;B.delete *p;C.delete &p;D.delete[]p;[答案]:D65.采用重载函数的目的是().A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性[答案]:D66.关于封装,下列说法中不正确的是().A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的[答案]:D67.面向对象方法的多态性是指().A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一个对象可以是由多个其他对象组合而成的[答案]:C68.在类作用域中能够通过直接使用该类的()成员名进行访问.A.私有B.公有C.保护D.任何[答案]:D69.假定AA为一个类,a为该类公有的数据成员,px为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为().A.px(a)B.px[a]C.px->aD.px.a[答案]:C70.类的析构函数是一个对象被()时自动调用的.A.建立B.销毁C.赋值D.引用[答案]:B71.设px是指向一个类对象的指针变量,则执行”delete px;”语句时,将自动调用该类的().A.无参构造函数B.带参构造函数C.析构函数D.拷贝构造函数[答案]:C72.类的析构函数可以带有()个参数.A.0B.1C.2D.任意[答案]:A73.静态成员函数对类的数据成员访问().A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数据成员[答案]:B74.假定AB为一个类,则执行”AB a(2),b[3],*p[4];”语句时共调用该类构造函数的次数为().A.3B.4C.5D.9[答案]:B75.假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为().A.int AA::a()B.int AA:a()C.AA::a()D.AA::inta()[答案]:A76.类中具有数据操作功能的是().A.常数据成员B.函数成员C.数据成员D.静态成员[答案]:B77.关键字()定义允许在类外部使用的成员数据和成员函数.A.virtualB.classC.publicD.private[答案]:C78.下列对构造函数的描述中,()是错误的.A.函数名与类名完全相同B.构造函数允许重载C.返回类型应该为voidD.构造函数允许使用缺省参数[答案]:C79.已知print是某个类的常成员函数,返回值类型为void,正确的定义形式是().A.void const print();B.const void print();C.void print() const;D.void print(const);[答案]:C80.假定MyClass为一个类,执行”MyClassa[3],*p;”语句时会自动调用该类型构造函数()次.A.2B.3C.4D.5[答案]:B81.下列运算符中,必须使用友元函数实现的是().A.+B.++C.*D.<<[答案]:D82.如果表达式a++中的”++”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为().A.a.operator++()B.operator++(a)C.operator++(a,1)D.operator++(1,a)[答案]:C83.在C++程序中使用的cout标识符是系统类库中定义的()类中的一个对象.A.istreamB.ostreamC.iostreamD.fstream[答案]:B84.假定AB为一个类,则执行”AB x;”语句时将自动调用该类的().A.带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载运算符[答案]:B85.类的构造函数可以带有()个参数.A.0B.1C.2D.任意[答案]:D86.对类对象成员的初始化是通过构造函数中给出的()实现的.A.函数体B.初始化列表C.参数表D.初始化列表或函数体[答案]:B87.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为().A.AB(){a=0;}B.AB(int aa=0):a(aa){}C.AB(int aa):a(aa){}D.AB(){}[答案]:D88.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为().A.abcB.*thisC.thisD.this&[答案]:C89.下列关于析构函数的描述中,()是正确的.A.一个类中可以重载多个版本析构函数B.析构函数名与类名完全相同C.析构函数可以有1个或多个参数D.析构函数不能指定返回值类型[答案]:D90.假定AB为一个类,x是AB类的一个对象,则执行”AB y=x;”语句时将自动调用该类的().A.复制构造函数B.析构函数C.缺省构造函数D.赋值运算符函数[答案]:A91.若有类Test,该类的复制构造函数声明为().A.Test();B.Test (constCTest&);C.void Test(constCTest&t);D.Test(constCTest*t);[答案]:B92.以下选项中,()不是类的成员函数.A.构造函数B.析构函数C.友元函数D.复制构造函数[答案]:C93.构造函数在()时被调用.A.程序编译B.程序装入内存C.创建类D.创建对象[答案]:D94.用户能够为类定义()个析构函数.A.1B.0C.2D.多个[答案]:A95.下列函数原型中,可以作为类AA构造函数的是().A.void AA(int);B.int AA();C.AA(int)const;D.AA(int);[答案]:D96.友元的作用是().A.提高程序的运行效率B.加强类的封装性C.实现数据的隐藏D.增加成员函数的种类[答案]:A97.被非静态成员函数访问的类的数据成员().A.可以是非静态数据成员或静态数据成员B.不可能是类的静态数据成员C.只能是类的非静态数据成员D.只能是类的静态数据成员[答案]:A98.使用关键字()修饰的数据成员,允许当前类及其派生类访问,而不允许在类的外部访问.A.publicB.protectedC.privateD.不指定[答案]:B99.派生类的成员函数可以直接访问基类的()成员.A.公有B.保护C.公有和保护D.私有[答案]:C100.下列叙述中,()不符合赋值兼容性规则.A.基类的对象可以赋值给派生类对象B.派生类对象可以赋值给基类的对象C.派生类对象可以初始化基类对象的引用D.派生类对象的地址可以赋值给基类的对象指针[答案]:A101.如果采用公有继承,通过派生类对象,可以访问基类的().A.私有成员B.所有成员C.保护成员D.公有成员[答案]:D102.派生类构造函数的成员初始化列表中不能包含().A.基类的构造函数B.派生类中成员对象的初始化C.基类成员对象的初始化D.派生类中一般数据成员的初始化[答案]:D103.当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类对象来直接访问.A.任何成员B.公有成员和保护成员C.公有成员和私有成员D.私有成员[答案]:B104.设置虚基类的目的是().A.简化程序B.消除二义性C.提高运行效率D.减少目标代码[答案]:B105.下列虚基类的声明中,()是正确的.A.class virtualB:publicAB.classB:virtual publicAC.virtual classB:publicAD.classB:publicA virtual[答案]:B106.类O定义了私有函数F1.P和Q为O类的派生类,定义为classP:public){…};classQ:protectedO{…}.则()可以访问F1.A.O的对象B.P类内C.O类内D.Q类内[答案]:C107.派生类采用()继承方式可以使基类保护成员成为自己的私有成员.A.私有继承B.保护继承C.公有继承D.私有.保护.公有均可[答案]:A108.从一个基类派生出的各个类的对象之间().A.共享所有数据成员,每个对象还包含基类的所有属性B.共享部分数据成员,每个对象还包含基类的所有属性C.不共享任何数据成员,但每个对象还包含基类的所有属性D.共享部分数据成员和函数成员[答案]:C109.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数.A.自己所属类.对象成员所属类.基类B.对象成员所属类.基类.自己所属类C.基类.对象成员所属类.自己所属类D.基类.自己所属类.对象成员所属类[答案]:C110.当派生类中有和基类一样名字的成员时,一般来说,().A.将产生二义性B.派生类的同名成员将覆盖基类的成员C.是不能允许的D.基类的同名成员将覆盖派生类的成员[答案]:B111.下列关于运算符重载的描述中,正确的是().A.运算符重载可以改变操作数的个数B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构[答案]:D112.下列关于模板的描述,错误的是().A.模板把数据类型作为一个设计参数B.模板定义中支持多个参数类型C.模板定义中只能支持一个参数D.模板参数列表中可以有类型参数和非类型参数[答案]:C113.read函数的功能是从输入流中读入().A.一个字符B.当前字符C.一行字符D.指定若干字符[答案]:D114.要求打开文件”D:\file.dat”,并能写入数据的正确语句是().A.if streamin file(“D:\\file.data”,ios::in);B.if streamin file(“D:\\file.data”,ios::out);C.of streamin file(“D:\\file.data”,ios::out);D.if streamin file(“D:\\file.data”,ios::in|ios::out);[答案]:D115.编译器将C++源代码翻译为().A.目标文件B.可执行文件C.头文件D.资源文件[答案]:A116.C++源程序文件的缺省扩展名为().A..libB..objC..exeD..cpp[答案]:D117.假定一个二维数组的定义语句为”int a[3][4]={{3,4},{2,8,6}};”,则元素a[1][2]的值为().A.2B.4C.6D.8[答案]:C118.函数重载是指().A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同[答案]:A119.假定AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问x对象中数据成员a的格式为().A.x(a)B.x[a]C.x->aD.x.a[答案]:D120.类的实例化是指().A.定义类B.创建类的对象C.调用类的成员D.指明具体类[答案]:B二.问答题1.写出下面程序的执行结果.#include <iostream>using namespace std;int f(int n){if(n<=0) throw n;int s=1;for(int i=1;i<=n;i++) s*=i;return s;}int main(){try{ cout<<“4!=“<<f(4)<<endl;cout<<“-2!=“<<f(-2)<<endl;}catch(int n){ cout<<“n=“<<n<<“不能计算n!”<<endl; cout<<“程序执行结束”<<endl;}return 0;}[答案]:4!=24n=-2不能计算n!程序执行结束2.下面程序执行后,假定用户输入”Every student love C++”,写出程序执行后文件”D:\1.txt”中存储的内容.#include <iostream>#include<fstream>using namespace std;int main(){charbuf[100];cin>>buf;ofstreamof;of.open(“D:\\1.txt”);of<<buf;of.close();return 0;}[答案]:Every3.写出下面程序的执行结果.#include <iostream>int main(){int number = 267;int digit, tens, hundreds;digit = number %10;tens =(number/10)%10;hundreds = (number/100)%10;cout<<"Result:"<<hundreds<<", "<<tens<<", "<<digit<<endl;return 0;}[答案]:Result: 2, 6, 74.写出下面程序的执行结果.#include <iostream>using namespace std;double func( double pData[ ], int size);int main(){ doublearray[]={2.2, 3.8, 6, 5.4}; cout<<"Result: "<<func(array, 4)<<endl;cout<<"Result: "<<func(array, 3)<<endl; return 0;}double func( double pData[ ], int size){ double result=0; int i; for(i=0; i<size; ++i){result+=pData[i]; } result /= size; return result;}[答案]: Result: 4.35 Result: 45.写出下面程序的输出结果.#include <iostream>using namespace std;class Base {public:void display() {cout<<“Base display”<<endl; } }; class Derived : public Base { public:void display() { cout<<“Derived display”<<endl; }};void display(Base & rr){rr.display();}intmain(){Base b;Derived d;display(b);display(d);return 0;}[答案]:Base display Base display6.写出程序输出结果.#include <iostream>using namespace std;class Base{private:int base;public:Base(int b) {base=b;cout<<“base=“<<b<<endl;}~Base() { }};class Derived : public Base{private:Base bb;int derived;public:Derived(int d,intb,int c) : bb(c) , Base(b){derived=d;cout<<“derived=“<<derived<<endl;}~Derived(){}};int main(){Derived d(3,4,5);return 0;}[答案]: base=4 base=5 derived=3。
《面向对象程序设计》模拟试卷
浙江警官职业学院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)。
面向对象程序设计原理考核试卷
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
面向对象程序设计考核试卷
D. A和B
19.在面向对象程序设计中,下面哪个概念指隐藏一个类的内部细节,仅对外暴露需要公开的方法和属性?()
A.封装
B.抽象
C.继承
D.多态
20.关于异常处理,下面哪个说法是正确的?()
A.异常处理机制允许程序在出现错误时维持运行状态
A. equals()
B. ==
C. compareTo()
D. hashCo于访问对象的成员变量?()
A. ->
B. .
C. ::
D. new
18.关于拷贝构造函数,下面哪个说法是正确的?()
A.拷贝构造函数用于创建新对象时复制已有对象的数据
B.拷贝构造函数的参数是同类对象的引用
A.多态是对象在不同时间表现出来的不同形态
B.多态是在运行时而非编译时确定对象的实际类型
C.多态性是通过继承和接口实现的
D. A和B
11.在面向对象程序设计中,下面哪个概念指不同类的对象对同一消息做出响应的能力?()
A.封装
B.继承
C.多态
D.抽象
12.以下哪个说法关于构造函数是正确的?()
A.构造函数可以有返回类型
D.实现多态性
2.下列哪个概念属于面向对象方法的核心?()
A.模块化
B.抽象
C.过程控制
D.数据结构
3.在面向对象程序设计中,下面哪个术语表示对象具有的共同特征和行为的抽象?()
A.类
B.继承
C.封装
D.多态
4.以下哪个操作符用于调用类的构造函数?()
A. ->
B. ::
C. new
面向对象程序设计模拟试题
面向对象程序设计模拟试题(1)一、单选题:12分,每题02分1、设x是一个bool型的逻辑量,y的值为10,则表达式x && y的值为()。
A:1 B:0C:与x值相同D:与x值相反2、在下面循环语句中循环体执行的次数为()。
for(int i=0; i<n; i++)if(i>n/2) break;A:n/2 B:n/2+1C:n/2-1 D:n-13、switch语句能够改写为()语句。
A:for B:ifC:do D:while4、在下面的一维数组定义中,哪一个有语法错误。
()A:int a[]={1,2,3};B:int a[10]=; C:int a[];D:int a[5];5、假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。
A:0B:4C:8D:66、以下说法中正确的是()。
A:C++程序总是从第一个定义的函数开始执行B:C++程序总是从main函数开始执行C:C++函数必须有返回值,否则不能使用函数D:C++程序中有调用关系的所有函数必须放在同一个程序文件中7、以下叙述中不正确的是()。
A:在一个函数中,可以有多条return语句B:函数的定义不能嵌套,但函数的调用可以嵌套C:函数必须有返回值D:不同的函数中可以使用相同名字的变量8、函数原型语句正确的是()。
A:int Function(void a);B:void Function (int);C:int Function(a);D:void int(double a);9、设有如下函数定义int f(char *s) {char *p=s;while(*p!=’’) p++;return(p-s);}在主函数中用cout<<f(“good”)调用上述函数, 则输出结果为()。
A:3B:4C:5D:610、以下错误的描述是()。
面向对象程序设计模拟试题一套
面向对象程序设计模拟试题一套一、单项选择题(每题2分,共40分)1.C++源程序文件的缺省扩展名为( A )。
A. .cppB. .exeC. .objD. .lik2.编写C++程序一般需经过的几个步骤依次是( B )。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编译、连接3.程序中主函数的名字为( A )。
A.mainB.MAINC.MainD.任意标识符4.C++程序的基本模块为( D )。
A.表达式B.标识符C.语句D.函数5.以下标识符中不全是保留字的是( B )。
A.case for intB.default then whileC.bool class longD.goto return char6.下列语句中错误的是( D )。
A.int *p=new int(10);B.int *p=new int[10];C.int *p=new int;D.int *p=new int[40](0);7.模板的使用是为了( A )。
A.提高代码的可重用性B.提高代码的运行效率C.加强类的封装性D.实现多态性8.( D )不是构造函数的特征。
A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置缺省参数D.构造函数必须指定类型说明9.下列静态数据成员的特性中,( C )是错误的。
A.说明静态数据成员时前边要加修饰符staticB.静态数据成员要在类体外进行初始化C.静态数据成员不是所有对象所共用的D.引用静态数据成员时,要在其名称前加<类名>和作用域运算符10.关于成员函数特征的下列描述中,( A )是错误的。
A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置缺省参数值D.成员函数可以是静态的11.采用函数重载的目的在于( D )。
A.实现共享B.减少空间C.提高速度D.使用方便,提高可读性12.有关类和对象的说法下列不正确的是( C )。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、填空题(每小题1分,共10分。
)1.C++2.3.4.换。
5.6.初始化。
7.8.用new9.在C++10.在STL三、单项选择题(每小题2分,共30分。
)1.基于面向对象程序设计的软件系统应该具有( )。
A、高内聚、低耦合的特征B、低内聚、低耦合的特征C、高内聚、高耦合的特征D、低内聚、高耦合的特征2.假定AB为一个类,则该类的拷贝构造函数的声明语句为( )。
A、AB(AB x)B、AB(AB * x)C、AB&(AB x)D、AB(AB &)3.假定Matrix是名称空间osg的一个类,则下列语句错误的是( )。
A、using osg::Matrix; Matrix m;B、using namespace osg::Matrix; Matrix m;C、using namespace osg; Matrix m;D、osg::Matrix m;4.静态成员函数没有( )。
A、返回值B、this指针C、指针参数D、返回类型5.类模板的实例化( )。
A、属于动态联编B、在连接时进行C、在编译时进行D、在运行时进行6.能用友元函数重载的运算符是( )。
A、->B、=C、+D、[]7.派生类的对象对它的基类成员中( )是可以访问的。
A、公有继承的私有成员B、私有继承的公有成员C、公有继承的公有成员D、公有继承的保护成员8.如果要禁止对象之间的赋值运算,应该把operator=声明为( )成员。
A、privateB、friendC、publicD、protected9.若要打开一个用于输入的文本文件file.txt,下列操作错误的是( )。
A、ifstream inFile; inFile.open("file.txt");B、fstream inFile("file.txt", ios::binary);C、ifstream inFile("file.txt");D、fstream inFile("file.txt", ios::in);10.通过( )可以在现有类的基础上派生出新的类。
A、继承B、引用C、包含D、封装11.下列关于构造函数和析构函数的描述正确的是( )。
A、构造函数和析构函数都可以重载B、析构函数可以定义为虚函数C、构造函数和析构函数都没有返回值D、构造函数和析构函数都不能被继承12.下列关于引用的用法中,正确的是( )。
A、int x = 100; int &refx = &x;B、int x = 100, &refx; refx = x;C、int x = 100; int &refx = x;D、int &refx = 100;13.已知类A是类B的友元,类B是类C的友元,则( )。
A、类A的成员函数可以访问类B的对象的任何成员B、类C一定是类A的友元C、类A一定是类C的友元D、类C的成员函数可以访问类B的对象的任何成员14.以下基类中的成员函数, 哪个表示纯虚函数( )。
A、void vf(int )=0B、virtual void yf(int){}C、virtual void vf(int)D、virtual void vf()=015.以下类模板template <class T1, class T2=int, int num=10>class MyClass{…};正确的实例化方式是( )。
A、MyClass <char *, ,100 > C1;B、MyClass <char, 100, int> C1;C、MyClass <char , char> C1;D、MyClass <> C1;四、判断题(每小题2分,共20分。
)1.C++函数可以返回局部对象的指针或引用。
(对错)2.const数据成员的值对类中所有对象都是一样的。
(对错)3.定义带默认形参的函数时,默认形参值可以同时出现在函数声明和函数定义中。
(对错)4.多重继承中出现的二义性可以用作用域分辨法消除。
(对错)5.赋值运算符只能作为成员函数重载。
(对错)6.即使定义了带参构造函数,系统也会提供无参构造函数。
(对错)7.如果定义list<int>::iterator it,若需按偶数进行跳跃式访问,可采用迭代器操作it+=2。
(对错)8.虚函数使用静态绑定的函数调用机制。
(对错)9.用new和malloc为对象动态分配内存时,都会自动调用对象的构造函数。
(对错)10.在堆上创建的多个对象的析构顺序与构造顺序相反。
(对错)五、程序设计题(每小题10分,共30分,请将设计的程序代码填入到对应的文本框内。
)1.定义一个表示形状的基类Shape类和它的派生类圆形类(Circle)、正方形类(Square),具体要求如下:a) 基类Shape中有虚函数area()和perimeter(),实现求形状的面积和周长,可用cout输出表示。
b) 在main函数中,每个派生类生成两个对象,共四个对象存放于一个数组中,用循环程序访问其求面积和周长的成员函数。
输入输出样例参考:输入形状类型及其边长或半径:Square 5.15输入形状类型及其边长或半径:Square 2.10输入形状类型及其边长或半径:Circle 3.28输入形状类型及其边长或半径:Circle 2.01Square 26.52 20.60Square 4.41 8.40Circle 33.80 20.61Circle 12.69 12.632.建立分数类Fraction,其中包含成员分子num和分母den。
具体要求如下:a) 重载“+”实现两个分数相加操作;b) 重载“-”实现两个分数相减操作;c) 重载“>”和“<”,比较两个分数的大小;d) 重载“>>”和“<<”以输入输出分数。
输入输出样例参考:输入分数:1 3输入分数:1 2A+B: 5/6A-B: -1/6A>B: falseA<B: truea)设计一个用于表示存款年利率interestRate的静态数据成员;b)设计一个用于表示当前存款金额deposit的私有数据成员;c)设计一个用于计算年利息的公有成员函数GetAnnualInterest(注:年利息=存款金额*年利率);d)设计一个用于修改存款年利率的静态成员函数ModifyInterestRate。
输入输出样例参考:输入当前存款金额和年利率:10000 0.0325客户年利息:325输入新的年利率:0.04客户年利息:400单项选择题(共20题,每题1分,共20分)1、下列关于C++标识符的命名不合法的是 C 与C#一样A. PadB. name_1C. A#bcD. _a122、若有以下类型标识符定义:()Dint x=2; char w='a'; float y=23.45f; double z=45.6712;则表达式w*x+y-z的结果类型是A. floatB. charC. intD. double6、对重载函数形参的描述中,错误的是 D 重载是重点A. 参数的个数可能不同B. 参数的类型可能不同C. 参数的顺序可能不同D. 参数的个数、类型、顺序都相同,只是函数的返回值类型不同7、以下能正确定义数组并正确赋初值的语句是 DA. int N=5,b[N][N];B. int a[2]={{1},{3},{4},{5}};C. int c[2][]={{1,2},{3,4}};D. int d[3][2]={{1,2},{3,4}};8、下列给字符数组进行的初始化中,不正确的是 DA. char s1[]="abcd";B. char s2[3]={'x','y','\0'};C. char s3[]={'a','x','y','\0'};D. char s4[6]={"xyz","mnp"};9、通常的拷贝构造函数的参数是 CA.某个对象名 B.某个对象成员名C.某个对象的引用 D.某个对象的指针名10、关于构造函数特点的描述中,错误的是 AA. 定义构造函数必须指出类型(构造函数特点是无返回类型)B. 构造函数的名字与该类的类名相同C. 一个类中可定义0至多个构造函数(不写构造函数,系统会自动生成一个空的构造函数)D. 构造函数是一种成员函数11、下面程序的运行结果为 C#include <iostream.h>int add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;}int x=20,y=5;int add(int a,int b){int s=a+b;return s;}A.20 B.5 C.25 D.编译会提示出错信息12、关于常成员的描述中,错误的是 BA. 常成员包含常数据成员和常成员函数两种B. 常数据成员必须是公有的C. 常数据成员要使用构造函数成员初始化列表进行初始化D. 常对象只能调用它的常成员函数,不能调用其它的成员函数13、关于友元函数的描述中,错误的是 BA. 友元函数不是成员函数B. 友元函数只能访问类中私有成员C. 友元函数破坏隐藏性,尽量少用D. 友元函数说明在类体内,使用关键字friend14、如果有int x,*p; float y,*q;则下面操作正确的是 CA.p=x B.p=qC.p=&x D.p=&y16、若数组名作实参而指针变量作形参,函数调用时实参传给形参的是 DA. 数组的长度B. 数组第一个元素的值C. 数组所有元素的值D.数组第一个元素的地址17、对于动态分配内存空间描述正确的是 DA.使用new运算符分配的内存空间的长度必需是常量B.delete运算符可以释放动态的存储空间和静态的存储空间C.由new分配的内存空间是不连续的D.delete运算符只能释放由new分配的动态存储空间18、能够释放对象所占资源的是() AA.析构函数 B.数据成员C.构造函数 D.静态成员函数19、虚函数的定义是在基类中进行的,定义时需要冠以关键字 C A.static B.frendC.virtual D.public20、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是)CA.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9题16空,每空1分,共16分)1、函数重载时,编译系统会根据__形参的类型__ 或__形参的个数__ 来区分。