资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1样题 1 试题一. 单选题(所选字母填写在( )内;每 1小题分,共 10分)1. 已知: int x, y;下列表达式中,非法的是( ) 。 A. x%y B. y=-x C. -(x*y) D. x+=y2. 已知: int x, y;下列循环的执行次数是( ) 。for(x(0),y(0);!yx+,y+) A1 B. 2 C. 5 D. 无限3. 己知: int a ,*p; 下列操作中,非法的是( ) 。A. p=a B. p=4下列有关语句的描述中,错误的是( ) 。A条件语句中,else 子句可以有 0个或 1个BContinue 语句只能出现在循环体内CSwitch 语句不能出现在循环体内D循环语句可以自身嵌套,也可以相互嵌套5下列关于构造函数的描述中,错误的是( ) 。A构造函数是没有名字的 B构造函数是可以重载的C构造函数是系统自动调用的 D构造函数是可以没有参数的6下列关于运算符 new的描述中,错误的是( ) 。Anew 运算符用来创建动态对象Bnew 运算符用来创建堆对象时可进行初始化C用 new运算符创建的对象可用 delete运算符释放D用 new运算符可创建对象数据,并可同时进行初始化7下列关于公有继承方式下基类成员在派生类中访问性的描述,其中错误的是( ) 。A基类中私有成员在派生类中为私有成员B基类中公有成员在派生类中为公有成员C基类中保护成员在派生类中为保护成员D派生类中成员函数不能访问基类私有成员8类的构造函数的成员初始化列表中,不可以包含( ) 。A基类构造函数 B子对象类的构造函数C静态数据成员初始化 D常数据成员的初始9已知:B 类是 A类的公有继承的派生类,下列描述中,错误的是 ( ) 。AA 类的对象就是 B类的对象BB 类对象可以给 A类对象赋值CB 类对象的地址值可以给 A类对象指针赋值DB 类对象可以给 A类对象引用赋值10下列关于派生类定义格式的描述中,错误的是( ) 。A定义派生类可用关键字 class或 structB定义派生类时要指出派生类的类名和基类的类名C定义派生类时一定要给出继承方式,不能默认2D定义派生类时,类体中给出派生类的成员二. 判断题 (对者茌题号前划,错者划茌题号前;每小题 0.5分,共 10分)1函数体和循环语句的循环体都可为空。2数组下标只能是常量,不能是表达式。3使用 delete运算符释放一个用 new创建的数组时,每次只能释放一个元素。4设置函数参数默认值只能用常量,不能用表达式。5. 一个类的对象可以是该类的成员。6. 内部静态对象是全局对象,因为它的寿命是长的。7. 引用是一种可做函数参数的变量。8只有运算符+,-,才具有副作用。9. 构造函数与拷贝构造函数的名字都与类名相同。10 友元函数只能访问类中的私有成员。11单继承中,一个派生类只有一个基类,而一个基类可以生成多个派生类。12派生类对基类成员的可访问性与派生类对象对基类成员的可访问性是相同的。13保护继承方式下,基类中公有成员和保护成员在派生类中都是保护成员。14在公有继承和保护继承方式下,基类中的公有成员在直接派生类和间接派生类中都是可访问的,而直接派生类和间接派生类的对象也可访问。15静态数据成员应该在构造函数的成员初始化列表中进行初始化。16友元函数是说明在类体内的成员函数,它的定义应在类体外。17用 new创建的堆对象,在使用 delete释放时必须是先创建的后释放,后创建的先释放。18在 C+程序中,创建一个对象时系统自动调用构造函数进行初始化,如果一个类中没有定义构造函数,则无法创建对象。19友元类中的所有成员函数只能访问友元类所在类中的私有成员。20所有的成员函数都可以重载。三.填空题(将适当的内容填写在下划线上面,每个空 1分,共 10分)1定义类 A中有两个公有的成员函数,其中一个是构造函数,另一个是静态成员函数f1( ),还有两个私有的数据成员,一个是静态数据成员 a,另一个类 B的对象 b。类 B中有两个私有的数据成员。为满足上述要求,请填写下列程序的空白处。Aint a;b;public:(int i, int j): void f1( );2P 类公有继承 Q类,P 和 Q类中都仅有一个私有的数据成员,P 类中两个成员函数,3一个是构造函数,另一个友元函数 fun( )。下列一段程序实现上述要求,请将空白处填上适当的内容。class P public:P (int i, int j) p=i; void fun();private:;四. 分析下列程序的输出结果(分析结果写在该程序左边或右边的空白处;每小题 5分,共 30分)1.#include void main()int a=40;while(-a)if(a=20)break;if(a%2=0|a%3=0|a%5)continue;coutvoid main()int x(5);int int y=fun(x)-;coutint y=3;int fun(int,int =2,int void main()int a(2),b(3),c(4);int x=fun(a);int y=fun(a,b);int z=fun(a,b,c);coutclass ABpublic:AB(int i,int j):b(j) ab=i+2; coutclass PQpublic:PQ(int i=0) p=i; void print() coutclass Mpublic:M(int i) a=i; void f1() coutclass Apublic:A() a1=a2=0; A(int i,int j) a1=i; a2=j; A()coutclass Mint a;public:M(int i=15) a=i; coutclass Adouble x;public:A(double i) x=i; A operator +(A c) return A(x*c.x); double Getx() return x;void main()A a(0);a=A(3)+A(4);coutclass P113public:P1(int i) p1=i; virtual int fun() return p1;private:int p1;class P2:public P1public:P2(int i,int j):P1(i),p2(j) int fun() return p2;private:int p2;void main()P1 *pf=new P1(10);P2 *pd=new P2(8,18);P1 coutfun()class A tatic int N;int *a;public:A(int k) a=new intN;for(int j=0;jclass Rpublic:R() coutin Rn; virtual void fun(int i) coutR:iendl; char *gun() return HELLOn;class T:public Rpublic:void fun(int i) coutT:iendl; ;void f1(R &a)a.fun(88);couta.gun();void f2(R a)a.fun(99);couta.gun();void main()T b1,b2;f1(b1);f2(b2);15五、简单回答下列问题 (10 分 )1. 什么是友元函数?它有什么作用?2. 一个类的派生类是否还可以生成新的派生类?派生类的构造函数是否必须有成员初始化列表?3. 静态数据成员有什么特点?如何引用静态数据成员?4. 静态联编与动态联编的主要区别是什么?虚函数是否是动态联编的唯一条件?5. 使用 ifstream input; 写出以读方式打开一个磁盘文件 abc.txt 的语句。样题 2 参考答案一. 判断题 (每小题 1分,共 20分) 对的有:1,2, 3, 7, 9, 12, 14, 16, 17, 18,20 二. 填空题(每个空 2分,共 20分)1. public(公有方式),private(私有方式),protected(保护方式)2. static,类3. new,delete4. 成员函数方式,友元函数方式5. 纯虚函数三. 单选题(每小题 2分,共 20分)1. A 2. B 3. A 4. D 5. A 6. D 7. C 8. C 9. A 10. B 四. 分析下列程序的输出结果(部分答对酌情给分;每小题全对 6分,共 30分)1.in Min M17182. 203.1018184.151719DD165.in Rin RT:88HELLOR:99HELLO五. 简单回答问题(每小题 2分,共 10分)1. 答:友元函数是说明在类体内的非成员函数。说明时前边加关键字 friend。友元函数可以访问该类中的所有成员,包括私有成员。说明友元函数就是为方便地访问类中私有成员。2. 答:一个派生类可以作为基类生成新的派生类。派生类的构造函数通常为了对直接基类数据成员初始化而带有成员初始化列表。当直接基类中没有带参数的构造函数时,派生类的构造函数可以不带成员初始化列表,它隐含了基类的默认构造函数。3. 答:静态数据成员是属于类的,不是仅属于某个对象的。静态数据成员可以使用对象名来引用,也可以使用类名加作用域的方法引用。4. 答:静态联编和动态联编的主要区别在于前者是在编译时进行联编,而后者是在运行时进行联编。虚函数是动态联编的重要条件,但它不是唯一条件。动态联编还有其他不可缺少的条件,如公有继承等。5. 答: ifstream input;input.open(“abc.txt”);
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号