C++面向对象程序设计期末考试试题
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期末复习题

《面向对象程序设计》期末复习题一、单选题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面向对象程序设计期末考试试题卷

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#面向对象程序设计期末复习题

面向对象程序设计测试题一、单选题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++》期末考试试卷(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 》期末试卷及答案

选择题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.析构函数无任何函数类型。
- 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; }};。