面向对象复习题1
C++面向对象技术复习题汇总(含答案)

C++面向对象技术复习题汇总(含答案)面向对象程序设计C++复习资料与答案第一、二、六、七章习题一、选择题1、系统约定C++源程序文件名的缺省的扩展名为()A、bccB、c++C、cppD、vcc2、面向对象的程序设计将数据与()放在一起,作为一个相互依存、不可分割的整体来处理。
A、对数据的操作B、信息C、数据隐藏D、数据抽象3、当一个函数无返回值时,函数的类型应定义为()A、voidB、任意C、intD、无4、对于C++的函数,正确的叙述是:A、函数的定义不能嵌套,但函数的调用可以嵌套B、函数的定义不能嵌套,但函数的调用不能嵌套C、函数的定义和调用都不能嵌套D、函数的定义和调用都可以嵌套5、下列语句中错误的是()A、int *p=new int(10);B、int *p=new int[10]C、int *p=new int;D、int *p=new int[40](0);6、假设已经有定义:const char *const name=”chen”;,下面的语句中正确的是:()A、name[3]=’a’; B、name=”lin”;C、name=new char[5]; D、cout<<name[3];< bdsfid="94" p=""></name[3];<>7、假设已经定义:char *const name=”chen”;, 下面的语句中正确的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);8、假设已经定义:const char *name=”chen”;, 下面的语句中错误的是:()A、name[3]=’q’; B、name=”lin”;C、name=new char[5]; D、name=new char(‘q’);9、下面的类型声明中正确的是:( )A、int &a[4];B、int &*p;C、int &&qD、int i,*p=&i;10、假设定义了函数模板()templateT max(T x,T y){ return(x>y)?x:y;}并定义了int i;char c;错误的调用语句是:()A、max(i,i)B、max(c,c)C、max((int)c,i);D、max(i,c)11、模板的使用是为了()A、提高代码的可重用性B、提高代码的运行效率C、加强类的封装性D、实现多态性12、设有二个语句:int x[‘a’];cin>>x;则编译器认为()A、说明语句int x[‘a’]错B、二个语句都错C、语句cin>>x 错D、二个语句正确,没有语法错13、设有语句:void f(int a[10],int &x);int y[10],*py=y,n;则对函数f的正确调用语句是( )A、f(py[10],n);B、f(py,n)C、f(*py,&n)D、f(py,&n)14、在C++中实现封装是借助于()A、枚举B、类C、数组D、函数15、对于下面几个函数:(1) void f(int x,float y) {…… }(2) int f(int a,float b){…… }(3) int f(int i,int j){…… }(4) float k(int x){…… }是重载函数。
面向对象期末考试题及答案

