面向对象程序设计模拟题

合集下载

面向对象程序设计模拟题

面向对象程序设计模拟题
B. 静态多态是通过函数的重载或运算符的重载来实现的
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分别具有__________和__________位有效数字。

C++面向对象程序设计(试题与答案)

C++面向对象程序设计(试题与答案)

模拟试题(1)一、判断对错题(10%)(对√,错×)()1.自动变量用堆方式创建,它与块共存亡。

()2.运算符+=是右结合的。

()3.表达式cout<<99的类型为int。

()4.++i是左值,但i++不是左值。

()5.Y[I][J]与*(*Y+I)+J不等价。

()6.从外部看类的private 成员和protected成员有区别。

()7.运算符&不可以重载。

()8.基类的protected成员经过protected派生,在派生类中它变成了private成员。

()9.2.0/-3.0是一个正确的表达式。

()10.字符'\12'的ASCII为12。

二、填空题(20%)#include <iostream.h>typedef struct node{long data;node * next;};class stack{private:node * head;①__________stack();~stack();void push (②__________);③__________ pop();④__________ print();};stack::stack(){ head = new ⑤__________head->next = ⑥__________ }stack::~stack(){node * p;p = head;while (p){head = head->next;⑦__________p = head;}}void stack::push(long x){node * p = new node;p->data = x;p->next = head->next;⑧__________ = p;cout<<"Push" <<x<<" ok !"<<endl;}long stack::pop(){node *p = head->next;if(p!=NULL){long x = p->data;head->next = p->next;⑨__________cout<<"pop "<<x<<" ok !"<<endl;return x;}elsecout<<"Stack is empty !"<<endl;return 0;}void stack::print(){node * p = head->next;cout<<"Stack_Top"<<endl;while (p){cout<<p->data<<endl;⑩__________;}cout<<"Stack_bottom"<<endl;}三、简答题(20%)(按条列出论点)1.注解。

面向对象程序设计-模拟测试

面向对象程序设计-模拟测试

《面向对象程序设计》课程模拟测试一、选择题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) 。

面向对象程序设计模拟练习题(含答案)

面向对象程序设计模拟练习题(含答案)

