《c++模拟题.doc》由会员分享,可在线阅读,更多相关《c++模拟题.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、班 级 学 号 姓 名 密封装订线 密封装订线 密封装订线西南交通大学20102011学年第(2)学期考试课程代码 0471004 课程名称 面向对象程序设计 考试时间120分钟题号一二三四五总成绩得分 阅卷教师签字: 答题说明: 考试形式:闭卷; 考试时间:120分钟; 全部答案请写在答题卷上,试题卷上作答无效。一、填空题(每空120分,共20分)1. 运算符重载有两种方法,即重载为类的成员函数,或类的 1 函数。2. 带有纯虚函数的类是 2 。3. 面向对象的程序设计有四大特征,是抽象、封装、 3 、 4 。4. 在C+程序中,动态建立和删除堆对象是采用 5 和 6 这两个运算符来实现的。
2、5. 对于private派生方式,基类中访问权为 7 和 8 的成员在派生类中的访问权都是private,而基类中的private成员则在派生类中标识符不可访问。6. 后置+运算符被重载为友元函数时,其参数的个数为 9 个。7. 在C+中,当用class定义一个类时,数据成员和成员函数的默认访问权限是 10 ,而struct中成员的默认访问权限是 11 .8. 以下程序在字符文件ABC.TXT中输出如下所示字符图形,请填空使之完整。 * * * *#include #include #include using namespace std;void main() int n=5; ofstre
3、am f( (12) ); for(int i=1;i=n;i+) for(int j=1;j= (13) ;j+) f*; f (14) ; f.close(); 9. 下面的程序用函数计算两个数的平方之和与平方之差。运行结果为25,7(即42+32,42-32)。 #include using namespace std;int func1(int x,int y,int 15 ,int 16 )*cp=x*x+y*y;*dp=x*x-y*y;void main( ) int a=4,b=3,c=5,d=6;func1(a,b, 17 );coutc”,”dendl;10.下面的程序中,类
4、B由类A派生,若程序的输出为AB,请填空完善程序。#include using namespace std; class A public: virtual void print() coutA; ;class B:public A public: void print() coutprint(); B b; ptr= 20 ; ptr-print();二、 单项选择题(215分)1. C+语言建立类族是通过 ( )(A)类的嵌套 (B) 类的继承 (C) 虚函数 (D) 抽象类2. 关于new运算符的下列描述中,下面那一项 ( )是错的。(A) 它可以用来动态创建对象和对象数组;(B) 使用
5、它创建的对象或对象数组可以使用运算符delete删除;(C) 使用它创建对象时要调用构造函数;(D)使用它创建对象数组时必须指定初始值。3. 有如下两个类定义 class XX private: double x1;protected: double x2;public: double x3;class YY:protected XX private: double y1; protected: double y2; public: double y3;在类YY中保护成员变量的个数是 ( ) (A) 1 (B) 2 (C) 3 (D) 44. 以下不能在C+中重载的运算符是 ( ) 。(A)
6、* (B) = (C) (D) :5. 在下面函数声明中,哪个是“void fun(int a, int b);”的重载函数? ( ) (A) int fun(int x, int y);(B) void fund(int a, char b);(C) float fun(int a, int b, int c=3);(D) void fun1(int a, char, int b = 5);6. 一个类的友元函数能够通过( )访问该类的所有成员(A) 静态数据 (B) 析构造函数(C) this指针 (D) 类对象参数7. 以下正确的描述是()(A) 不允许设置参数的默认值(B) 设置参数的
7、默认值只能在定义函数的时候设置(C) 设置参数默认值时,应按照从右向左的顺序设置(D) 设置参数默认值时,应该全部参数都设置8. 下面函数中,哪个不是clock类的成员函数 ? ( )class clockpublic:void clock();void clock();friend int setTime();inline void showTime();(A) clock (B) clock(C) setTime (D) showTime9. 如果类A被说明成类B的友元,则( )。 (A)类A的成员即类B的成员(B)类B的成员即类A的成员 (C)类A的成员函数不得访问类B的成员 (D)类B
8、不一定是类A的友元10. C+中,语句int a=5,&b=a,*p=&b;*p+=2;coutab*p;输出的值是( ) 。(A) 777 (B) 557 (C) 577 (D) 55511. 假定一个类A的构造函数A(int aa,int bb)a=aa;b=a*bb;则执行A x(3,5);语句后,x.a和x.b的值分别为 ( )(A) 3和5 (B) 5和3 (C) 15和3 (D) 3和1512. 若有如下说明int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则数值为5的元素的表达式是 ( )(A) *p+8 (B) p+5 (C) *p+=4 (D) *(p+4)
9、13. 关于构造函数,下面说法错误的是:A)对用户来说,是否调用构造函数不可选,它由编译器在对象定义时自动完成。B)构造函数也是类的一个成员函数,具有一般成员函数的特征,也可以被重载。C)拷贝构造函数的作用是使用一个已经存在的对象去初始化一个新的同类的对象。D)构造函数的函数名与类名相同,而且有返回值。14. 下面是类shape的定义: class shape public: virtual void Draw()=0;下列关于shape类的描述中正确的是( )A)类shape是虚基类B)类shape是抽象类C)类shape中的Draw函数声明有误D)语句“shape s;”能够建立shape
10、类的一个对象s15. 7. 实现运行时的多态性要使用 ( ) 。(A) 重载函数 (B) 构造函数 (C) 析构函数 (D) 虚函数三、判断正误题(110分)1. 具有不止一个父类的继承关系称为多继承。2. C+中,类和结构是一样的。3. 一个类定义中可以没有析构函数,但必须构造函数。4. 运算符重载函数的参数可以具有缺省值。5. 引用,即别名。6. 模板是一种参数多态。7. 不能定义抽象类的对象,但可以定义抽象类的指针。8. 文件是一种特殊的输入输出设备。9. 某运算符用友元函数实现了重载,则该运算符一定可以用类的成员函数实现重载。10. 关键词try一定要和catch配合使用。四、阅读程序
11、题(45,共20分)1. 写出下面程序的运行结果。#include using namespace std;int area(int l=5,int w=5) return l*w;void main()cout area()endl;cout area(10,2)endl;cout area(2)endl;2. 写出下面程序的运行结果。#include stdafx.h#include using namespace std;int Div(int x,int y);void main() try cout7/2=Div(7,2)endl; cout8/0=Div(8,0)endl; cou
12、t5/2=Div(5,2)endl; catch(int) coutexcept!n; coutendingn;int Div(int x,int y)if(y=0)throw y;return x/y;3. 写出下面程序的运行结果。#include using namespace std;void main() char a40=”goodnighta”,*p; for(p=a;*p!=a;p+) putchar(*p-32);4. 写出下面程序的运行结果。#include using namespace std;intf(int); intmain() inti; for(i=1;i=5;
13、i+) coutf(i);return0; intf(inti) staticintk=1; k+=1; returnk; 5.写出下面程序的运行结果。#include using namespace std;class B1public: B1(int i) coutconstructing B1 iendl; ;class B2public: B2(int j) coutconstructing B2 jendl; ;class B3public: B3() coutconstructing B3 *endl; ; class C:public B1,public B2,public B3
14、 public:C:C(int a, int b, int c, int d):B1(c),memberB2(a),memberB1(d),B2(b) private:B1 memberB1;B2 memberB2;B3 memberb3; ;void main() C obj(1, 2 , 3 , 4);五、程序设计题(102分)1. 编写程序声明类point类来描述平面上的点,包含私有数据成员x和y。将运算符“+”重载为其成员函数,实现两个point对象的相加(x与x相加,y与y相加)。 (本题不要求给出主程序)2. 定义函数模板,完成对数组元素的查找。要求函数包括三个参数,分别为数组名、
15、元素个数,待查数据。函数中,查找成功,则输出success,查找失败则输出fail。(要求给出主程序,初始化数组,由用户输入一个数据,调用函数进行查找) 8找找找函调个一一由由数始,给给( 则失失 ,成中中函查待素素组为分分三数数求查素素组,模模定序序出出题 加相加加 相相 两,成为重符符运运和据私含点点述述类 类声声编分分(设设; , ( ) , , ,() , , ; ; ( ; ( ) 果果结序程程出 ) ;0;)+ ;=;) 果果的下下写) * +; *; * ”00 ( 果果序序程出 00= ( , ,(=/ ( ) , 果结的的程程 ( 00 ( ( 果果行的的面出分 共(序用使使
16、 和和 键载现现函员以以一运运该了数友算算备备出输特特是针指抽抽义但但对抽定态态多种板板名别别,值缺以以数函函载 数造造须但构构没义类类的一一结类+承多系继继父止止有分00正函函函( 函函 数 数 )(用用多行实象象个类 够 有声 中 象是 基是 是是正类类 于0) 义的 值回而而相类函函函象对的的一初初对在经经一用数数构载载也特特数数般有,个类也也成动义义象器它它可函用否来来是是误法,造 + =*)( )( * ( 表元值; , ,00 说说 和 别的 和后;) ; =;= , 数构 ( ) ( (的的输* ; ( ) ; ; 序善填,出序序若派由,的的 , ) , =,= * , ( ) ( 果。之和和平个计计用程下下 ) + =; +; ) ( ;= ( * * * * 整之之填,符下输输 符程以以 权认成成中 而 是是访的成成成据个个定 用用中 个 数数其数数友为符+后问可可识中生成成 中中而而 问中生生成 问访访式式派 对的实实来两 用象象删建,程+ 、,大四四序象 类类函带带数数 或数数员载,种种两重重分0分分 空空空效无上试题题答请钟钟分分 试;式 字师师 得成成题分 时时考 设象象向称课课0 码码订装 订封封 线 名名 考学)第 0学学西密 装封封 线订 号号 8