c++面向对象程序设计试题和答案经典题目)
《面向对象程序设计c》综合复习题集及答案详解

《面向对象程序设计c》综合复习题集及答案详解综合复习题集一、单选题1.C++源程序文件的缺省扩展名为(A)。
A.cppB.e某eC.objD.lik2.由C++源程序文件编译而成的目标文件的缺省扩展名为(C)。
A.cppB.e某eC.objD.lik3.由C++目标文件连接而成的可执行文件的缺省扩展名为(B)。
A.cppB.e某eC.objD.lik4.编写C++程序一般需经过的几个步骤依次是()。
A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()。
A.caeforintB.defaultthenwhileC.boolclalongD.gotoreturnchar6.能作为C++程序的基本单位是()。
A.字符B.语句C.函数D.源程序文件7.程序中主函数的名字为()。
A.mainB.MAINC.MainD.任意标识符8.C++程序的基本模块为()。
A.表达式B.标识符C.语句D.函数9.可用作C++语言用户标识符的一组标识符是()。
A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaeD.2aDOizeof10.存储以下数据,占用存储字节最多的是()。
A.0B.‘0’C.“0”D.0.011.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车12.设”inta=12;”,则执行完语句”a+=a某a;”后,a的值是()。
A.12B.144C.156D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。
A.1.0/a某b某cB.1/(a某b 某c)C.1/a/b/(float)cD.1.0/a/b/c14.设”inta=15,b=26;”,则”cout<A.15B.26,15C.15,26D.2615.设某是一个bool型的逻辑量,y的值为10,则表达式某&&y的值为()。
c面向对象程序设计期末考试题及答案

c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 下列哪个是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 所有选项都是2. 在Java中,以下哪个关键字用于定义类?A. classB. structC. typeD. classdef3. 以下哪个是Java中不允许的类成员访问修饰符?A. publicB. protectedC. privateD. global4. 以下哪个是Java中实现多态的方式?A. 函数重载B. 函数重写C. 接口D. 抽象类5. 在Java中,哪个关键字用于声明一个方法,该方法没有返回值?A. voidB. returnC. noneD. null6. 以下哪个是Java中创建对象的语法?A. new ClassName();B. create ClassName;C. make ClassName;D. ClassName();7. 在Java中,以下哪个是正确的构造方法声明?A. public ClassName();B. public ClassName new();C. public new ClassName();D. public ClassName create();8. 以下哪个是Java中实现继承的方式?A. 使用extends关键字B. 使用implements关键字C. 使用interface关键字D. 使用new关键字9. 在Java中,以下哪个关键字用于实现接口?A. implementsB. extendsC. interfaceD. class10. 以下哪个是Java中实现封装的方式?A. 使用public关键字B. 使用private关键字C. 使用protected关键字D. 使用default关键字答案:1. D2. A3. D4. B5. A6. A7. A8. A9. A10. B二、简答题(每题10分,共20分)1. 简述面向对象程序设计中的“封装”概念及其重要性。
c面向对象程序设计考试试卷(详细讲解).doc