面向对象程序设计模拟练习题(含答案)一、单选题(共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. 类的析构函数是在( ) 调用的。

C++面向对象程序设计模拟试题完成

C++面向对象程序设计模拟试题完成

C++面向对象程序设计模拟试题完成C++面向对象程序设计模拟试题一一、单项选择题(本大题共10小题,每小题2分,共20分1.说明虚函数的关键字是()。

A. inline B. virtual C. define D. static 2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。

A. main B. MAIN C. name D. function 3.cout 是某个类的标准对象的引用,该类是()。

A. ostream B. istream C. stdout D. stdin 4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的()。

A. 私有静态成员函数 B. 公有非静态成员函数C. 公有静态成员函数B. 友元函数5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。

A. public B. protected C. private D.static 6.一个类的所有对象共享的是()。

A. 私有数据成员B. 公有数据成员C. 保护数据成员D. 静态数据成员7.动态联编所支持的多态性称为()。

A. 虚函数 B. 继承 C. 编译时多态性 D. 运行时多态性8.定义类模板时要使用关键字()。

A. const B. new C. delete D. template 9.对虚基类的定义()。

A. 不需要使用虚函数B. 必须使用虚函数C. 必须使用privatD. 必须使用public 10.类型转换函数()。

A. 不能带有参数B. 只能带一个参数C. 只能带2个参数D. 只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。

()2.抽象类可以用来直接创建对象。

()3.内联函数中可以出现递归语句。

面向对象程序设计模拟题

面向对象程序设计模拟题

阅读程序,写出程序的执行结果。

1#include <iostream>using namespace std;class B0{public: virtual void display(){ cout << “B0::display()” <<endl; } };class B1: public B0{public: void display(){ cout << “B1::display() ” <<endl; } };class D1: public B1{public: void display(){ cout << “D1::display()” <<endl; } };void fun(B0 *ptr){ptr->display();}void main(){B0 b0, *p;B1 b1;D1 d1;p = &b0;fun(p);p = &b1;fun(p);p = &d1;fun(p);}程序运行结果为:B0::display()B1::display()D1::display()2#include <iostream>using namespace std;class B1 //基类B1,构造函数有参数{public:B1(int i) {cout<<"constructing B1 "<<i<<endl;}};class B2 //基类B2,构造函数有参数{public:B2(int j) {cout<<"constructing B2 "<<j<<endl;}};class B3//基类B3,构造函数无参数{public:B3(){cout<<"constructing B3 *"<<endl;}};class C: public B3, public B2, public B1 //派生新类C//注意基类名的顺序{public://派生类的公有成员C(int a, int b, int c, int d):B1(a),memberB2(d),memberB1(c),B2(b){ } private: //派生类的私有对象成员B2 memberB2;B1 memberB1;B3 memberB3;};void main(){C obj(1,2,3,4);}程序运行结果为:constructing B3 *constructing B2 2constructing B1 1constructing B2 4constructing B1 3constructing B3 *设计一个Point类,该类的私有成员变量X,Y存放的是Point的坐标,Point类具有复制构造函数。

面向对象程序设计考试模拟题(附参考答案)

面向对象程序设计考试模拟题(附参考答案)

面向对象程序设计考试模拟题(附参考答案)一、单选题(共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接口,是单列集合。

面向对象程序设计-模拟题

面向对象程序设计-模拟题

《面向对象程序设计》模拟题一.单选题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)。

面向对象程序设计模拟试题

面向对象程序设计模拟试题

面向对象程序设计模拟试题(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 )。

面向对象程序设计试题样例

面向对象程序设计试题样例

一、单项选择题(本大题共10小题)1. 关于面向对象的程序设计必须具备的关键要素, 以下说法最正确的是( )A. 抽象和封装B. 抽象和多态性C. 抽象、封装和继承性D. 抽象、封装、继承和多态性2.在下列成正确表示式中, 运算符”+”的意义不相同的一对是( )A. 5.0+2.0和5.0+2B. 5.0+2.0和5+2.0C. 5.0+2.0和5+2D. 5+2.0和5.0+2二、填空题(本大题共10小题)3.在已经定义了整型指针ip后, 为了得到一个包括10个整数的动态数组并由ip指向这个数组, 应使用语句_______________。

ip=new int[10];4.在函数头与函数体之间加_____________关键字能够防止覆盖函数改变数据成员的值。

三、改错题(本大题共5小题)5. 用横线标出下面main函数中的错误, 说明错误原因并改正。

#include <iostream>using namespace std;class Base0 { //定义基类Base0public:int var0;void fun0() { cout << "Member of Base0" << endl; }};class Base1: public Base0 { //定义派生类Base1public: //新增外部接口int var1;};class Base2: public Base0 { //定义派生类Base2public: //新增外部接口int var2;};class Derived: public Base1, public Base2 { //定义派生类Derivedpublic: //新增外部接口int var;void fun() { cout << "Member of Derived" << endl; }};int main() { //程序主函数Derived d; //定义Derived类对象dd.var0=1;d.fun0();return 0;}6.下面的程序类B的定义中有一处错误, 请用下横线标出错误并说明错误原因。

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

《面向对象程序设计》模拟题(补)一.单项选择题1.面向对象程序设计思想的主要特征不包括【】。

A)继承性B)功能分解,逐步求精C)封装性和信息隐藏D)多态性2.已知数组定义,int array[8];【】是非法的数组元素访问。

A)array[8] B)array[1]C)array[0] D)array[3]3.关键字【】禁止在类外部使用成员数据和成员函数。

A)public B)classC)virtual D)private4.下面语句中,【】包含语法错误。

A)int *p=new int(2); B)int *p=new int[2](0);C)int *p=new int; D)int *p=new int[2]; 5.ASCII值与0相等的字符是【】。

A)‘0’B)“0”C)‘\0’D)‘ ’( 表示空格)6.下列的符号常量定义中,正确的是【】。

A)const int M; B)int M const =10;C)int M=10 const; D)const int M=10;7.若有类Test,该类的复制构造函数声明为【】。

A)Test(); B)Test(const CTest& t);C)void Test(const CTest& t); D)Test(const CTest *t);8.以下选项中,【】不是类的成员函数。

A)构造函数B)析构函数C)友元函数D)复制构造函数9.如果一个类中包含纯虚函数,则该类称为【】。

A)派生类B)虚基类C)抽象类D)子类10.在类中将show声明为不带返回值的纯虚函数,则正确的写法是【】。

A)virtual void show()=0; B)virtual show()=0;C)virtual void show(); D)void show()=0 virtual;11.类中每个静态数据成员有【】个拷贝。

A)0 B)每个对象1个C) 1 D)不确定12.构造函数在【】时被调用。

A)程序编译B)程序装入内存C)创建类D)创建对象13.已知数组定义,int array[6]; 则最小数组下标为【】。

A)0 B) 1C) 6 D) 514.下面数组定义中,有语法错误的是【】。

A)int a[]={1,2,3}; B)int a[10]={0};C)int a[]; D)int a[5];15.关键字【】允许在类外部使用成员数据和成员函数。

A)virtual B)classC)public D)private16.对如下代码,对其描述正确的是【】。

int *p;p=new int[5];A)动态开辟5个int元素,初值不确定B)动态开辟初值为5的一个int元素C) 动态开辟5个int元素,初值为0D) 存在语法错误17.字符串“Hello”在内存中占用的字节数为【】。