面向对象期末考试题及答案一、选择题(每题2分,共20分)1. 面向对象编程中的三大特性是?A. 封装、继承、多态B. 抽象、继承、封装C. 继承、封装、多态D. 封装、抽象、多态答案:A2. 在Java中,哪个关键字用于定义类?A. classB. structC. typeD. interface答案:A3. 以下哪个不是面向对象设计原则?A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 模块化原则答案:D4. 在面向对象编程中,构造函数的作用是什么?A. 用于创建对象B. 用于销毁对象C. 用于实现继承D. 用于实现多态答案:A5. 以下哪个是Java中的访问修饰符?A. privateB. publicC. protectedD. 全部都是答案:D...(此处省略剩余选择题)二、简答题(每题10分,共30分)1. 简述面向对象编程的基本思想。
答案:面向对象编程是一种编程范式,它将现实世界中的实体抽象成对象,这些对象具有属性和行为。
面向对象编程的基本思想是将数据和处理数据的方法结合在一起,形成对象。
通过对象之间的交互来实现程序的功能。
2. 解释什么是多态性,并给出一个简单的例子。
答案:多态性是指允许不同类的对象对同一消息做出响应,但具体的行为会根据对象的实际类型而有所不同。
例如,在Java中,可以通过重载和重写来实现多态。
假设有一个动物类Animal,它有一个方法makeSound()。
然后有一个子类Dog,它重写了makeSound()方法。
当我们创建一个Dog对象并调用makeSound()时,会执行Dog类中的makeSound()方法,而不是Animal类中的。
3. 什么是封装?封装的好处是什么?答案:封装是将对象的数据(属性)和行为(方法)组合在一起,并隐藏对象的内部细节,只暴露出一个可以被外界访问的接口。
封装的好处包括:保护数据、减少错误、提高代码的重用性、增强模块化。
三、编程题(每题25分,共50分)1. 编写一个Java程序,实现一个简单的银行账户类Account,包含以下特性:- 私有属性:账户余额balance- 公共方法:存款deposit(double amount)、取款withdraw(double amount)、获取余额getBalance()答案:```javapublic class Account {private double balance;public Account() {this.balance = 0;}public void deposit(double amount) {if (amount > 0) {balance += amount;}}public void withdraw(double amount) {if (amount > 0 && balance >= amount) {balance -= amount;}}public double getBalance() {return balance;}}```2. 假设有一个名为Car的类,它有两个属性:品牌brand和颜色color。
面向对象程序设计期末复习题及答案1

C++面向对象程序设计复习试题类型1、单项选择题(在每小题的四个备4.在进行完任何C++流的操作后,都可以用C++ 流的有关成员函数检测流的状态;其中只能用于检测输入流是否结束状态的操作函数名称是选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
15 题,每小题2 分,共30 分) [主要从作业题目中抽出来]答案:eof 5.函数重载是指____________ 。
答案:两个或两个以上的函数取相同的函数名,但形参的个数或类型不同3 题,每小题5 分,共15 分)程序编制题【也称综合分析题】每题8 分,第3题9分,共25 分)容打*号是重点,打▲号是编程题出题范围*基本概念,对象,消息,类。
面向对象系统特性,封装性,继承性,多态性。
*▲ C++ 类的构成,类与对象,构造与析构,动态存储,类嵌套。
静态成员,对象数组,友元。
*函数重载。
运算符重载。
*引用定义与引用参数*基类与派生类的定义。
*基类及派生类的访问权(含派生类对基类的访问、通过派生类对象对基类的访问)和初始化。
多继承与虚基类。
*多态性与虚函数。
纯虚函数、抽象类。
* ▲函数模板。
* ▲使用类来定义对象并在程序中的应用样题填空题1. 假定AB 为一个类,则执行“ a[10]; ”语句时,系统自动调用该类的构造函数的次数为。
答案:102. 可以用p.a 的形式访问派生类对象P 的基类成员a, 其中a 是__________________ 。
答案:公有继承的公有成员阅读程序例题【计算题】1.分析以下程序的执行结果#include<iostream.h>class Sample{int x,y;public:Sample() {x=y=0;}Sample(int a,int b) {x=a;y=b;}~Sample(){if(x==y)cout<< “x=y” <<endl;elsecout<< “ x!=y ”<<endl;}void disp(){cout<< “x=” <<x<<“,y ” =<<y<<endl;}};void main(){Sample s1,s2(2,3);s1.disp();s2.disp();}解:x=0,y=0 x=2,y=3 x!=y x=y2.分析以下程序的执行结果#include<iostream.h> int add(int x,int y){return x+y;2. 填空题。
面向对象程序设计复习题一