c面向对象程序设计考试试卷(详细讲解).docC++面向对象程序设计考试试卷(详细讲解)一、单项选择题(共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#includeint add(int a,int b);void main(){extern int x,y;cout<<add(x,y)<<endl;< bdsfid="108" p=""></add(x,y)<<endl;<>}int x=20,y=5;int add(int a,int b){int s=a+b;- 1 -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、虚函数的定义是在基类中进行的,定义时需要冠以关键字 CA.static B.frendC.virtualD.public20、在 C++中串流类是在头文件 strstrea.h 中定义的,下列不属于串流类的是) CA.strstream B.ostrstreamC.ofstream D.istrstream二、填空题(共9 题 16 空,每空 1 分,共 16 分)1、函数重载时,编译系统会根据 __形参的类型 __或__形参的个数__来区分。
《面向对象程序设计C 》期末试卷及答案

选择题1.在C++中,函数原型不能标识( D )A.函数的返回类型B.函数参数的个数C.函数参数类型D.函数的功能2.在C++程序中,对象之间的相互通信通过( B )A.继承实现B.调用成员函数实现C.封装实现D.函数重载实现3.对于任意一个类,析构函数的个数最多为( B )A.0B.1C.2D.34.友元关系不能( A )A.继承B.是类与类的关系C.是一个类的成员函数与另一个类的关系D.提高程序的运行效率5.语句ofstream f(″SALARY.DAT″,ios::app|ios::binary);的功能是建立流对象f,试图打开文件SALARY.DAT 并与之连接,并且( A )A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件6.下面说法正确的是( B )A.内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B.内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C.类的内联函数必须在类体内定义D.类的内联函数必须在类体外通过加关键字inline 定义7.可以用p.a 的形式访问派生类对象p 的基类成员a,其中a 是( D )A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员8.在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( C )A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针9. 派生类对象可访问基类中的什么成员( A )A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员10. 定义析构函数时,应该注意(C)A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句11. 如果类A被说明成类B的友元,则( D )。
c面向对象程序设计期末考试题及完整参考答案

2.在类中未说明访问权限的情况下,所有成员都是()的
A)共有的B)私有的C)内部的D)保护的
3.关于数组型参数下面那个说法是错误的()
A)方法中只允许定义一个数组型参数;
B)数组型参数所定义的数组必须是一维数组;
C)数组型参数可以作为引用参数或者输出型参数使用;
}
}
}
7、编程题(共20分)
定义一个教师类Teacher,具体要求如下:
1)私有字段姓名name(string)、性别sex(SexFlag)、年龄age(int,>=0)和工号no(string)等信息,其中SexFlag为枚举类型,包括Male(表示男性)、Female(表示女性),并且sex字段缺省为男性。
01223,王五,男,35岁
7)要求必须按照一个完整的C#程序结构来写,保证程序正确运行。
洛阳理工学院2011/2012学年 第一学期 期末考试试题卷(A)
参考答案及评分标准
课程:面向对象程序设计适用班级:B090501/2/3/4
8、填空题(每空1分,共20分)
1.属性操作
2.泛化依赖泛化
3.命名空间 主程序方法 程序集
}
public Truck(int weight, int load)
: base(50)
{
this.weight = weight;
this.load = load;
}
publicnewfloat Run(float distance) //重载
{
return (1 + load / Weight / 2) * base.Run(distance);
c面向对象程序设计考试试题

c面向对象程序设计考试试题一、选择题(每题2分,共20分)1. 面向对象程序设计中,以下哪一个不是基本特征?A. 封装B. 继承C. 多态D. 过程2. 在Java中,以下哪个关键字用于定义类?A. classB. functionC. structD. type3. 以下哪个是Java中不允许的类名?A. MyClassB. 1MyClassC. MyClass1D. MyClass$4. 在Java中,以下哪个是正确的构造方法声明?A. void MyClass() {}B. int MyClass() {}C. MyClass MyClass() {}D. MyClass() {}5. 以下哪个关键字用于实现类的继承?A. extendsB. implementsC. overrideD. abstract6. 以下哪个关键字用于声明接口?A. classB. interfaceC. abstractD. enum7. 在Java中,以下哪个关键字用于实现多态?A. newB. superC. overrideD. implements8. 在Java中,以下哪个关键字用于定义包?A. packageB. importC. classD. interface9. 以下哪个是Java中的访问控制修饰符?A. publicB. staticC. finalD. void10. 在Java中,以下哪个是正确的方法重载声明?A. void display(int a, int b)B. int display(int a, int b)C. void display(int a, int b) {}D. void display(int a, int b) { return a + b; }二、简答题(每题10分,共30分)1. 简述面向对象程序设计中的封装、继承和多态三个基本特征。
2. 解释Java中的接口和抽象类的区别。
C-面向对象程序设计习题解答(全)Word版

《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。
第二章对C语言的基础扩充................................................................... 错误!未定义书签。
第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。
第四章类和对象的进一步解析.............................................................. 错误!未定义书签。
第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。
第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。
c#面向对象程序设计试题(附带答案)

c#试题1.在对SQL Server数据库操作时应选用(a)。
a)SQL Framework数据提供程序;b)OLE Framework数据提供程序;c) Framework数据提供程序;d) Framework数据提供程序;2.下列选项中,(c)是引用类型。
a)enum类型b)struct类型c)string类型d)int类型3.关于中的代码隐藏文件的描述正确的是(a)a)Web窗体页的程序的逻辑由代码组成,这些代码的创建用于与窗体交互。
编程逻辑唯一与用户界面不同的文件中。
该文件称作为“代码隐藏”文件,如果用C#创建,该文件将具有“.ascx.cs”扩展名。
b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。
c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库(.dll)文件。
d)以上都不正确。
4.以下描述错误的是(a)a)在C++中支持抽象类而在C#中不支持抽象类。
b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员,在C#中没有头文件并且在同一处声明和定义类的成员。
c)在C#中可使用new修饰符显式隐藏从基类继承的成员。
d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。
5.C#的数据类型有(b)a)值类型和调用类型;b)值类型和引用类型;c)引用类型和关系类型;d)关系类型和调用类型;6.下列描述错误的是(d)a)类不可以多重继承而接口可以;b)抽象类自身可以定义成员而接口不可以;c)抽象类和接口都不能被实例化;d)一个类可以有多个基类和多个基接口;7.在DOM中,装载一个XML文档的方法(b)a)save方法b)load方法c)loadXML方法d)send方法8.下列关于构造函数的描述正确的是(c)a)构造函数可以声明返回类型。
b)构造函数不可以用private修饰c)构造函数必须与类名相同d)构造函数不能带参数9.以下是一些C#中的枚举型的定义,其中错误的用法有(a)a)public enum var1{Mike=100,Nike=102,Jike}b)public enum var1{Mike=100,Nike,Jike}c)public enum var1{Mike=-1,Nike,Jike}d)public enum var1{Mike,Nike,Jike}10.int[][]myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}};myArray3[2][2]的值是(d)a)9b)2c)6d)越界11.接口是一种引用类型,在接口中可以声明(a),但不可以声明公有的域或私有的成员变量a)方法、属性、索引器和事件;b)方法、属性信息、属性;c)索引器和字段;d)事件和字段;框架中,服务器控件是为配合Web表单工作而专门设计的。
《面向对象程序设计C--》期末试卷及答案

