面向对象程序设计模拟题

合集下载

面向对象程序设计模拟题

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

相关文档
最新文档