面向对象程序设计复习题一一.名词解释1、构造函数自定义数据类型,由数据成员、方法成员构成,具有封装作用2、对象按照数据类型分配的内存空间,可以实现方法的调用3、运算符重载本质是全局对象,但是纳入到了类的管理4、析构函数负责完成对象的创建和初始化5、组合两个类之间的一种关系,其中一个类拥有另一个类的全部操作和数据二.简答。
1、什么是面向过程设计思想?构造函数;拷贝构造函数;赋值运算符2、比较Java和C++?C++中类和结构体具有同等的功能,唯一区别是类缺省成员属性是private,而结构体缺省为public3、重载的意义?重载的意义在于丰富了动作的多样性,但是并不加重程序员的负担。
4、类和结构体的主要区别是什么?当成员默认属性时,类默认为private,而结构体默认为public5、比较继承与组合。
继承与组合解决的都是复用问题,继承解决的是类似生物遗传的复用,组合描述的是装配关系,当二者皆可用的时候要符合组合优先的原则三.辩析(可以不说出对错但是要给出评价)1、派生类方法可以访问父类的全部成员。
符合里氏替换原则2、静态数据成员是属于类的。
public修饰符号允许外界方法访问本作用域内的成员,因此破坏了封装性3、private继承方式不能产生子类。
private方式派生的类不能完成父类的全部功能,所以不能产生子类。
4、不能实例化的类一定是抽象类。
类的构造函数设为非public属性即不能实例化5、面向对象思想适合解决复杂的问题。
静态数据成员不属于对象,因此在main函数之前构造四.综合回答1. 请介绍运算符重载的意义。
答:函数重载实现了用同名函数处理同类操作的问题,降低了程序员的负担;运算符重载的本质是函数重载;运算符是程序员更熟练内容,也是为了降低程序员的负担;2. 谈谈多态的意义。
答:多态实现了用同一个指针管理继承类树并保证函数调用功能丰富性的特点;3. 面向对象程序设计思想的优点和缺点。
答:可以实现软件复用;可管理性、可重用性、可扩展性;开发周期短;强壮性好。
c++面向对象复习题答案版

c++面向对象复习题答案版第1页共22页一、填空题1.c++中存有两种数据类型:(char)和(intlong)可以采用signed修饰符。
在c++中,用数组、指针、和(提及)做为函数参数,能将参数值送回。
2.为了降低函数调用的时间开销,建议将小的调用频繁的函数定义为(内联函数),方法是在函数类型前加上(inline)关键字。
3.面向对象的程序设计存有四大特征,它们就是抽象化、PCB、(承继)、(多态)。
4.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是(把对象的每个数据成员的值都复制到新建立的对象中)。
5.用new提出申请某一个类的动态对象数组时,在该类中必须能相匹配至(该类的)构造函数,否则应用程序可以产生一个编程错误。
6.静态数据成员必须在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象(共享)。
7.在c++中,定义空载函数时,应当至少并使空载函数的参数个数或参数类型(相同)。
8.在c++中,虽然友元提供更多了类之间数据展开出访的一种方式,但它毁坏了面向对象程序设计的(PCB)特性。
9.预编译指令由三种,它们是:文件包含、(宏定义)和(条件编译)。
10.静态的成员函数没暗含的(this),所以,它们就可以轻易出访类的静态的数据成员。
11.在c++中,函数的参数存有两种传达方式,它们就是值传达和(地址)。
12.当非静态成员函数被调用时,该成员函数的(this)指向调用它的对象。
13.拷贝构造函数采用(提及)做为参数初始化建立中的对象。
14.在公有承继的情况下,基类数据成员在派生类中的出访权限(维持不变)。
15.在c++中,结构派生类对象时,总是先从(基类)的初始化已经开始的。
16.当需要统计程序中某个类创建对象的个数时,需要给该类定义(静态数据)成员。
17.在多个类之间有重复继承时,为避免被重复继承的基类数据成员在内存中有多个拷贝,应将该基类定义为(虚基类)。
《面向对象程序设计》编程题复习及其答案

