C++面向对象程序设计期末考试试题
c面向对象程序设计期末考试题及答案
![c面向对象程序设计期末考试题及答案](https://img.taocdn.com/s3/m/99253b47c381e53a580216fc700abb68a982ad9e.png)
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期末复习题
![面向对象程序设计c期末复习题](https://img.taocdn.com/s3/m/a500817d6bd97f192279e975.png)
《面向对象程序设计》期末复习题一、单选题1.能作为程序的基本单位是( c )。
A. 字符B. 语句C. 函数D. 源程序文件2.存储以下数据,占用存储字节最多的是(d)。
A. 0B. ‘0’C. “0”D. 0.03.设” 1526;”,则”<<();”的输出结果是( d )。
A. 15B. 26,15C. 15,26D. 264.下列的符号常量定义中,错误的定义是(c)。
A. 10;B. 20;C. ;D. ;5.函数重载是指(a)。
A. 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B. 两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C. 两个以上的函数名字不同,但形参的个数或类型相同D. 两个以上的函数取相同的函数名,并且函数的返回类型相同6.以下关于函数模板叙述正确的是(c)。
A. 函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D. 用函数模板定义的函数没有类型7. 42. 下列( c )的调用方式是引用调用。
A. 形参和实参都是变量B.形参是指针,实参是地址值C. 形参是引用,实参是变量D.形参是变量,实参是地址值8. 43. 为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择( a )。
A. 内联函数B.重载函数C.递归函数D.函数模板9. 56. 采用重载函数的目的是( d )。
A. 实现共享B. 减少空间C. 提高速度D. 使用方便,提高可读性10. 58. 以下叙述中正确的是( b )。
A. 使用可以为常量定义一个名字,该名字在程序中可以再赋另外的值B. 使用定义的常量名有类型之分,其值在程序运行时是不可改变的C. 在程序中使用内联函数使程序的可读性变差D. 在定义函数时可以在形参表的任何位置给出缺省形参值11. 70. 用运算符创建一个含10个元素的一维整型数组的正确语句是( c )。
杭州电子科技大学C面向对象程序设计期末考试试题卷
![杭州电子科技大学C面向对象程序设计期末考试试题卷](https://img.taocdn.com/s3/m/2963b265f61fb7360a4c6530.png)
return 0;
}
执行结果:
2)
#include<iostream>
using namespace std;
class Count{
private:
static int counter;
int obj_id;
public:
Count(); //constructor
return 0;
}
四、写出下面程序的执行结果:(15分)
1)#include <iostream>
using namespace std;
class A
{friend double count(A&);
public:
A(double t, double r):total(t),rate(r){}
private:
a.更慢b.更快c.次数更多d.以上都不是
5.默认参数的值由___________________提供。
a.该函数b.调用程序c.上述二者d.以上都不是
6.在C++中,混合类型表达式_____________。
a.允许存在b.为一错误c.从int到float d.从float到int
7.表达式long(intVar)也可表示为_______________。
Count a2, a3,a4;
Count::display_total();
a2.display();
a4.display();
return 0;
{ return basedata;
}
4)改正下面程序段中的错误,写出整个正确的程序段
C#面向对象程序设计期末复习题
![C#面向对象程序设计期末复习题](https://img.taocdn.com/s3/m/7c76fd35ccbff121dd3683e4.png)
面向对象程序设计测试题一、单选题1、改变窗体的标题,需修改窗体的什么属性( A )A)Text B)Name C)Title D)Index2、打开代码编辑器的功能键是( C )A)F1 B)F5 C)F7 D)F123、加载窗体时触发的事件是( B )A)Click B)Load C)Gotfocus D)DoubleClick4、设置计时器时间间隔的属性是( C )A)Enabled B)Name C)Interval D)Modifiers5、数据类型为Long的数据在内存中占用几个字节数( D )A) 2 B) 4 C) 4 D) 86、如果要使文本框能够多行显示,则应使什么属性设为True。
( A )A) MultiLine B) MaxLength C) SelLength D) Locked7、图片框控件可显示图像,若想使图片框自动改变大小,以适应装入的图片,应修改SizeMode 属性值为( B )A) Normal B) AutoSize C) StretchImage D) CenterImage8、要使文本框成为密码输入框,一般应修改文本框的什么属性( C )A)PasswordChar属性和MaxLength属性,并且 MultiLine属性值只能为False。
B)PasswordChar属性和MaxLength属性,并且Lines属性值只能为False。
C)只修改PasswordChar属性值就可以了,其他属性可以不修改。
D)PasswordChar属性和MaxLength属性, MultiLine属性值可以为True。
10、以下四组属性中,决定对象的大小的一组属性为:( A )A)width, height B)left, top C)forecolor,backcolor D)right,buttom11、下面哪个控件在程序运行时是不可见的( c )A)单选钮 B)组合框 C)组件 D)框架12、有两个数组s1和s2,要将s1的内容“拷贝”一份给s2,应使用( B )A)s2=s1 B)s2=string.copy(s1) C)s2=s1.Clone D)s2=s1.All13、下面哪种不是循环结构( A )A)Try…Catch…Finally B)For…NextC)For Each…Next D)Do…Loop14、用于专门输入日期时间型数据的控件是(B )A)Timer B)DateTimePicker C)ListBox D)TextBox15、要以表格形式显示数据表,可以使用以下什么控件(B )A)ListBox B)DataGridView C)DataSet D)TextBox16、C#项目文件的扩展名是( B )A) .sln B) .csproj C) .proj D).cs17、C#中,用什么属性标识不同的对象( B )A)Text B)Name C)Title D)Index18、菜单项标题中含有带下划线的字符,这是( B )A)快捷键 B)访问键 C)选取标记 D)菜单禁用19、可以通过改变什么属性,改变复选框的状态( C )A)value B)checked C)style D)appearance20、在C#中,用什么对象来创建弹出式菜单( B )A)Menu B)contextMenustrip C)Menustrip D)Mainmenu21、SQL语句分为三类,分别是:( C )A) create delete modify B) select update editC) DDL DML DCL D) create alter drop22、下面哪种语言不是面向对象程序设计语言( D )A) JAVA B) C# C) D) PHP23、对象的三个基本要素,它们是( B )A)对象的名称、值和所属类 B)对象的属性、事件和方法C)对象的大小、存储方式和内容 D)对象的访问方法、存储方式和名称24、在使用OpenfileDialog对话框控件时,希望通过对话框查找到 (*.txt) 类型的文件和所有文件(*. *),则该控件的filter属性应该如何设置( B )A)文本文件 (*.txt): *.txt; 所有文件 (*. *): *. *B)文本文件 (*.txt)|*.txt|所有文件 (*. *)|*. *C)文本文件 (*.txt)\*.txt\所有文件 (*. *)\*. *D)文本文件 (*.txt)->*.txt; 所有文件 (*. *)->*. *25、要创建多文档应用程序,需要将父窗体的什么属性设置为true ( D )A) DrawGrid B) ShowInTaskbar C) Parent D) IsMdiContainer26、下列不属于容器类控件的是( d )A)Panel控件 B)GroupBox控件 C)TabControl控件 D)listBox控件27、下列对象模型中,用于生成并执行SQL语句的对象是( B )A)Connection对象 B)Command对象 C)DataSet对象 D)DataReader对象28、使用DataSet 类定义数据集对象,应在代码开始处添加对什么命名空间引用。
《面向对象程序设计C 》期末试卷及标准答案
![《面向对象程序设计C 》期末试卷及标准答案](https://img.taocdn.com/s3/m/3efdc694ad51f01dc281f1ec.png)
《面向对象程序设计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)
![(完整word版)《面向对象程序设计C 》期末试卷及标准答案(B)](https://img.taocdn.com/s3/m/d66eb41b1eb91a37f1115ca6.png)
《面向对象程序设计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 》期末试卷及答案
![《面向对象程序设计C 》期末试卷及答案](https://img.taocdn.com/s3/m/874337c5192e45361166f549.png)
选择题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--》期末试卷及标准答案集总解析](https://img.taocdn.com/s3/m/f9244c61b52acfc788ebc940.png)
《面向对象程序设计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面向对象程序设计考试试题](https://img.taocdn.com/s3/m/ebf7454af08583d049649b6648d7c1c709a10b4d.png)
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 》期末试卷及标准答案(A)
![《面向对象程序设计C 》期末试卷及标准答案(A)](https://img.taocdn.com/s3/m/7c9c4de7e009581b6bd9ebec.png)
《面向对象程序设计C++》期末考试试卷(A)一、选择题(每小题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--》期末试卷及答案
![《面向对象程序设计C--》期末试卷及答案](https://img.taocdn.com/s3/m/0e9def62d0d233d4b14e69f6.png)
一、选择填空题(共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)。
《C面向对象程序设计》期末考试试题
![《C面向对象程序设计》期末考试试题](https://img.taocdn.com/s3/m/28418661a0116c175e0e4882.png)
《C面向对象程序设计》期末考试试题---《 C++ 面向对象程序设计》考试一试题本试卷满分100 分;请将答案写在答题纸上,写明题号,不用抄题,笔迹工整、清楚;请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和厕纸一并交上来。
一、单项选择题(共10 分,每题1分)1.C++ 中解决命名矛盾的体制是:D(A)虚基类(B)虚函数(C) 函数重载(D)名字空间2.若类 A 的一个对象所占的内存空间中包括虚函数表的进口地址,则: C(A)类 A 不可以有静态数据成员(B)类 A 中公有的成员函数必定是虚的(C)类 A 中起码有一个成员函数是虚(D)类 A 的析构函数必定是虚的的3.随意一个类,析构函数的个数最多是:B(A)不限个数(B) 1(C) 2(D)34.以下对于 this指针的说法 , 哪个是正确的:D(A)this 指针必定指向常量型数据(B) this指向的数据不行改正(C) 静态成员函数中也能够接见this 指针(D) this指针自己可直接作为成员函数的返回值5.在类定义中 , 为说明成员的接见权限, private, protected,public能够出现次数为: A(A) 次数没有详细限制(B)每种至多一次(C) public起码一次(D)每种起码一次p 能够作为函void f( A* const pp);的实参:6.下边哪一种定义方式是正确的,而且使得数A(A) A * p =new A;(B)A a;A* p = a;(C) const A* p = new A;(D)A a;const A* p = a;7 . obj是类 A 的一个对象,履行语const A& aA= obj;,则以下说法正确的句类 A 的拷贝结构函数会被调是:C(A)(B)类 A 的赋值函数会被调用用(C)(D)语句 obj.f( );等价于语&aA 的值就是 &obj句aA.f( ) ;8 .下边对于接见类A 的私有数据成员的说法,错误的C是:(A)类 A 的友元函数能够接见类 A 的私有成员。
c面向对象程序设计期末考试题及完整参考答案
![c面向对象程序设计期末考试题及完整参考答案](https://img.taocdn.com/s3/m/0b53ceaa050876323012124d.png)
3.distanee/400.0改为distanee/400或者distanee/400.0f;
4.public float ISwimmable.Run(float distanee)改为float ISwimmable.Run(float distanee)
7.类索引函数的参数类型必须为或。
8.类对接口方法的实现时,在方法名称之前加上接口名,这叫做对接口方法的实现,此时这个方法是这个
类的员,不能通过类的实例来访问。
9.作为一种特殊的函数成员,重载类的操作符时,被重载的操作符必须被声明为公有的和,并通过在关键
字operator后跟操作符来声明。
二、判断题(每小题1分,共5分)
public virtual float Run( float dista nce)
{
retur n dista nce/Speed;
}
public Automobile(float speed)
{
Speed = speed;
}
}
public class Amphicar:Automobile, ISwimmable
Console.WriteLine("{0}空中飞行1000公里需{1}小时", plane, plane.Run(1000)); //调用IFlyable接口Run方法
Con sole.ReadL in e();
}
}
public in terface IFIyable
{
public float Run( float dista nee);
《面向对象程序设计C》期末试卷及标准答案(好的)
![《面向对象程序设计C》期末试卷及标准答案(好的)](https://img.taocdn.com/s3/m/8214c68b50e79b89680203d8ce2f0066f5336425.png)
《⾯向对象程序设计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》期末试卷及标准答案
![《面向对象程序设计C》期末试卷及标准答案](https://img.taocdn.com/s3/m/9f0c175976a20029bc642d1d.png)
《面向对象程序设计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 )。
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、下列表示引用的方法中,( A )是正确的。
c面向对象程序设计考试试题
![c面向对象程序设计考试试题](https://img.taocdn.com/s3/m/a7b74175cdbff121dd36a32d7375a417866fc132.png)
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. 解释什么是设计模式,并至少列举三种常见的设计模式及其主要特点。
2020-2021学年《C++面向对象程序设计》期末考试
![2020-2021学年《C++面向对象程序设计》期末考试](https://img.taocdn.com/s3/m/da5259fd185f312b3169a45177232f60ddcce72b.png)
《C++面向对象程序设计》期末考试试题一、单选题(共10分,每题1分)1.已知f1和f2是同一类中的两个成员函数,若f1的实现代码体内不能调用f2,则最可能的情况是:(A)f1和f2都是静态函数(B)f1是静态的,f2不是(C) f1不是静态的,f2是静态的(D)f1和f2都不是静态函数2.一个对象所占的内存空间中可以保存下面哪类数据?(A) 静态数据成员(B) 内联函数代码(C) 所有成员函数的入口地址(D) 虚函数表的入口地址3.下面关于new 和delete操作符的说法,哪个是不正确的:(A) 使用new操作符,可以动态分配全局堆中的内存资源。
(B) 用new申请的数组,必须用delete[] 释放。
(C) 用new申请的空间,即使不调用delete释放掉,当程序结束时也会自动释放掉。
(D) 执行语句A * p=new A[100];时,类A的构造函数会被调用100次。
4.下列哪种函数可以是虚函数:(A) 自定义的构造函数(B) 拷贝构造函数(C) 静态成员函数(D) 析构函数5.C++的最小编译单位是:(A) 工程中每个.cpp和.h文件(B) 工程中每个.cpp文件(C) 工程中每个.h文件(D) 工程中所有文件6.下面表达式中不可能作为左值(赋值运算符左侧)的是:(A)a=b (B)*p (C)f(a,b) (D)&a7.在实现函数A& f(A & obj)时,下面的哪一个表达式可以出现在return 语句中?(A)new A( ) (B)obj (C)&obj (D) new A(obj)8.判断类A的两个对象a1与a2是否是同一个对象的方法是:(A)利用调试器,查看a1与a2各成员数据的值是否相等(B)重载 == 运算符,用它来判断各成员数据的值是否相等。
(C)判断这两个对象的地址值是否相等。
(D)比较创建时使用的构造函数的实参是否相同。
9.已知obj是一个对象,下面哪一个表达式是不可能出现的?(A)obj.100 (B)!obj (C)obj++ (D)obj,10010.下面哪种情况不属于函数重载:(A)类中定义的运算符函数(B)同一个名字,参数个数不同(C)派生类中重新定义了一个和基类中的原型完全相同的函数(D)类中定义了两个同名、同参数表的函数,但其中一个是常成员函数二、判断正误,对于你认为错误的论述,说明原因或举出反例。
《面向对象程序设计(C++)》期末考试试题
![《面向对象程序设计(C++)》期末考试试题](https://img.taocdn.com/s3/m/67adff1bf7ec4afe04a1dfc4.png)
《面向对象程序设计(C++)》期末考试试题一、简答题(10分)1.(3分)什么是引用?它与指针有什么区别?2.(3分)运算符重载有哪两种形式?这两种形式有何区别?3.(4分)构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?二.填空题(20分,每空2分)1. C++程序中的数据可以分为两大类,其中是指在程序执行过程中值不改变的数据;是程序中用于存储信息的单元,并对应于某个内存空间。
2. 表示逻辑关系“a大于等于8或者a小于等于5”的C++表达式是。
3. C++语言的流程控制语句的基本控制结构有三种,分别是、和。
8. 假设x = 5,y = 0,z = 3,则表达式 !x || y++ && z 的值为,执行表达式后y 的值为。
10. 若要把类bClass定义为类aClass的友元类,则应在类的定义中加入语句。
三、选择题(20分,每题2分)1. 在下列选项中,合法的C++变量名是。
A. longB. _2TestC. 3DmaxD. A.dat2. 下列语句中,错误的是。
A. int i, *ptr = &i;B. int i; int *ptr; i = *ptr;C. int *ptr; ptr = 0;D. int i = 5; int *ptr; *ptr = &i;3. 已知枚举类型enum Day {Monday, Tuesday, Wednesday, Friday = 2};下列语句中,是合法的。
A. Wednesday == Friday ? 1 : 0B. Day day; day = 3;C. Day day; day = Monday + 3;D. Tuesday = 4;4. 在“int a = 10, *p = &a;”语句中,p的值是。
A. 10B. 变量p的地址C. 变量a的地址D. 随机数5. 下列有关设置函数参数默认值的描述中,是正确的。
《面向对象程序设计C》期末考试考题
![《面向对象程序设计C》期末考试考题](https://img.taocdn.com/s3/m/2ee4a1cbac51f01dc281e53a580216fc700a53c5.png)
《⾯向对象程序设计C》期末考试考题封⾯作者:PanHongliang仅供个⼈学习《⾯向对象程序设计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)重载⼆元运算符时,必须声明两个形参06、有如下类声明,则类MyDERIVED中保护地数据成员和成员函数地个数是(b ).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。
,下列关于这个函数地叙述中,错误地是( b ).A)这是运算符-地重载运算符函数B)这个函数所重载地运算符是⼀个⼀元运算符C)这是⼀个成员函数D)这个函数不改变类地任何数据成员地值08( a ).cout.fill('*')。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++面向对象程序设计》考试试题本试卷满分100分;请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰;请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸一并交上来。
一、单选题(共10分,每题1分)1. C++中解决命名冲突的机制是:D(A) 虚基类(B) 虚函数(C) 函数重载(D) 名字空间2. 若类A的一个对象所占的内存空间中包含虚函数表的入口地址,则: C(A) 类A不能有静态数据成员(B) 类A中公有的成员函数一定是虚的(C) 类A中至少有一个成员函数是虚的(D) 类A的析构函数一定是虚的3.任意一个类,析构函数的个数最多是:B(A) 不限个数(B) 1 (C) 2 (D) 34.下列关于this指针的说法,哪个是正确的: D5.(A) this指针一定指向常量型数据(B) this指向的数据不可更改(C) 静态成员函数中也可以访问this指针(D) this指针本身可直接作为成员函数的返回值5.在类定义中,为说明成员的访问权限,private, protected, public 可以出现次数为:A(A)次数没有具体限定(B) 每种至多一次(C) public至少一次(D) 每种至少一次6.下面哪种定义方式是正确的,并且使得p可以作为函数void f( A* const pp);的实参:A (A) A * p = new A; (B) A a; A* p = a;(C)const A* p = new A; (D) A a; const A* p = a;7.obj是类A的一个对象,执行语句const A& aA= obj; ,则下列说法正确的是:C (A)类A的拷贝构造函数会被调用(B)类A的赋值函数会被调用(C)&aA的值就是&obj (D) 语句( );等价于语句( );8.下面关于访问类A的私有数据成员的说法,错误的是:C(A)类A的友元函数可以访问类A的私有成员。
(B)类A的友元类中的非静态成员函数可以访问类A的私有成员。
(C)类A的嵌套类中的非静态成员函数可以访问类A的私有成员。
(D)类A中的非静态成员函数可以访问类A的私有成员。
9.类A中有唯一的一个成员函数f,且f是公有的静态或非静态成员函数,对于类A的一个对象a,执行语句(100);成功,那么f 的函数原型不可以是:B(A)A& f( int, int=50 ); (B) void f(int& ) ;(C) const A * f(const int ); (D) A f( const int&);10. 下面关于类的成员函数描述不正确的是:A(A) 静态成员函数内可以直接访问类的非静态成员数据(B) 静态成员函数内可以直接访问类的静态成员数据(C) 非静态成员函数可以直接访问类的非静态成员数据(D) 非静态成员函数可以直接访问类的静态成员数据(全局成员)二、判断正误,对于你认为错误的论述,说明原因或举出反例。
(每题2分,共20分)1.重载流操作符<<和>> 时,如果第一个参数的类型为ostream 和istream,那么这个重载函数既可以用于标准输入输出流,也可以用于文件流上。
对,ostream 和istream是标准输入输出流、文件流、字符串流的基类2.在同一个类中,可以定义重载的成员函数void f(int);和virtual void f(int); 。
错,这属于重复定义3.抽象类不会产生实例,所以不需要有构造函数。
错,被派生时需要它的构造函数4.类A有一个非静态的成员函数f,其函数原型是:void A::f( ) const,则该函数被调用时,一定是通过类A或类A的某后裔类的一个用const修饰符说明的常量对象调用的。
错,常函数可以由变量对象或常量对象调用5.异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。
错,可以在外层捕获,并且这是最常见的用法6.只要程序中没有A a1 = a2; 和A a1(a2); 形式的代码,类A的拷贝构造函数就不会被调用。
错,参数传递或函数返回时也调用拷贝构造函数7.在protected继承方式下,派生类对象的指针不能直接转换成指向基类对象的指针。
对,否则基类中的公有成员由不可见变为可见,权限被放大8.若静态成员函数中调用了一个函数f,那么f 一定不是虚函数。
对,静态成员函数不能是虚函数,因为虚函数入口需要在保存在对象中的虚函数表中,而静态成员函数不属于对象。
9.若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
对,没有别的办法10.构造函数的函数体中,不能使用return语句;但在实现该类的自动类型转化函数时,必须有return 语句。
对三、回答下列各题(每题4分,共20分)1.举例说明static关键字的用法和相应目的(至少3种)。
f(){ static int a;…} 函数体内的静态变量,每次调用该函数时值保持不变static int a; 全局的静态变量,约束作用域为所在文件class A {static int a;…}; A的静态成员,类似全局变量,需用A::a访问2.举例说明类的数据成员在哪些情况下必须在初始化列表中进行初始化(至少3种)。
基类不提供无参的构造函数成员对象不提供无参的构造函数有常量成员或引用成员3.举例说明虚拟继承的作用和目的。
虚拟继承的目的是使基类在派生类中只保留一个副本从而避免二义性4.举例说明成员函数A& f( ) const;和成员函数A& f( ); 的区别。
A& f( ) const是常函数,隐含的this指针是常指针,因此在f中不能修改对象成员的值。
举例略5.有类A的对象a,任意给出一种解决方案,使得程序支持下面的表达式:a=10+a;class A {1. [3分]实现类B的构造函数,使得程序的输出为:Value=1Value=2答:B(int n):aA(n)2.[3分]若main函数中增加了语句B b3(b1); 针对本例,说明是否有必要以公有方式自定义并实现类B的拷贝构造函数,为什么答:不需要,因为类B及基类A中不存在引用或指针成员,使用默认的拷贝构造函数就可以。
3.[4分]在不改动类A和main函数的前提下,以继承的方式重新定义并实现类B,使得程序的输出结果不变。
答:class B:public A {public:B(int n):A(n);void Display( ) const{ A::Display(); }};七、(共20分,每问题10分) 某程序员为了灵活地对各种的给定的曲线函数f(x)画出其曲线图形,设计并部分实现了一个曲线类curve,该类的成员数据中,count代表坐标点的个数,pxs 代表的数组存放这些坐标点的横坐标,pys代表的数组存放利用f(x)计算得到的这些坐标点的纵坐标。
由于不同曲线的计算公式f(x)是不同的,该程序员希望曲线函数的种类可以通过继承curve类的方式任意增加,增加一个新的f(x)时不改变curve类中的内容,也不改变利用curve 类进行图形绘制的算法。
已部分完成的curve类定义和实现如下:class curve {public:void setPxs( ) {/*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ }double* getPxs( ) const { return pxs;}int getCount( ) const { return count;}double* getPys( ) const ;private:double* pxs;double* pys;int count};1、请按照该程序员的设计意图给出成员函数getPys的完整实现。
实现过程中,可以为curve类增加其它成员。
可以假设setPxs函数已经完整实现,不需要考虑曲线的绘制和显示。
答:class curve {public:void setPxs( ) {/*把获取的横坐标数据存放在pxs代表的数组中,并为count置值*/ }double* getPxs( ) const { return pxs;}int getCount( ) const { return count;}double* getPys( ) const ;virtual double f(double)=0;private:double* pxs;double* pys;int count};double* curve::getPys( ) const{if(pys==NULL) pys=new double[count];for(int i=0;i<count;i++)pys[i]=f(pxs[i]);return pys;}注:严格来讲,还应在析构函数中释放pxs和pys,但这部分不作为要考的语法点,故此处略掉2、以曲线函数:f(x)=3*x*x+2*x+1.为例,从curve派生一个类curve1,并用文字说明其它的函数(如:main函数)如何利用基类curve中的getPys函数获取该曲线的纵坐标值。
答:class curve1 : public curve{virtual double f(double x) {return3*x*x+2*x+1; }};。