《面向对象程序设计C》期末试卷及标准答案(B)
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. 简述面向对象程序设计中的“封装”概念及其重要性。
《面向对象程序设计》期末考核试题样例及解答
《面向对象程序设计》期末考核试题样例及解答一、单项选择(每小题1分,12小题,共12分)1. 源程序文件的缺省扩展名为( )。
A. B. C. D.2. x>0 5的相反表达式为()。
A. x<=0 5B. x<=0 5C. x>0 5D. x>0 53. 在下面的字符数组定义中,有语法错误的是( )。
A. a[20]=“”;B. a[]=“55.”;C. a[15];D. a[10]=’5’;4. 以下正确的函数原型语句是( )。
A. ( y)B. ( y)C. ();D. ( );5. 在下面存储类中,()的对象不是局部变量。
A. 外部静态类B. 自动类C. 函数形参D. 寄存器类6. 假定有“ { [40]; ;}; * ;”,则正确的语句是()。
A. (>,””);B. (,””);C. (*,””);D. ((*)->,””);7. 软件产品所具有的全部或部分地再用于新的应用的能力称为该软件的()。
A. 可维护性B. 可复用性C. 兼容性D. 正确性8. 在多文件结构的程序中,通常把含有()函数的文件称为()。
A. 主文件B. 实现文件C. 程序文件D. 头文件9. 在一个用链表实现的队列类中,假定每个结点包含的值域用表示,包含的指针域用表示,链队的队首指针用表示,队尾指针用表示,若链队为空,则进行插入时必须把新结点的地址赋给( )。
A. B.C. 和D. 或10. 假定为一个类,则执行“ a, b(2), c[3], *;”语句时共调用该类无参构造函数的次数为( )。
A. 5B. 6C. 3D. 411. 引入友元的主要目的是为了()。
A. 增强数据安全性B. 提高程序的可靠性C. 提高程序的效率和灵活性D. 保证类的封装性12. 如果是类B在类A的基础上构造,那么,就称()。
A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类二、填空(每空1分,15小题,共18分)1. 语言是在语言的基础上发展起来的。
面向对象程序设计C++期末考试题及答案
面向对象程序设计C++期末考试题及答案一、选择题(每题5分,共40分)1. 下面哪个不是面向对象程序设计的特点?A. 封装B. 继承C. 多态D. 顺序结构答案:D2. C++中,构造函数的名称与类名相同,下列关于构造函数的说法错误的是:A. 构造函数可以重载B. 构造函数不能有返回值C. 构造函数可以没有参数D. 构造函数的参数列表中不能有默认参数答案:D3. 在C++中,析构函数的名称是:A. ~类名B. 类名~C. 析构函数D. ~析构函数答案:A4. 关于静态成员的说法,下列正确的是:A. 静态成员函数不能访问非静态成员B. 静态成员函数只能访问静态成员C. 静态成员变量在类的每个对象中都有独立的副本D. 静态成员变量在类的所有对象中共享一个副本答案:D5. 下面哪个操作符不能用于重载?A. =B. +C. []D. :答案:D6. 关于虚函数的说法,下列错误的是:A. 虚函数可以是构造函数B. 虚函数可以是析构函数C. 虚函数必须有函数体D. 虚函数的返回类型可以是void答案:A7. 在C++中,纯虚函数的定义是:A. virtual 返回类型函数名(参数列表) = 0;B. virtual 返回类型函数名(参数列表) {}C. 返回类型函数名(参数列表) = 0;D. 返回类型函数名(参数列表) {}答案:A8. 下面哪个关键字用于定义模板类?A. templateB. typenameC. classD. template class答案:A二、填空题(每题5分,共30分)1. 面向对象程序设计中的三大特性是:________、________、________。
答案:封装、继承、多态2. 在C++中,构造函数的调用顺序是:先调用基类的构造函数,再调用________的构造函数。
答案:派生类3. 在C++中,析构函数的调用顺序是:先调用________的析构函数,再调用基类的析构函数。
最新国家开放大学电大本科《面向对象程序设计》期末题库及答案
最新国家开放大学电大本科《面向对象程序设计》期末题库及答案考试说明:本人针对该科精心汇总了历年题库及答案,形成一个完整的题库,并且每年都在更新。
该题库对考生的复习、作业和考试起着非常重要的作用,会给您节省大量的时间。
做考题时,利用本文档中的查找工具,把考题中的关键字输到查找工具的查找内容框内,就可迅速查找到该题答案。
本文库还有其他网核及教学考一体化答案,敬请查看。
《面向对象程序设计》题库及答案一一、单项选择题(每小题2分,共20分)1.设x和y均为bool量,则x||y为假的条件是( )。
A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假2.假定一个二维数组的定义语句为“int a[3][4]={{3,4},{2,8,6}}”,则元素a[1][2]的值为( )。
A.2 B.4 C.6 D.83.假定P是具有int* *类型的指针变量,则给P赋值的正确语句为( )。
A.p=new int B.p=new int*C.p=new int** D.p=new int[10]4.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的( )。
A.可维护性 B.可复用性C.兼容性 D.正确性5.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。
‘A.in B.inlineC.inLine D.InLiner .6.在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队列长度为length,则队尾的后一个位置为( )。
A.1ength+1 B first+lengthC.(first+1ength—1)%MS D.(first+length)%MS7.假定一个类的构造函数为“A(int aa,int bb){a=aa;b=aa*bb;)”,则执行“A x(4,5);”语句后,X.a和x.b的值分别为( )。
《面向对象程序设计C 》期末试卷及标准答案
《面向对象程序设计C++》期末考试试卷(B)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( )就是错误的。
A.C语言就是C++语言的一个子集B.C语言与C++语言就是兼容的C.C++语言对C语言进行了一些改进D.C++语言与C语言都就是面向对象的2、已知:int m=10; 下列表示引用的方法中,( )就是正确的。
A.int &x=m;B.int &y=10;C.int &z;D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的就是( )。
A.testDefaulParam(5);B.testDefaulParam(5,8);C.testDefaulParam(5,'#');D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的就是( )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的就是( )。
A.类就是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了( )次构造函数。
A.0B.1C.2D.37、有关析构函数的说法,不正确的就是( )。
A.析构函数有且仅有一个B.析构函数与构造函数一样可以有形参C.析构函数的功能就是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的就是( )。
(完整word版)《面向对象程序设计C 》期末试卷及标准答案(B)
《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第8页上)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,( A )是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是(A )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了( D )次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是(B )。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是( C )。
面向对象程序设计C#.NET-期末试卷及答案
期末考试试卷课程名称:面向对象程序设计C#.NET 适用年级/专业: 081/计算机试卷类别开卷(√)闭卷()学历层次本科考试用时 120分钟《考生注意:答案要全部抄到答题纸上,做在试卷上不给分》...........................///////////////////////////////////////////////////一、单项选择题(每小题1分,共20分)1. C#不支持的注释格式是。
A. //单行注释B. -- 单行注释C. /*多行注释*/ D. ///xml注释2. 以下标识符中,正确的是。
A. _nNameB. MainC. 6PtuerD. x5#3. Microsoft .Net Framework SDK内置的C#编译器是。
A.cs.exe B.javac.exe C. csc.exe D. scs.exe4. 以下说法中,正确的是。
A.Main函数是由C#语言提供的标准函数,不需要用户编写它的内容。
B.在C#程序中,要调用的函数必须在Main函数中定义。
C.在C#程序中,必须显式调用Main函数,它才起作用。
D.一个C#程序无论包含多少个函数,C#程序总是从Main函数开始执行。
5.派生类能够直接访问的基类的成员是。
A.抽象成员 B.保护成员C.私有成员D.静态成员6.下面是几条定义类的语句,不能被继承的类是。
A.abstract class Figure B.class FigureC.public class Figure D.sealed class Figure 7.下列数组初始化语句哪些是不正确的?。
A.int[] nums = new int[]{0,1,2,3,4};B.int[] nums2 = {0,1,2,3,4,5};C.int[][] num_1 = {new int[]{0,1},new int[]{0,1,2},newint[]{0,1,2,3}};D.int[][] num_2 = {{0,1},{0,1,2},{0,1,2,3}};8. 下面有关虚方法的描述正确的是。
《面向对象程序设计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--》期末试卷及标准答案集总解析
《面向对象程序设计C++》期末考试试卷(B)班级:姓名:学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第8页上)】一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,( D )是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,(A )是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是( C )。
>A.testDefaulParam(5); B.testDefaulParam(5,8); C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是( A )。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是( D )。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的^D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了(D )次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是( B )。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型。
《面向对象程序设计C++》期末试卷及标准答案
《面向对象程序设计C++》期末考试试卷(A)班级::学号:分数:试卷说明:本套试题共四个大题,全部题目都答在答题纸上,写在其他地方均无效。
(答题纸在本套试卷的第10页上)一、选择题(每小题2分,共40分)1、C++是()。
A. 面向对象的程序设计语言B. 面向过程的程序设计语言C. 既支持面向对象的程序设计又支持面向过程的程序设计的混合型语言D. 非结构化的程序设计语言2、面向对象程序设计思想的主要特征中不包括()。
A. 封装性B. 多态性C. 继承性D. 功能分解,逐步求精3、若定义:string str; 当语句cin>>str; 执行时,从键盘输入:Microsoft Visual Studio 6.0!所得的结果是str=()。
A. Microsoft Visual Studio 6.0!B. MicrosoftC. Microsoft VisualD. Microsoft Visual Studio 6.04、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A. testDefaulParam(5);B. testDefaulParam(5,8);C. testDefaulParam(5,'#');D. testDefaulParam(0,0,'*');5、下列语句中,将函数int sum(int x, int y)正确重载的是()。
A. float sum(int x, int y);B. int sum(int a, int b);C. float sum(float x, float y);D. double sum(int y, int x);6、下列表示引用的方法中,()是正确的。
已知:int a=1000;A. int &x=a;B. char &y;C. int &z=1000;D. float &t=&a;7、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用()。
《面向对象程序设计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)。
java面向对象程序设计期末考试题及答案
java面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 在Java中,以下哪个关键字用于声明一个类?A. classB. interfaceC. structD. enum答案:A2. Java中的继承是?A. 单继承B. 多继承C. 无继承D. 混合继承答案:A3. 下列哪个是Java中的访问修饰符?A. privateB. protectedC. publicD. 以上都是答案:D4. Java中哪个关键字用于实现多态?A. abstractB. finalC. staticD. override答案:D5. Java中接口和抽象类的主要区别是?A. 接口可以有构造方法B. 抽象类可以有构造方法C. 接口不能有构造方法D. 抽象类不能有构造方法答案:C6. 在Java中,下列哪个是正确的方法重载?A. 方法名相同,参数列表不同B. 方法名不同,参数列表相同C. 方法名和参数列表都相同D. 方法名相同,返回类型不同答案:A7. 下列哪个不是Java的集合框架中的接口?A. ListB. SetC. MapD. Stream答案:D8. Java中,下列哪个是线程安全的单例模式实现?A. 懒汉式B. 饿汉式C. 双重检查锁定D. 以上都是答案:B9. Java中,下列哪个是正确的异常处理关键字?A. tryB. catchC. finallyD. 以上都是答案:D10. 在Java中,下列哪个是正确的泛型使用方式?A. List<String> list = new ArrayList<>();B. List list = new ArrayList<>();C. List<String> list = new ArrayList<Integer>();D. List list = new ArrayList<String>();答案:A二、填空题(每题2分,共20分)1. Java中,一个类可以继承______个父类。
c面向对象程序设计期末考试题及答案
c面向对象程序设计期末考试题及答案一、选择题(每题2分,共20分)1. 在C++中,以下哪个关键字用于定义类?A. structB. typedefC. enumD. union答案:A2. 以下哪个选项不是面向对象编程的三大特性?A. 封装B. 继承C. 多态D. 抽象答案:D3. 在C++中,构造函数的作用是什么?A. 初始化局部变量B. 初始化成员变量C. 销毁对象D. 计算对象的值答案:B4. 下列哪个关键字用于实现类的继承?A. extendsB. implementsC. inheritsD. public答案:D5. 在C++中,友元函数可以访问类的哪些成员?A. 公有成员B. 私有成员C. 保护成员D. 所有成员答案:D6. 下列关于虚函数的描述,哪个是正确的?A. 虚函数不能在基类中定义B. 虚函数不能在派生类中重写C. 虚函数可以用于实现多态D. 虚函数不能在接口类中定义答案:C7. 在C++中,下列哪个关键字用于定义纯虚函数?A. abstractB. virtualC. overrideD. final答案:B8. 下列关于静态成员的描述,哪个是错误的?A. 静态成员变量可以在类外初始化B. 静态成员函数可以访问类的非静态成员C. 静态成员属于类本身D. 静态成员函数不能访问类的静态成员答案:B9. 在C++中,下列哪个关键字用于定义常量成员函数?A. constB. staticC. finalD. abstract答案:A10. 下列关于运算符重载的描述,哪个是正确的?A. 运算符重载不能改变运算符的优先级B. 运算符重载可以改变运算符的结合性C. 运算符重载可以改变运算符的操作数数量D. 运算符重载可以改变运算符的类型答案:A二、填空题(每题2分,共20分)1. 在C++中,使用关键字________定义类。
答案:class2. 面向对象编程的三大特性包括封装、继承和________。
c面向对象程序设计期末考试题及完整参考答案
public abstract void Speak();
}
public class Truck:Vehicle
private float weight;
public float Weight
{
get { retur n weight; }
}
private float load;
public float Load
{
return (1+load/Weight/2) * base.Ru n(dista nee);
}
public override voload; }
}
public Truck(i nt weight, i nt load)
:base(50)
{
this.weight = weight; this .load = load;
}
public new float Run( float dista nee) //重载
A)方法中只允许定义一个数组型参数;
B)数组型参数所定义的数组必须是一维数组;
C)数组型参数可以作为引用参数或者输出型参数使用;
D)数组型参数必须位于参数列表中的最后;
4.有如下程序片段:
class Stude nt
{
public virtual stri ng WhoYouAre(){
return "I am a Stude nt."; }
public float R
{
get { retur n _r; }
set { _r = value; }
} _
public con st double PI= 3.1415;/定一个双精度常量表示圆周率
(完整word版)《面向对象程序设计C》期末考试试卷
《面向对象程序设计C++》期末考试试卷一、选择题(每小题3分,共48分.)01、下列关于C++函数的叙述中,正确的是( C )。
A)每个函数至少要具有一个参数B)每个函数都必须返回一个值C)函数在被调用之前必须先声明D)函数不能自己调用自己02、下列关于类和对象的叙述中,错误的是( A )。
A)一个类只能有一个对象B)对象是类的具体实例C)类是对某一类对象的抽象D)类和对象的关系是一种数据类型与变量的关系03、在C++中,用于实现运行时多态性的是( D )。
A)内联函数B)重载函数C)模板函数D)虚函数04、下列关于运算符重载的叙述中,正确的是( B ).A)通过运算符重载,可以定义新的运算符B)有的运算符只能作为成员函数重载C)若重载运算符+,则相应的运算符函数名是+ D)重载二元运算符时,必须声明两个形参05、对于语句cout〈〈x<<endl;错误的是描述是( D ).A)“cout”是一个输出流对象B)“endl”的作用是输出回车换行C)“x”是一个变量D)“〈<”称作提取运算符06、有如下类声明,则类MyDERIVED中保护的数据成员和成员函数的个数是()。
class MyBASE{ private: int k;public: void set(int n){ k=n;}int get()const{ return k;} };class MyDERIVED: protected MyBASE{protected: int j;public:void set(int m, int n){ MyBASE::set(m); j=n;}int get( )const { return MyBASE::get()+j;} };A)4 B)3 C)2 D)107、已知在一个类体中包含如下函数原型:Volume operator-(Volume)const;,下列关于这个函数的叙述中,错误的是( )。
面向对象程序设计C++期末试卷2套(含答案)
面向对象程序设计C++ 第一套试卷一、选择题(共32分,每小题2分)1.按照C++标识符的规则,下面( B )是c++的标识符。
A.8_afrB.a_ideC.t-axyD._3?d2.C++中声明常量的关键字是( A )A.constB.externC.publicD.enum3.建立( C )的作用是为变量另起一个名字。
A.指针B.枚举C.引用D.结构4.在( D )情况下适宜采用内联函数。
A.函数体含有循环语句B.函数代码多,频繁调用C.函数体含有递归语句D. 函数代码少,频繁调用5.关于new运算符的下列描述中,错误的是( D )A.它可以用来动态创建对象和对象数组B.使用它创建的对象或对象数组可以使用运算符delete删除C.使用它创建对象时要调用构造函数D.使用它创建对象数组时必须指定初始值6.类成员的访问权限中,( C )只能被本类的成员函数和其友元函数访问。
A.shareB.publicC.privateD.protected7.在下面有关构造函数的描述中,正确的是( B )A.构造函数可以带有返回值B.构造函数名字与类名完全相同C.构造函数必须带参数D.构造函数必须定义,不能默认8.有如下类声明:class A{ private: int x;public: A(int n){ x=n;} };class B: public A{ private: int y;public: B(int a,int b); };在构造函数B的下列定义中,正确的是( C )。
A. B::B(int a,int b): x(a),y(b){ }B. B::B(int a,int b): x(a),B(b){ }C. B::B(int a,int b): A(a),y(b){ }D. B::B(int a,int b): A(a),B(b){ }9.设置虚基类的目的是( B )A.简化程序B.消除二义性C.提高运行效率D.减少目标代码10.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( C )A.public成员B. protected成员C.private成员D.友元11. 应在下列程序划线处填入的正确语句是( D )#include<iostream>using namespace std;class Base{ public: void fun(){cout<<"Base::fun"<<endl;}};class Derived:public Base{ public: void fun() {cout<<"Derived::fun"<<endl;}};void main(){ Derived obj;_____________ //调用基类的fun函数}A.obj.fun(); B. Base.fun(); C. Base->fun(); D. obj.Base::fun();12. 假定一个类的构造函数为B(int x,int y){a=x;b=a*y;},则执行B obj(3,5); 语句后,obj.a和obj.b的值分别为( C )A.3和5 B.5和3 C.3和15 D.20和513.模板的使用是为了( A )A.提高代码的可重用性B.提高代码的运行效率C.加强类的封装性D.实现多态性14.在下列选项中( A )不是ostream类的对象。
《面向对象程序设计C 》期末试卷及标准答案(B)
《面向对象程序设计C++》期末考试试卷(B)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,()是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,()是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A.testDefaulParam(5); B.testDefaulParam(5,8);C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是()。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是()。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是()。
A.private 部分B.protected 部分C.public 部分D.以上都不对9、关于常数据成员的说法,不正确的是()。
浙江理工大学《C面向对象程序设计》2021-2022学年第一学期期末试卷
浙江理工大学《C面向对象程序设计》2021-2022学年第一学期期末试卷考试课程:C面向对象程序设计考试时间:120分钟专业:计算机科学与技术总分:100分---一、单项选择题(每题2分,共20分)1. 在C++中,下列关键字用于定义类的成员函数:A. memberB. methodC. functionD. virtual2. 在C++中,以下哪个运算符用于在类的成员函数中访问类的成员?A. .B. ->C. ::D. *3. 下列关于C++类的描述中,错误的是:A. 类可以包含成员变量和成员函数B. 类的成员变量默认是私有的C. 类的成员函数可以直接访问私有成员变量D. 类的成员函数可以被其他函数调用4. 在C++中,以下哪个关键字用于继承一个类的特性?A. deriveB. inheritC. extendsD. class5. 在C++中,下列关于构造函数的描述中,错误的是:A. 构造函数没有返回类型B. 构造函数与类同名C. 构造函数可以被继承D. 构造函数用于对象的初始化6. 下列关于C++析构函数的描述中,正确的是:A. 析构函数没有参数B. 析构函数用于释放对象的资源C. 析构函数与类同名D. 手动调用析构函数可以释放对象7. 在C++中,以下哪个关键字用于创建类的派生类?A. deriveB. inheritC. extendsD. class8. 在C++中,如果一个类的成员函数被声明为虚函数,可以实现哪种多态性?A. 编译时多态B. 运行时多态C. 静态多态D. 动态多态9. 在C++中,如果一个类的成员函数被声明为纯虚函数,该类称为什么类型的类?A. 抽象类B. 派生类C. 基类D. 继承类10. 在C++中,下列关于多态性的描述中,错误的是:A. 多态性允许在运行时选择不同的函数实现B. 多态性通过继承和虚函数实现C. 多态性提高了代码的灵活性和可扩展性D. 多态性只能在类的成员函数中实现---二、判断题(每题2分,共20分)11. C++中,类的成员变量默认是公有的。
《C++面向对象程序设计》期末考试试题
《C++面向对象程序设计》考试试题本试卷满分 100 分; 请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; 请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。
一、单选题 (共 10 分,每题 1 分) 1. C++中解决命名冲突的机制是: D (A) 虚基类 (B) 虚函数 (C) 函数重载 2. 若类A 的一个对象所占的内存空间中包含虚函数表的入口地址 (A) 类 A 不能有静态数据成员 (C) 类 A 中至少有一个成员函数是虚的 3.任意一个类,析构函数的个数最多是: (A) 不限个数 (B) 1 (C) 4. 下列关于 this 指针的说法 ,哪个是正确的 (A) this 指针一定指向常量型数据 (C) 静态成员函数中也可以访问 (B) (D) (D) 名字空间 ,则: C 类 A 中公有的成员函数一定是虚的 类 A 的析构函数一定是虚的 (D) 3 5.在类定义中 , 为说明成员的访问权限 (A) 次数没有具体限定 (C) public 至少一次 面哪种定义方式是正确的,并且使得 (A) A * p = new A; (C) const A* p = new A;obj 是类 A 的一个对象,执行语句 (A) 类 A 的拷贝构造函数会被调用 (C) &aA 的值就是 &obj 6.7. (B) this 指向的数据不可更改 (D) this 指针本身可直接作为成员函数的返回值 A this 指针 , private, protected, public 可以出现次数为: (B) 每种至多一次 (D) 每种至少一次p 可以作为函数 void f( A* const pp); 的实参: A(B) A a; A* p = a; (D) A a; const A* p = a; const A& aA= obj; ,则下列说法正确的是: C (B) 类 A 的赋值函数会被调用(D) 语句 obj.f( ) ;等价于语句 aA.f( ) ; 面关于访问类 A 的私有数据成员的说法,错误的是: (A) (B) (C) (D) 9.类A 8. 类A 类A 类A 类A 的友元函数可以访问类 A 的私有成员。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《面向对象程序设计C++》期末考试试卷(B)一、单项选择题(每小题2分,共40分)1、关于C++与C语言关系的描述中,()是错误的。
A.C语言是C++语言的一个子集B.C语言与C++语言是兼容的C.C++语言对C语言进行了一些改进D.C++语言和C语言都是面向对象的2、已知:int m=10; 下列表示引用的方法中,()是正确的。
A.int &x=m; B.int &y=10; C.int &z; D.float &t=&m;3、考虑下面的函数原型声明:void testDefaulParam(int a,int b=7,char z='*');下面函数调用中,不合法的是()。
A.testDefaulParam(5); B.testDefaulParam(5,8);C.testDefaulParam(5,'#'); D.testDefaulParam(0,0,'*');4、系统在调用重载函数时往往根据一些条件确定哪个重载函数被调用,在下列选项中,不能作为依据的是()。
A.函数的返回值类型B.参数的类型C.函数名称D.参数个数5、下列有关C++类的说法中,不正确的是()。
A.类是一种用户自定义的数据类型B.只有类中的成员函数或类的友元函数才能存取类中的私有成员C.在类中,如果不做特别说明,所有成员的访问权限均为私有的D.在类中,如果不做特别说明,所有成员的访问权限均为公用的6、已知X类,则当程序执行到语句X array[3];时,调用了()次构造函数。
A.0 B.1 C.2 D.37、有关析构函数的说法,不正确的是()。
A.析构函数有且仅有一个B.析构函数和构造函数一样可以有形参C.析构函数的功能是在系统释放对象之前作一些内存清理工作D.析构函数无任何函数类型8、类定义的内容允许被其对象无限制地存取的是()。
A.private 部分B.protected 部分C.public 部分D.以上都不对9、关于常数据成员的说法,不正确的是()。
A.常数据成员的定义形式与一般常变量的定义形式相同,只不过常数据成员的定义必须出现在类体中B.常数据成员必须进行初始化,并且不能被更新C.常数据成员通过构造函数的成员初始化列表进行初始化D.常数据成员可以在定义时直接初始化10、运用运算符delete删除一个动态对象时()。
A.系统首先为该动态对象调用构造函数,再释放其占用的内存B.系统首先释放该动态对象占用的内存,再为其调用构造函数C.系统首先为该动态对象调用析构函数,再释放其占用的内存D.系统首先释放动态对象占用的内存,再为其调用析构函数11、可以在类外用p.a的形式访问派生类对象p的基类成员a,其中a是()。
A.私有继承的公用成员B.公用继承的私有成员C.公用继承的保护成员D.公用继承的公用成员12、在公用继承方式下,有关派生类对象和基类对象的关系,不正确的叙述是()。
A.派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C.派生类的对象可以直接访问基类中的成员D.派生类的对象的地址可以赋给指向基类的指针13、设置虚基类的目的是()。
A.简化程序B.消除二义性C.提高运行效率D.减少目标代码14、在C++中,用于实现动态多态性的是()。
A.内联函数B.重载函数C.模板函数D.虚函数15、不能说明为虚函数的是()。
A.析构函数B.构造函数C.类的成员函数D.以上都不对16、如果一个类至少有一个纯虚函数,那么就称该类为()。
A.抽象类B.派生类C.纯基类D.以上都不对17、下面关于友元的描述中,错误的是()。
A.友元函数可以访问该类的私有数据成员B.一个类的友元类中的成员函数都是这个类的友元函数C.友元可以提高程序的运行效率D.类与类之间的友元关系可以继承18、下列运算符中,()运算符在C++中不能被重载。
A.&& B.[] C.:: D.new19、模板的使用实际上是将类模板实例化成一个()。
A.函数B.对象C.类D.抽象类20、假定MyClass为一个类,则该类的拷贝构造函数的声明语句为()。
A.MyClass(MyClass x) B.MyClass&(MyClass x)C.MyClass(MyClass &x) D.MyClass(MyClass *x)二、填空题(前16个空,每空1分,后2个空,每空2分,共20分)1、类和对象的关系可表述为:类是对象的,而对象则是类的。
2、在C++中,三种继承方式的说明符号为、和,如果不加说明,则默认的继承方式为。
3、如果只想保留公共基类的一个复制,就必须使用关键字把这个公共基类声明为虚基类。
4、若要把void fun()定义为类A的友元函数,则应在类A的定义中加入语句。
5、类的静态成员分为和。
6、运算符重载要求保持其原来的操作数个数、、和语法结构。
7、通过关键字可以声明模板,通过关键字指定函数模板的类型参数,有几个类型参数就有几个类型关键字。
8、列出C++中两种用户自定义的数据类型:、。
9、构造函数的作用是。
10、后置自增运算符“++”重载为类的成员函数(设类名为A)的形式为。
三、阅读下面3个程序,写出程序运行时输出的结果:(共13分)1、#include<iostream >using namespace std;void fun(int &a,int &b){ int p;p=a; a=b; b=p;}void exchange(int &a,int &b,int &c){ if(a<b)fun(a,b);if(a<c)fun(a,c);if(b<c)fun(b,c);}int main(){ int a=12,b=89,c=56;exchange(a,b,c);cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;return 0;}2、#include <iostream>using namespace std;class Date{public:Date(int,int,int);Date(int,int);Date(int);Date();void display();private:int month, day, year;};Date::Date(int m,int d,int y):month(m),day(d),year(y) { }Date::Date(int m,int d):month(m),day(d) {year=2009;}Date::Date(int m):month(m){day=1; year=2010; }Date::Date() {month=1; day=1; year=2010; }void Date::display(){cout<<month<<"/"<<day<<"/"<<year<<endl;} int main(){ Date d1(12,31,2009);Date d2(12,31);Date d3(1);Date d4;d1.display();d2.display();d3.display();d4.display();return 0; }3、#include <iostream>using namespace std;class A{ public:A(){cout<<"constructing A "<<endl;}~A(){cout<<"destructing A "<<endl;}};class B: public A{ public:B(){cout<<"constructing B "<<endl;}~B(){cout<<"destructing B "<<endl;}};class C : public B{ public:C(){cout<<"constructing C "<<endl;}~C(){cout<<"destructing C "<<endl;}};int main(){ C c1;return 0;}四、编程题(共27分)1、(10分)已知复数类Complex的声明如下:class Complex{public:Complex(); //无参构造函数Complex(double ); //转换构造函数Complex(double, double);//有两个形参的构造函数friend Complex operator+(Complex&, Complex&); //对“+”运算符进行重载friend ostream& operator<<(ostream&, Complex&); //对“<<”运算符进行重载friend istream& operator>>(istream&, Complex&); //对“>>”运算符进行重载private:double real,imag;};要求:(1)写出该类的所有构造函数的类外定义代码。
(2)写出对运算符“+”、“<<”、“>>”进行重载的运算符重载函数的定义。
2、(17分)下列Shape类是一个表示形状的抽象类,area( )为求图形面积的函数,total( )则是一个通用的用以求不同形状的图形面积总和的函数。
class Shape{public:virtual double area()=0;};double total(Shape *s[ ], int n){ double sum=0.0;for(int i=0; i<n; i++) sum+=s[i]->area( );return sum;}要求:(1)从Shape类派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(radius),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。