《⾯向对象程序设计》编程题复习及其答案《⾯向对象程序设计》复习题1、(C++的输⼊输出)天猫优惠券,我就要券/doc/a2caece903020740be1e650e52ea551811a6c980.html定义⼀个函数max,实现输⼊两个数a、b,⽐较并从⼩到⼤输出。
2、(函数的重载)(1)定义⼀个带两个参数的函数max,输出最⼤值。
(2)再定义⼀个带三个参数的函数max,输出最⼤值。
(3)主函数测试之。
3、(有默认参数的函数)将题2⽤带默认参数的函数实现。
4、(变量的引⽤)(1)定义⼀个swap1函数,以普通形参传⼊两个变量a、b,互换a、b的值。
(2)定义⼀个swap2函数,以指针形参传⼊两个变量a、b,互换a、b的值。
(3)定义⼀个swap3函数,以引⽤形参输⼊两个变量a、b,互换a、b的值。
(4)主函数定义两个变量x、y传⼊三个函数,观察x、y值前后的变化。
5、(类的定义)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1) set函数,键盘输⼊学号,姓名,年龄,性别(2) display函数,输出学⽣信息。
6、(构造函数和析构函数)定义⼀个student类,数据成员包括:学号num,姓名name,年龄age,性别sex,成员函数包括:(1)构造函数,初始化学号,姓名,年龄,性别(2)display函数,输出学⽣信息。
(3)析构函数,输出学⽣学号。
(4)主函数定义多个对象,并注意构造函数和析构函数的调⽤顺序。
7、(构造函数的重载)在题6基础上增加⼀个默认构造函数,实现构造函数的重载8、将题6⽤带默认参数的构造函数实现。
9、(对象数组和对象的动态建⽴及释放)在题8基础上,实现如下主函数:(1)在主函数中定义⼀个包含三个学⽣的数组,并初始化之。
(2)在主函数中定义⼀个student类指针p并⽤new运算符分配动态内存(3)⽤delete删除p指向的动态内存。
java面向对象试题及答案

java面向对象试题及答案1. 试题一题目:什么是面向对象编程?请简要描述面向对象编程的优势和特点。
答案:面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,将程序中的数据和操作数据的方法进行了封装,使得程序更加模块化和易于理解。
面向对象编程的主要特点包括封装、继承和多态。
封装使得数据和对数据的操作集中在一个对象中,可以隐藏内部实现细节,提供公共的接口进行访问,增加了程序的安全性和灵活性。
继承允许新建的类继承已有类的属性和方法,通过扩展和重写已有类的功能,减少了代码的重复性,提高了代码的复用和可维护性。
多态允许不同的对象对相同的消息作出不同的响应,通过接口和抽象类的使用,实现了更加灵活和可扩展的程序设计。
面向对象编程的优势包括了代码的重用性、可维护性、可扩展性和灵活性。
通过封装和继承的应用,可以减少代码重复,提高开发效率,并且通过多态的应用,可以实现程序的灵活性,方便后续的扩展和修改。
2. 试题二题目:什么是类?请简要描述类的特点和组成部分。
答案:类是面向对象编程中的核心概念,是对一类具有相同属性和行为的对象进行抽象和封装的模板。
类是用来创建对象的蓝图,可以通过实例化类来创建对象。
类的特点包括了封装、继承和多态。
类通过封装将属性和方法进行了封装,提供了公共的接口与外部进行交互,隐藏了内部实现细节。
继承允许新建的类继承已有类的属性和方法,在原有基础上进行修改和扩展。
多态允许不同的对象对相同的消息作出不同的响应,实现了程序的灵活性和可扩展性。
类的组成部分包括了属性(Field)和方法(Method)。
属性(也称为成员变量)用于描述对象的状态,可以是基本类型或其他类的对象。
方法用于描述对象的行为,可以是处理属性的操作,也可以是其他业务逻辑的实现。
3. 试题三题目:请简要解释传值和传引用的区别,并用代码示例说明。
答案:传值和传引用是在方法调用时,参数传递的两种方式。
《面向对象程序设计》期末复习题及答案1

