注:不同专业的历年真题,只要课程的代码和名称相同,均可共用参考。
浙江省2003年1月高等教育自学考试
面向对象程序设计试题
课程代码:02328
一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题2分,共40分)
1.在公有继承的情况下,基类成员在派生类中的访问权限()
A.受限制B.保持不变
C.受保护D.不受保护
2.通过()调用虚函数时,采用动态束定。
A.对象指针B.对象名
C.成员名限定D.派生类名
3.在inta=3,*p=&a;中,*p的值是()
A.变量a的地址值B.无意义
C.变量p的地址值D.3
4.C++类体系中,不能被派生类继承的有()
A.转换函数B.构造函数
C.虚函数D.静态成员函数
5.假定一个类的构造函数为A(intaa,intbb){a=aa--;b=a*bb--;},则执行Ax(4,5);语句后,x.a和x.b的值分别为()
A.4和5B.5和4
C.4和20D.20和5
6.C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是()
A.增加了一些新的运算符
B.允许函数重载,并允许设置缺省参数
C.规定函数说明符必须用原型
D.引进了类和对象的概念
7.下列符号不能组成标识符的是()
A.连接符B.下划线
C.大小写字母D.数字字符
8.类型修饰符unsigned不能修饰()
A.virtualB.int
C.longintD.float
9.一个函数功能不太复杂,但要求被频繁调用,选用()
A.内联函数B.重载函数
C.递归函数D.嵌套函数
10.下列不是描述类的成员函数的是()
A.构造函数B.析构函数
C.友元函数D.拷贝构造函数
11.C++语言中所有在函数中定义的变量,连同形式参数,都属于()
A.全局变量B.局部变量
C.静态变量D.函数
12.定义新类是通过()实现的。
A.信息隐藏B.数据封装
C.继承机制D.数据抽象
13.下面有关类说法不正确的是()
A.一个类可以有多个构造函数
B.一个类只有一个析构函数
C.析构函数需要指定参数
D.在一个类中可以说明具有类类型的数据成员
14.派生类的对象只能对它的()是可访问的。
A.公有继承的公有成员B.公有继承的私有成员
C.公有继承的保护成员D.私有继承的保护成员
15.下列不能作为类的成员的是()
A.自身类对象的指针B.自身类对象
C.自身类对象的引用D.另一个类的对象
A.参数B.访问权限
C.操作D.标识符
17.在派生类中重新定义虚函数时必须在()方面与基类保持一致。
A.参数类型B.参数名字
C.操作内容D.赋值
18.在私有继承的情况下,基类成员在派生类中的访问权限()
19.下面对于指针的描述不正确的是()
A.指针是地址变量
B.指针不能用除0以外的常量赋值
C.两个指针变量的加减法无意义
D.指针指向不同基类型的变量长度不同
20.在派生类中定义友元函数时必须在()方面与基类保持一致。
二、填空题(每空2分,共20分)
1.在一个类中可以对一个操作符进行_______重载。
2.在C++中有二种参数传递方式:______________。
3.模板对处理数据的类型的要求不同可以分为两种类型:_______。
4.静态联编是在程序_______时进行的。
5.在函数体之前加_______关键字可以防止覆盖函数改变数据成员的值。
6.一个const对象只能访问_______成员函数。
7.派生类的主要用途是可以定义其基类中_______。
8.当建立_______,程序自动调用该类的构造函数。
9.使用指向对象的指针来标识类的成员,则必须使用的运算符是_______。
10.拷贝初始化构造函数使用_______来初始化创建中的对象。
三、完成程序题(每小题5分,共20分)
1.下面程序的运行结果如下所示完成填空。
#include“iostream.h”
classtest{
private∶intnum
floatfl;
public∶test();
intgetint(){returnnum;}
floatgetfloat(){returnfl;}
~test();
};
test∶∶test()
{cout<<″Initializingdefault″< ______________} test∶∶~test(){cout<<″Desdtructorisactive″< intmain() {testarray[2]; cout< 运行结果为: Initializingdefault _____________________;∥填写结果 00 Desdtructorisactive 2.定义一个日期的类来实现重载操作符的测试,在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include classClassDate{ private∶ intyear; intmonth; intday; public∶ClassDate(inty=0,intd=0,intm=0){year=y,month=m,day=d;} intgetyear(){returnyear;} intgetmonth(){returnmonth;} ingetday(){returnday;} ____________________(iostream&s,ClassDate&a) {inty,m,d; cout<<″请输入日期:(yyyy-mm-dd)″; s>>y>>m>>d; while(y>9999‖m>-1‖m<-12‖d>-1‖d<-31) { cout<<″输入格式有错,请重新输入日期:(yyyy-mm-dd)″; } a.year=y; a.month=-m; a.day=-d; returns; _____________________∥输出重定义 {∥输出日期 s<<″现在的日期是:″; s< s< 3.在下面程序的底画线处填上适当的字句,完成程序。 classA{ public∶voidf(inti){cout< voidg(){cout<<”g\n”;} class______________{ public∶voidh(){cout<<”h\n”;} A∶∶f; voidmain() {Bd1; d1.f(6); ______________.h(); 4.根据运行结果,完成下面递归程序的填空。 intf(int*x) if(!(*x)) {cout<<*x<<","; _____________________;∥递归调用; main() {intA[]={3,2,1}; int*y; y=A; _____________________;∥引用f; 运行结果是:3,2,1 四、综合应用题(共20分) 1.分析下列程序可能的输出结果。(满分8分) {inti=17; while(i>=10) if(--i%4==3)continue; else cout<<“i=”< 2.写出模板函数实现找出三个数值中按最小值到最大值排序程序。(满分12分) TEL:蒋老师17773102705 1、鉴于各方面资讯时常调整与变化,本网所提供的信息仅供参考,实际以考试院通知文件为准。