还剩2页未读,继续阅读
文本内容:
西北大学学年第学期本科考试出题专用纸2010•…20111总面向对象程序设计考试科目C++分11下面的说法中,不正确的一句是()A.类的友元函数是类的特殊成员函数,它对所有的类成员、保护成员和私有成员享有完全访问特权单项选择题分-V30(每小题2分,共30分)B.一个类的友元类中的成员函数都是这个类的友元函数
1、下列的符号常量定义中,错误的定义是()o C.适用于类成员函数和数据的访问控制同样适用于枚举和嵌套类A)const floatM=
10.0;B)const intM=20;D.与结构类似,类也可以互相嵌套,适用于嵌套结构的规则也适用于嵌套类C)const charch;D)const boolmark=true;
2.以下关于函数模板叙述正确的是()12^下面程序使用new与delete命令A)函数模板也是•个具体类型的函数B)函数模板的类型参数与函数的参数是同•个概念#include iostream.hmain()C)通过使用不同的类型参数,函数模板可以生成不同类型的函数(D)用函数模板定义的函数没有类型long*p,i;
3.采用重载函数的目的是()op=new long;A)实现共享B)减少空间C)提高速度D)使用方便,提高可读性if(!p){
4.关于动态联编的下列描述中,错误的是()coul«、Allocation error\n\A.动态联编是以虚函数为基础的B.动态联编时在运行时确定所调用的函数代码的return1;C.动态联编调用函数操作是使用指向对象的指针或对象引用)*p=l()(X);D.动态联编是在编译时确定操作函数的i=(long)p;
5.下面函数()的表示方法说明它使用对象的引用作为参数cout«Here isinteger atpWdpvcfn”;A.test(pt*p)B.test(pt p)C.test(pt p)D.test(const P)cout«**Here isi:vvivvT;
6.虚函数的调用delete p;A.-•定使用动态联编B.必须使用动态联编C.一定使用静态联编D.不一定使用动态联编return0;
7.重载函数在调用时选择的依据中,()是错误的下面是对这段程序的叙述,其中正确的是()A.参数个数B.参数类型C,函数名字D.函数类型A.有错误,编译不能通过B.正确,执行结果为
100010008、假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为()o C.正确,但执行结果的第二个数值不定D.正确,执行结果的各个数值均不为1000A.abc B.*this C.this D.this
13.引入友元的主要目的是为了()
9、下而是关于静态成员的说法,其中不正确的是(A.增强数据安全性B.提高程序的可靠性A.静态成员有类作用域,但与普通非静态成员有所不同C.提高程序的效率和灵活性D.保证类的封装性B.静态函数没有lhi$指针,同一个类的不同对象拥有相同的静态数据成员
14、设置虚基类的目的是()A.简化程序B.消除二义性C.提高运行效率D.减少目标代码C.静态数据成员的初始化必须在类外进行D.静态函数同样可以访问非静态数据成员
15、下列关于纯虚函数与抽象类的描述中,错误的是()
10、在下面几个元素中,不是面向对象的要素的是()A.纯虚函数是一种特殊函数,它允许没有具体的实现B.抽象类是指具有纯虚函数的类A.重载B.对象C.类D.继承C.一个基类的说明中有纯虚函数,该基类的派生类一定不再是抽象类D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出第1页(共4页)本卷为闭(开)卷本卷为A(B)卷印数出题院系信息学院出题人安娜出题日期2010年12月17S审批人Class dcrivcd:publicbase考试科目C++面向对象程序设计总分public:intfint a,int b;
二、指出下列程序中的错误,并说明原因每小题5分,共1分{return a*b;}
1.请指出以下程序的4处错误的位置及原因1;#inchideiostream.hclass sample
三、分析程序,根据题目要求下写结果每小题5分,共20分public:sampleinc xx,intzz
1、读程序输出结果#includeioslream.hx=xx;class A{int a;z=zz;public:Aintaa=0{a=aa;}void disp{coul«x«y«z«endl;}-A{cout«Destruclor A!«a«endl;}staticvoid fl};class B:publicA{int b;cout«x«y«z«endl;public:}Binl aa=0,int bb=0:Aaa{b=bb;}void〜sample〜B{cout«Destructor B!,,«b«endl;}};{coutvdeslructing objecf^endl;}protected:void main{int x;Bx5,y6,7;staticinty=100;const z;};void mainconstsamplea23,5;a
2.disp;
2、下面程序中虚函数被重新定义的方法正确吗?为什么?Class basePublic:Virtual intfint a=0;;第2页共4页本卷为闭开卷本卷为AB卷印数出题院系信息学院出题人安娜出题日期2010年12月17日审批人考试科目C++面向对象程序设计总分class divide2:vinual publicbasc{int b2;public:divide2{b=20;}};class subdividc:public dividcl,public divide{int d;void mainvoid{subdivide d;int i=d.b;cout«i«cndl;}}
2、在下划线处填上正确的语句并给出程序的输出结果#include iostream.h/include_______1_________class strA{public:strAfloat,float,float;________2__________;________3__________;public:float a.b.c;;float strA::fun1{return a+b+c;}strA::strAfloat i.floatj.float ka=i;b=j;c=k;double srA::fun2{float s;s=floata+b+c/
2.0;return sqrts*s-a*s-b*s-c;void main{strA tri3,4,5;cout«tri.funl«endl;cout«tri.fun2«endlin;
3、下面这一程序是关于多重继承时构造函数的调用顺序问题,给出正确的输出结果并说明原因#include iostream.hclass base{public:int b;base{b=0;}};class dividekvirtualpublic base{int bl;public:dividel{b=10;};第3页共4页本卷为闭开卷本卷为A B卷印数出题院系信息学院出题人安娜出题日期2010年12月17日审批人考试科目C++面向对象程序设计总分
四、编写程序(每小遢分,共分)
20401、编写一个程序模拟超元市的收银系统具体要求如下
(1)提示输入顾客买的商品名称和单价(以为单位),直到所彳亍购买商品输入完毕(空格键表示输入完毕)
(2)在屏幕上输出顾客购买的所有商品的名称和单价,每种商品的总价,顾客应付钱数
(3)提示输入实际交的钱数,计
(4)算应找钱数并显示按回车键返回第一步,按t键退出程序运行(20分)程序运行结果如下所示输入商品名称萼片输入单价
1.00输入数量10输入商品名称洗衣粉输入单价
9.8输入数量1(按空格键,退出输入记商品名称单薯片1J t程)洗衣粉9价数量总价应付输入实际付20元)01010找零:
0.2元
819.8(按回车键返回第一
19.8(元)行)商品名称XXXO OO
2、写一个程序,定义抽柱体)、cube(正方体象基类container,由它派生出3个派生类sphere(球体)、cylinder(圆)o用虚函数分别计算几种图形的表面枳和体积(20分)第4页共4页本卷为闭(开)卷本卷为AB卷印数出题院系信息学院出题人安娜出题日期2010年12月17日审批人。