A) 2 B) 5C) 6 D) 118.已有int a=10; 则属于合法引用定义的是【】。

A)int &ra=&a; B)int &ra=10;C)int &ra; ra=a; D)int &ra=a;19.下列对构造函数的描述中,【】是错误的。

A)返回类型应该为void B)构造函数允许重载C)函数名与类名完全相同D)构造函数允许使用缺省参数20.已知Hello是某个类的常成员函数,返回值类型为void,正确的定义形式是【】。

A)void const Hello(); B)void Hello() const;C)const void Hello(); D)void Hello(const);21.类中定义的成员默认访问权限为【】。

A)public B)privateC)protected D)friend22.假定TestClass为一个类,执行“TestClass a[4], *pa;”语句时会自动调用该类型构造函数【】次。

A) 1 B) 3C) 5 D) 4二.填空题1.在C++中,定义一个类类型时,成员的默认访问权限为【1】。

2.标识静态成员的关键词是【2】,标识虚函数的关键词是【3】,标识常成员的关键词是【4】,标识内联函数的关键词是【5】。

3.在函数内部定义的变量称为【6】,它们位于栈内,当它们超出作用域后由系统自动删除;动态创建的数据位于【7】中,它们必须通过【8】运算符显式删除。

4.在C++中,标识内联函数的关键词是【9】,标识静态成员的关键词是【10】,标识友元函数的关键词是【11】。

5.在函数内部定义的变量称为【12】,在函数被调用时由系统创建,它们位于【13】中,使用new运算符动态创建的对象位于【14】中,动态创建的对象占用的内存空间需要通过【15】运算符释放。

三.程序填空题1.下面的类定义了2个重载的构造函数,请补充完成程序。

class CTest{private:int x, y;public:CTest (int a=0, int b=0);CTest (const CTest &r );};CTest::CTest(int a, int b) : 【1】 { }【2】 (const CTest &r ){x= 【3】 ;【4】 ;}2.下面的程序通过成员函数实现计算两点间距离的功能,请补充完成程序。

#include <iostream>#include <cmath>class Point{private:double x, y;public:【5】getDistance(const Point& a) const;Point(double a, double b){x=a; y=b;}};【6】getDistance(const Point& a) const{double dx, dy;dx= 【7】;【8】;return sqrt(dx*dx+dy*dy);}四.阅读程序题1.写出下面程序的执行结果。

#include <iostream>using namespace std;class CAnimal{public:virtual void Report(){cout<<“Report from Animal!”<< endl;}};class CTiger : public CAnimal{public:void Report(){cout<<“Report from Tiger!”<< endl;}};class CMonkey : public CAnimal{public:void Report(){cout<<“Report from Monkey!”<< endl;}};void show(CAnimal *p){p->Report();}int main(){CAnimal *pAnimal;pAnimal=new CAnimal;show(pAnimal);delete pAnimal;pAnimal=new CTiger;show(pAnimal);delete pAnimal;pAnimal=new CMonkey;show(pAnimal);delete pAnimal;return 0;}2.写出下面程序的输出结果。

#include <iostream>using namespace std;class Test{public:Test(){cout<<“Default constructor.”<< endl;}~Test(){cout<<“Destructor.”<< endl;}Test(const Test& t){cout<<“Copy constructor.”<< endl;}};void fun(const Test t){Test t2(t);}int main(){T est t1;f un(t1);r eturn 0;}五.程序设计题1.已知分数类Fraction的定义如下,请使用成员函数的方法,重载+运算符,实现两个Fraction对象之间的+运算;重载*=运算符,实现两个分数对象之间的*=运算。

写出成员函数的实现。

#include <iostream>using namespace std;class Fraction{private:int den, num; //分母和分子public:Fraction (int d, int n){den=d;num=n;}Fraction& operator*=( const Fraction& f);Fraction operator+(const Fraction& f);参考答案:一.单项选择题二.填空题1. private或私有2. static3. virtual4. const5. inline6. 局部变量7. 堆 8. delete 9. inline10. static 11. friend 12. 局部变量13. 栈 14. 堆 15. delete 三.程序填空题1. x(a),y(b)2. CTest::CTest3. r.x4. y=r.y5. double6. double Point::7. x-a.x 8. dy=y-a.y四. 阅读程序题1、Report from Animal!Report from Tiger!Report from Monkey!2、Default constructor.Copy constructor.Copy constructor.Destructor.Destructor.Destructor.五. 程序设计题Fraction& Fraction::operator*=(const Fraction& f) {num=num*f.num;den=den*f.den;return *this;}Fraction Fraction::operator+ (const Fraction& f){int tmpNum, tempDen;tmpNum=num*f.den+f.num*den;tmpDen=den*f.den;return Fraction(tmpNum,tempDen);}。

相关文档
最新文档