一、选择填空题(共20小题,每小题2分,共40分)。
1. 关于C++与C语言关系的描述中,(d)是错误的。
a.C语言是C++语言的一个子集b.C语言与C++语言是兼容的c.C++语言对C语言进行了一些改进d.C++语言和C语言都是面向对象的2.按照标识符的要求,(a )符号不能组成标识符。
a.连接符b.下划线c.大小写字母d.数字字符3. 为了避免嵌套的if-else语句的二义性,C语言规定else总是与(c)组成配对关系。
a.缩排位置相同的ifb.在其之前未配对的ifc.在其之前未配对的最近的ifd.同一行上的if4. 在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是(c)。
a.1b.0c.6d.25. 设"char **s;",以下正确的表达式是(b)。
a.s="computer";b.*s="computer";c.**s="computer";d.*s='c';6. 对于"int *pa[5];"的描述中,(d )是正确的。
a.pa是一个指向数组的指针,所指向的数组是5个int型元素b.pa是一个指向某数组中第5个元素的指针,该元素是int型变量c.pa [5]表示某个元素的第5个元素的值d.pa是一个具有5个元素的指针数组,每个元素是一个int型指针7. 在下列表示引用的方法中,(a )是正确的。
已知:int m=10;a.int &x=m;b.int &y=10;c.int &z;d.float &t=&m;8. 下列for循环的次数为(b)。
for(i=0, x=0; !x&&i<=5; i++)a.5b.6c.1d.无限9. 对于C/C++语言的函数,下列叙述中正确的是(a)。
面向对象程序设计-试卷[附参考答案]
![面向对象程序设计-试卷[附参考答案]](https://img.taocdn.com/s3/m/d7e7934be45c3b3567ec8b8c.png)
《面向对象程序设计》试卷第一学期“本科”期末考试计算机专业面向对象程序设计试题一、单项选择题(每小题1分,共20分)1.由C++源程序文件编译而成的目标文件的默认扩展名为(C)。
A.cppB.exeC.objD.lik2.设x和y均为bool量,则x&&y为真的条件是(A)。
A. 它们均为真B.其中一个为真C. 它们均为假D. 其中一个为假3.在下面的二维数组定义中,正确的语句是(C)。
A.int a[5][];B.int a[][5];C.int a[][3]={{1,3,5},{2}};D.int a[][10];4.在文件包含命令中,被包含文件的扩展名(C)。
A.必须是 .h;B.不能是 .h;C.可以是 .h或 .cpp;D.必须是 .cpp;5.要使语句“p=new int[10][20]”正确,p应事先定义为(D)。
A.int *p;B.int **p;C.int *p[20];D.int (*p)[20];6.在关键字public后定义的成员为该类的(B)成员。
A.私有B. 公有C.保护D.任何7.假定AA为一个类,a为该类私有的数据成员,若要在该类的一个成员函数中访问它,则书写格式最好为(B)。
A.aB.AA::aC.a( )D. AA::a( )8.队列具有(A)的操作特性。
A.先进先出B.先进后出C.进出无序D.仅进不出9.假定AB为一个类,则执行“AB a,b(3),*p”语句时共调用该类构造函数的次数为(D)。
A. 5B. 4C. 3D. 210.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(B)。
A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符二、填空题(每空2分,共20分)1.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到下一行的开始位置。
【精品】C++面向对象程序设计题库(含答案)

【精品】C++面向对象程序设计题库(含答案)C++面向对象程序设计试题集一、填空题(每空2分,共20分)1. 设a、b、c都是int型变量,则a=(b=4)+(c=2)后,a值为_ _,b值为。
2. 在派生类的成员中有公有成员、、、四类成员。
3. 类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
class Sample{public: Sample(int data=0);Private: int data;};Sample::Sample(int data){4. 面向对象程序设计的机制提供了重复利用程序资源的一种途径。
5. 继承发生在利用现有类派生新类时,其中现有类称为,或父类;派生的新类称为,或。
6. 若表达式(x+(y-z)*(m/n))+3中的变量均为double型,则表达式值的类型为。
7. 已知数组a 中的元素个数为n,下列语句的作用是将下标为i 的元素移动到下标为i,1 的单元,其中1?i,n。
例如,当n=4,a 中原有数据为1,2,3,4 时,则移动后a 中元素为2,3,4,4。
请将语句补充完整:for(int i=0;i<n-1;i++) a[i]= 。
8. 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的,共同行为被描述为类中的。
9. 类Sample的构造函数将形参data赋值给数据成员data。
请将类定义补充完整。
class Sample{public:Sample(int data=0);Private:int data; };Sample::Sample(int data){}10. 实现运行时多态,要使用函数。
11. 设A为test类的对象且赋有初值,则语句test B(A); 表示。
12. 在MyClass 类的定义中,对赋值运算符=进行重载。
请将画线处缺失的部分补充完整。
MyClass::operator=(const MyClass rhs) {if(this=&rhs) return *this;value=rhs. value;return *this; }13. C++语言中的每条基本语句以 ________作为结束符,每条复合语句以________ 作为结束符。
《面向对象程序设计c 》综合复习题集及答案详解

《面向对象程序设计》综合复习题集四、程序填充1. 斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。
求斐波那契数列中的前20个数,要求每行输出5个数。
#include<iostream.h>void main() {int f,f1,f2,i;cout<<”斐波那契数列:\n”;f1=0; f2=1;cout<<setw(6)<<f1<<setw(6)<<f2;for(i=3;i<=20;i++) {f=______(1)______;cout<<setw(6)<<f;if(_____(2)______) cout<<endl;f1=f2;f2=____(3)_______;}cout<<endl;}(1) (2) (3)2. 计算∑=+ -10 11!)1(iiiix的值。
#include<iostream.h>void main(){double x,p1=1,p2=1,s=0;int i,j=1;cout<<"输入x的值:";cin>>x;for(i=1;i<=10;i++) {p1*=___(1)_____;p2*=____(2)____;s+=j*p1/p2; //j的值为(-1)i+1j=____(3)____;}cout<<s<<endl;}(1) (2) (3)17. 假定有定义为“struct NODE{int data; NODE* next;};”,下面算法根据table 数组中的n个元素建立一个表头指针为L的链表,链表中结点值的顺序与数组元素值的顺序相同。
void f5(NODE*& L, int table[], int n){if(n<=0) {L=NULL; return;}L=new NODE; //生成附加的头结点int i=0;NODE* p=L;while(___(1)___) {p=p->next=___(2)___;p->data=___(3)___;i++;}p->next=NULL; //把最后一个结点的指针域置空p=L;L=L->next; //使L指向链表的第一个带值的结点delete p;}(1) (2) (3)22. 已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值赋给s,给v 动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。
c面向对象程序的设计试题和答案经典题目

一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。
5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。
6、友员函数是用关键字_____friend_______修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。
8、new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是(D)。
(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
《面向对象程序设计C》期末试卷及标准答案(好的)

《⾯向对象程序设计C》期末试卷及标准答案(好的)《⾯向对象程序设计C++》期末考试试卷(A)班级:姓名:学号:分数:试卷说明:本套试题共四个⼤题,全部题⽬都答在答题纸上,写在其他地⽅均⽆效。
(答题纸在本套试卷的第10页上)⼀、选择题(每⼩题2分,共40分)1、C++是( C )。
A. ⾯向对象的程序设计语⾔B. ⾯向过程的程序设计语⾔C. 既⽀持⾯向对象的程序设计⼜⽀持⾯向过程的程序设计的混合型语⾔D. ⾮结构化的程序设计语⾔2、⾯向对象程序设计思想的主要特征中不包括( D )。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执⾏时,从键盘输⼊:Microsoft Visual Studio 6.0!所得的结果是str=( B )。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下⾯的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下⾯函数调⽤中,不合法的是( C )。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是( C )。
C. float sum(float x, float y);D. double sum(int y, int x);6、下列表⽰引⽤的⽅法中,( A )是正确的。
已知:int a=1000;A. int &x=a;B. char &yC. int &z=1000;D. float &t=&a7、在⼀个函数中,要求通过函数来实现⼀种不太复杂的功能,并且要求加快执⾏速度,选⽤( A )。
(完整版)c++面向对象程序设计试题和答案

2、在C++类中可以包含—私有、_公有和—保护
三种具有不同访问控制权的成员。
3、 定义类时,在类头中将使用关键字___class来表示类定义的开始。
4、 如果一个类中至少有一个纯虚函数,则该类称为抽象类。
5、C++类的组成包括数据成员和—成员函数,友元—不是(是、不是)
该类的成员函数。
6、 友员函数是用关键字friend修饰的非成员函数。
20、C+冲声明常量的关键字是()。
A. const B. exter n C. public D. enum
三、改错题(每处2分,共6分)
1、使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但
该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
member=0
member=5
men ber=10
源程序文件main.cpp清单如下:
#in clude <iostream.h>
class MyClass
{
public:
MyClass(i nti){member=i;}
void SetMember(i nt m){member=m;}
int GetMember()c on st{return men ber;}
(C)构造函数无任何函数返回类型
(D)构造函数有且只有一个
5、派生类可以访问其基类的(
(A)公有成员
(C)私有派生
6、下列关于运算符重载的描述中,错误的是(
运算符重载不可以改变操作数的个数 运算符重载不可以改变运算符的功能 运算符重载不可以改变结合方向 运算符重载不可以改变运算优先级
c面向对象程序设计考试试题

c面向对象程序设计考试试题一、单项选择题(每题2分,共20分)1. 在面向对象编程中,封装的主要目的是:A. 提高代码的可读性B. 隐藏对象的内部状态和实现细节C. 增加对象的可访问性D. 减少对象的内存占用2. 下列关于继承的描述,错误的是:A. 继承可以提高代码的复用性B. 继承可以实现多态性C. 继承是一种“强耦合”关系D. 继承可以实现代码的扩展和修改3. 在Java中,一个类可以继承几个其他类:A. 只能继承一个类B. 可以继承多个类C. 可以继承任意数量的类D. 不能继承任何类4. 下列哪个关键字在C++中用于定义抽象类:A. classB. abstractC. virtualD. interface5. 在面向对象编程中,多态性的主要优点是:A. 减少程序的复杂性B. 提高程序的运行效率C. 增加程序的内存消耗D. 减少程序的可读性6. 在Java中,下列哪个修饰符可以将一个方法的访问级别限制为仅在定义它的包内可见:A. privateB. default(即无修饰符)C. protectedD. public7. 下列关于接口的描述,正确的是:A. 接口可以包含具体实现的方法B. 接口中的方法默认都是public的C. 一个类可以实现多个接口D. 一个接口可以继承另一个接口8. 在C++中,下列哪个特性可以用来实现运行时多态:A. 函数重载B. 虚函数C. 模板D. 宏定义9. 下列哪个不是面向对象编程的基本特征:A. 封装B. 继承C. 多态D. 过程化10. 在设计类的时候,下列哪个原则提倡应该追求尽可能高的内聚和尽可能低的耦合:A. 单一职责原则B. 开闭原则C. 里氏替换原则D. 高内聚低耦合原则二、简答题(每题10分,共30分)1. 请简述面向对象编程中的“组合”和“聚合”的区别,并给出各自的应用场景。
2. 解释什么是设计模式,并至少列举三种常见的设计模式及其主要特点。
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;______p1.show()_________//通过对象p1访问show函数_______p.show()_______//通过指针p访问show函数}2、在C++类中可以包含___公共___、___保护_____和___私有__三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class _____来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为_______抽象类_________。
5、C++类的组成包括数据成员和______成员函数________,友元__是___(是、不是)该类的成员函数。
6、友员函数是用关键字_____friend_______修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=____11_____,j=___11______。
8、 new的功能是_______分配内存空间______,delete的功能是______释放内存空间______________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是( D)。
(A)数据封装(B)继承(C)多态性(D)模板2、( B )是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
(A)公有成员(B)保护成员(C)私有派生(D)公有和保护成员6、下列关于运算符重载的描述中,错误的是()。
(A)运算符重载不可以改变操作数的个数(B)运算符重载不可以改变运算符的功能(C)运算符重载不可以改变结合方向(D)运算符重载不可以改变运算优先级7、C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()(A)面向过程(B)面向对象(C)安全性(D)复用性8、对于类中定义的成员,其隐含访问权限为()。
A.public B.protectedC.private D.static9、下面有关重载函数的说法中正确的是()(A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;(C)重载函数必须有不同的形参列表(D)重载函数名可以不同;10、有如下的对类“CSample”的说明,其中()是错误的。
class CSample {A.int a=23;B.CSample();public:C.CSample(int val);D.~ CSample();11、在int a=3,int *p=&a;中,*p的值是( )A.变量a的地址值B.无意义C.变量p的地址值D.312、每个类()构造函数。
(A)只能有一个(B)只可有公有的(C)可以有多个(D)只可有缺省的13、在一个类中可以对一个操作符进行()重载。
(A)1 种(B)2 种以下(C)3 种以下(D)多种14、在公有继承的情况下,基类非私有成员在派生类中的访问权限()(A)受限制(B)保持不变(C)受保护(D)不受保护15、应在下列程序划线处填入的正确语句是()#include <iostream.h>class Base{public:void fun(){cout<<"Base::fun"<<ENDL;}};class Derived:public Base{ void fun(){_____________//显示调用基类的函数fun()cout<<"Derived::fun"<<ENDL;}};(A)fun(); (B)Base.fun(); (C)Base::fun(); (D)Base->fun();16、执行下面的程序将输出()#include <iostream.h>class BASE{char c;public:BASE(char n):c(n){}virtual ~BASE(){cout<<c;}};class DERIVED:public BASE{char c;public:DERIVED(char n):BASE(n+1),c(n){}~DERIVED(){cout<<c;}};int main(){DERIVED a('X');return 0;}(A)XY (B)YX (C)X (D)Y17、下面描述中,表达错误的是()(A)公有继承时基类中的public成员在派生类中仍是public的(B)公有继承是基类中的private成员在派生类中仍是private的(C)公有继承时基类中的protected成员在派生类中仍是protected的(D)私有继承时基类中的public成员在派生类中是private的18、定义析构函数时,应该注意()(A)其名与类名完全相同(B)返回类型是 void 类型(C)无形参,也不可重载(D)函数体中必须有 delete 语句19、对于在类中定义的静态数据成员,下面正确的说法是()A.该类的每个对象中都有一个静态数据成员B.对象创建时产生C.在类外进行初始化D.既可以在类外初始化,也可以在类内初始化20、C++中声明常量的关键字是()。
A. constB. externC. publicD. enum三、改错题(每处2分,共6分)1、使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:member=0member=5menber=10源程序文件main.cpp清单如下:#include <iostream.h>class MyClass{public:MyClass(int i){member=i;}void SetMember(int m){member=m;}int GetMember()const{return menber;}void print()cont{cout<<"member="<<MEMBER<<ENDL;}private:int member;};voed main(){MyClass obj1; //更正_____________________________obj1.print();MyClass obj2(3);obj1.member=5; //更正__________________________MyClass.SetMember(10); //更正_______________________obj1.print();obj2.print();}四、 写出下列程序的执行结果(每小题5分,共20分)#include<iostream.h>class Sample{ int n;public:Sample(int i){n=i;}friend int add(Sample &s1,Sample &s2);};int add(Sample &s1,Sample &s2){return s1.n+s2.n;}void main(){S ample s1(10),s2(20);cout<<add(s1,s2)<<endl;}执行结果是:#include<iostream.h>int add(int x,int y){return x+y+1;}double add(double x,double y){return x+y-1;}void main(){int a=2,b=4;double c=2.6,d=7.4;cout<<add(a,b)<<","<<add(c,d)<<endl;}执行结果是:3、#include<iostream.h>class A{public:int n;};class B:virtual public A{}; class C:virtual public A{}; class D:public B,public C{int getn(){return B::n;}};void main(){D d;d.B::n=10;d.C::n=20;cout<<d.B::n<<","<<d.C::n<<endl; }执行结果是:4、#include <iostream.h>class myclass{int a,b;static int s;public:myclass(int x,int y){a=x;b=y;s++;}void print(){cout<<s<<endl;}};int myclass::s=0;void main(){myclass m1(1,2),m2(4,5),m3(6,7);m1.print();m2.print();m3.print();}执行结果是:五、编程题(每题10分、共30分)1、测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
(10分)2、定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。
(10分)3、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。
小车类car是它的派生类,其中包含载人数passenger_load。
每个类都有相关数据的输出方法。
在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置并显示。
(10分)一、填空题(每空1分,共14分)(1)p1.show(); p->show() (2)公有、私有、保护(3)class (4)抽象类(5)成员函数、不是(6)friend (7)11、11 (8)动态申请内存空间、释放由new申请的空间二、选择题(每小题1.5分,共30分)1、D2、B3、C4、D5、D6、B7、B8、C9、C 10、A 11、D 12、C 13、D 14、B 15、C 16、A 17、B 18、C 19、C 20、A三、改错题(每错2分,共6分)MyClass obj1(0); obj1.SetMember(5); obj2.SetMember(10);四、写出下列程序的执行结果(每小题5分,共20分)(1)30 (5分)(2)7 9 (每个2.5分)(3)20 20 (每个2.5分)(4)3(2分)3(2分)3(1分)五、编程题(每题10分、共30分)1、#include <iostream.h>#include <math.h>class rectangle //(2分){private:int x1,y1,x2,y2; // (2分)public:rectangle(int xx1,int yy1,int xx2,int yy2) //(1分) {x1=xx1;y1=yy1;x2=xx2;y2=yy2;}int getarea() //(2分){return abs((x2-x1)*(y1-y2));}void main(){rectangle rect1(3,7,8,5); (2分)cout<<rect1.getarea()<<endl; (1分)}2、(10分)#include <iostream.h>class car;(1分)class boat{private:int weight; //(1分)public:boat(int w):weight(w){} //(1分)friend int totalweight(boat b1,car c1); //(2分) };class car{ /(1分)private:int weight; (1分)public:car(int w):weight(w){};friend int totalweight(boat b1,car c1); (1分) };int totalweight(boat b1,car c1) //(1分)return b1.weight+c1.weight;}void main(){car c1(1000);boat b1(2000);cout<<totalweight(b1,c1)<<endl;(1分)}3、(10分)#include<iostream.h>class vehicle // 定义汽车类 (3分){protected:int wheels; // 车轮数float weight; // 重量public:vehicle(int wheels,float weight);int get_wheels();float get_weight();float wheel_load();void show();};class car:public vehicle // 定义小车类 (3分)int passenger_load; // 载人数public:car(int wheels,float weight,int passengers=4);int get_passengers();void show();};vehicle::vehicle(int wheels1,float weight1) //(1分) {wheels=wheels1;weight=weight1;}int vehicle::get_wheels(){return wheels;}float vehicle::get_weight(){return weight;}void vehicle::show() (1分){cout << "车轮:" << wheels << "个" << endl;cout << "重量:" << weight << "公斤" << endl;car::car(int wheels, float weight,int passengers) :vehicle(wheels, weight){passenger_load=passengers;}int car::get_passengers (){return passenger_load;}void car::show(){cout <<" 车型:小车" << endl;vehicle::show();cout << "载人:" << passenger_load << "人" << endl; cout << endl;}void main (){car car1(4,2000,5); (1分)cout << "输出结果" << endl;car1. show (); (1分)}。