面向对象程序设计》期末复习指导-单选题1. C++源程序文件的缺省扩展名为( )。
A. cppB. exeC. objD. lik2. 编写C++程序一般需经过的几个步骤依次是( )。
A. 编译、编辑、连接、调试B. 编辑、编译、连接、调试C. 编译、调试、编辑、连接D. 编辑、调试、编辑、连接3. 程序中主函数的名字为()。
A. mainB. MAINC. MainD. 任意标识符4. 存储以下数据,占用存储字节最多的是()。
A. 0B. …0‟C. “0”D. 0.01 5. 假设在程序中 a、b、c 均被定义成整型,所赋的值都大于1,则下列能正确表示代数式abc 的表达式是( )。
A. 1.0/a*b*cB. 1/(a*b*c)C. 1/a/b/(float)cD. 1.0/a/b/c6. x>0 || y==5的相反表达式为()。
A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==57. 字符串”a+b=12\n”的长度为()。
A. 6B. 7C. 8D. 98. 循环语句“for(int i=0; i<n; i++) cout<<i*i<<’’;”中循环体执行的次数为( )。
A. 1B. n-1C. nD. n+19. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 710. 在下面循环语句中循环体执行的次数为()。
int i=0,s=0; while(s<20) {i++; s+=i;}A. 4B. 5C. 6D. 711. 循环体至少被执行一次的语句为()。
A. for循环B. while循环C. do循环D. 任一种循环12. 在下面的一维数组定义中,哪一个有语法错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择(共20分,每小题2分)1、面向对象的软件开发过程的正确顺序是:()。
A.设计、分析、编程、维护、测试 B.分析、设计、编程、测试、维护C.分析、设计、测试、编程、维护 D.设计、分析、测试、维护、编程2、以下选项中不属于面向对象三大特征的是:()。
A.继承 B.多态 C.重载 D.封装3、()是C++的合法标识符。
A._Student B.namespace C.ip@address D.2016C++4、int a=20; int b=a++; int c=++b;上述语句全部执行后a、b、c的值分别是()。
A.20、21、22 B.21、21、21 C.21、20、22 D.20、20、215、关于类的友元,下列说法错误的是()。
A.友元关系不可传递B.友元关系是单向的C.如果类A是类B的友元,那么B的全部成员函数都是A的友元函数D.类外部访问本类成员不一定要通过定义友元函数的方式6、类的静态成员具有下列()所述的性质。
A.静态数据成员不属于任何一个对象B.静态成员函数只能通过类名访问C.静态成员函数只能访问静态数据成员D.静态数据成员在类中初始化7、把乘法运算符*重载为某个类的成员函数与非成员函数时,分别需要()个形参。
A.1,2 B.0,1 C.2,1 D.1,08、所谓抽象类是()的类。
A.用virtual关键字继承 B.带有虚函数C.带有纯虚函数 D.在程序代码中用关键字abstract说明9、下面哪一个不是预定义的ostream类对象?()A.cout B.cerr C.clog D.cin10、有如下程序段try{…throw “exception”;…}catch(int){…} //①catch(char){…} //②catch(…){…} //③catch(char[]){…} //④则try块中抛出的异常将会被()捕获并处理。
A.① B.② C.③ D.④二、填空(共15分,每空1分)1、面向对象方法中的对象,是系统中用来描述客观事物的一个实体,它是用来构成系统的一个基本单位。
对象由一组和一组组成。
2、引用是一种特殊类型的变量,可以被认为是另一个变量的。
3、面向对象方法中的,是指对具体问题(对象)进行概括,抽出一类对象的公共性质并加以描述的过程。
4、C++程序中对象的初始化和清理工作,分别由对象所属类的两个特殊的成员函数来完成,它们就是和。
5、C++中标识符的作用域分为函数原型作用域、、局部作用域(块作用域)和。
6、在类的继承关系中,父类又称为,子类又称为。
7、在C++中,当类的继承方式为公有继承时,基类的公有成员和成员的访问属性在派生类中不变,而基类的成员不可直接访问。
8、类型兼容规则是指在需要基类对象的任何地方,都可以使用类的对象来替代。
9、多态从实现的角度来讲可以划分为两类:的多态和的多态。
三、程序阅读(共25分)1、在答题区给出下面程序的运行结果(4分)--函数调用(传值、传地址、引用)#include<iostream.h>void swap(int x,int &y){int temp;temp=x;x=y;y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,b);cout<<"a="<<a<<" b="<<b<<"\n";}#include<iostream.h>void swap(int x,int *y){int temp;temp=x;x=*y;*y=temp;}void main(){int a=40,b=10;cout<<"a="<<a<<" b="<<b<<"\n";swap(a,&b);cout<<"a="<<a<<" b="<<b<<"\n";}2、在答题区给出下面程序的运行结果(5分)#include "iostream.h"class test{private:int num;float fl;public:test();int getint(){return num;}int getfloat(){return fl;}~test();};test::test(){cout<<"lnitalizing default"<<endl;num=0;fl=0.0;}test::~test(){cout<<"Desdtructor is active"<<endl;}int main( ){test array[2];cout<<array[1].getint()<<" "<<array[1].getfloat()<<endl; }3、在答题区给出下面程序的运行结果(4分)#include<iostream.h>class A{ int a1,a2;public:A(int i,int j) {a1=i;a2=j;}void print() {cout<<a1<<","<<a2<<endl;}};class B:public A{A a;int b;public:B(int i,int j,int k,int m,int n):A(i,j),a(k,m) { b=n;} void print();};void B::print(){A::print();a.print();cout<<"b="<<b<<endl;}void main(){B b(4,5,6,7,8);b.print();}4、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class Pet{static int m_No;public:Pet() {cout<<"NO"<<++m_No<<"Pet() is called"<<endl;} };class GrandParent{public:GrandParent() { cout<<"GrandParent() is called"<<endl;} };class Mother:virtual public GrandParent{public:Mother(){cout<<"Mother() is called"<<endl;}};class Father:virtual public GrandParent{public:Father(){cout<<"Father() is called"<<endl;}};class Baby:public Mother,public Father{Pet mPet1,mPet2;public:Baby() {cout<<"Baby() is called"<<endl;}};int Pet::m_No=0;void main(void){ Baby zBaby;}5、在答题区给出下面程序的运行结果(6分)#include<iostream.h>class fruit{int Qlevel;public:fruit() {Qlevel=3; cout<<"请尝水果"<<endl; }virtual void taste1(){cout<<"这水果味道好极了"<<endl;} void taste2(){cout<<"我是美国"<<Qlevel<<"号苹果"<<endl;}int & QualityLevel (int & zQL ) {zQL=Qlevel; return Qlevel;}};class Orange: public fruit{public:Orange() {cout<<"请尝橙子"<<endl;}void taste1() {cout<<"这橙子味道美极了"<<endl;}void taste2() { cout<<"我是美国特大号橙子"<<endl;}};void main(){Orange zOrange;fruit *ptr=&zOrange;int zQL=8;ptr->taste1();ptr->QualityLevel(zQL)=1;cout<<"我是中国第"<<zQL<<"号大橙子"<<endl;zOrange.taste1();ptr->taste2();}四、程序填空(共10分,每空2分)1、请将以下程序中不完整的地方补全,使程序执行后输出:Width:10 Height:20(本小题4分,每空2分)--封装、继承、包含多态#include <iostream>using namespace std;class Rectangle{public:(1) {Rectangle(int w,int h)width=w;height=h;}friend ostream &operator<<(ostream & out,const Rectangle &rec);private:int width,height;};ostream & operator<<(ostream & out,const Rectangle & rec){out<<"Width:"<<rec.width<<" "<<"Height:"<<rec.height<<endl;return out;}int main(){Rectangle rec(10,20);(2) cout<<rec;return 0;}2、请将以下程序中不完整的地方补全,使得执行后的输出和代码后提示的输出一致。