长安大学期末考试C++样题.doc

上传人:李医生 文档编号:7196837 上传时间:2020-11-05 格式:DOC 页数:16 大小:59.51KB
返回 下载 相关 举报
长安大学期末考试C++样题.doc_第1页
第1页 / 共16页
长安大学期末考试C++样题.doc_第2页
第2页 / 共16页
长安大学期末考试C++样题.doc_第3页
第3页 / 共16页
长安大学期末考试C++样题.doc_第4页
第4页 / 共16页
长安大学期末考试C++样题.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《长安大学期末考试C++样题.doc》由会员分享,可在线阅读,更多相关《长安大学期末考试C++样题.doc(16页珍藏版)》请在三一文库上搜索。

1、样题 1 试题 一.单选题单选题(所选字母填写在( )内;每 1 小题分,共 10 分) 1. 已知: int x, y;下列表达式中,非法的是( ) 。 A. x%y B. y=-x C. -(x*y) D. x+=y 2. 已知: 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 语句只能出现在循环体内

2、 CSwitch 语句不能出现在循环体内 D循环语句可以自身嵌套,也可以相互嵌套 5下列关于构造函数的描述中,错误的是()。 A构造函数是没有名字的 B构造函数是可以重载的 C构造函数是系统自动调用的 D构造函数是可以没有参数的 6下列关于运算符 new 的描述中,错误的是()。 Anew 运算符用来创建动态对象 Bnew 运算符用来创建堆对象时可进行初始化 C用 new 运算符创建的对象可用 delete 运算符释放 D用 new 运算符可创建对象数据,并可同时进行初始化 7下列关于公有继承方式下基类成员在派生类中访问性的描述,其中错误的是( )。 A基类中私有成员在派生类中为私有成员 B基

3、类中公有成员在派生类中为公有成员 C基类中保护成员在派生类中为保护成员 D派生类中成员函数不能访问基类私有成员 8类的构造函数的成员初始化列表中,不可以包含( )。 A基类构造函数 B子对象类的构造函数 C静态数据成员初始化 D常数据成员的初始 9已知:B 类是 A 类的公有继承的派生类,下列描述中,错误的是 ( )。 AA 类的对象就是 B 类的对象 BB 类对象可以给 A 类对象赋值 CB 类对象的地址值可以给 A 类对象指针赋值 DB 类对象可以给 A 类对象引用赋值 10下列关于派生类定义格式的描述中,错误的是()。 A定义派生类可用关键字 class 或 struct B定义派生类时

4、要指出派生类的类名和基类的类名 C定义派生类时一定要给出继承方式,不能默认 D定义派生类时,类体中给出派生类的成员 二二. 判断判断题题 (对者茌题号前划,错者划茌题号前;每小题 0.5 分,共 10 分) 1函数体和循环语句的循环体都可为空。 2数组下标只能是常量,不能是表达式。 3使用 delete 运算符释放一个用 new 创建的数组时,每次只能释放一个元素。 4设置函数参数默认值只能用常量,不能用表达式。 5. 一个类的对象可以是该类的成员。 6. 内部静态对象是全局对象,因为它的寿命是长的。 7. 引用是一种可做函数参数的变量。 8只有运算符+,-,才具有副作用。 9. 构造函数与拷

5、贝构造函数的名字都与类名相同。 10 友元函数只能访问类中的私有成员。 11单继承中,一个派生类只有一个基类,而一个基类可以生成多个派生类。 12派生类对基类成员的可访问性与派生类对象对基类成员的可访问性是相同的。 13保护继承方式下,基类中公有成员和保护成员在派生类中都是保护成员。 14在公有继承和保护继承方式下,基类中的公有成员在直接派生类和间接派生类中都 是可访问的,而直接派生类和间接派生类的对象也可访问。 15静态数据成员应该在构造函数的成员初始化列表中进行初始化。 16友元函数是说明在类体内的成员函数,它的定义应在类体外。 17用 new 创建的堆对象,在使用 delete 释放时必

6、须是先创建的后释放,后创建的先释 放。 18在 C+程序中,创建一个对象时系统自动调用构造函数进行初始化,如果一个类中 没有定义构造函数,则无法创建对象。 19友元类中的所有成员函数只能访问友元类所在类中的私有成员。 20所有的成员函数都可以重载。 三三.填空填空题题(将适当的内容填写在下划线上面,每个空 1 分,共 10 分) 1定义类 A 中有两个公有的成员函数,其中一个是构造函数,另一个是静态成员函数 f1( ),还有两个私有的数据成员,一个是静态数据成员 a,另一个类 B 的对象 b。类 B 中有 两个私有的数据成员。为满足上述要求,请填写下列程序的空白处。 A int a; b; p

7、ublic: (int i, int j): void f1( ) ; 2P 类公有继承 Q 类,P 和 Q 类中都仅有一个私有的数据成员,P 类中两个成员函数,一 个是构造函数,另一个友元函数 fun( )。下列一段程序实现上述要求,请将空白处填上适 当的内容。 class P public: P (int i, int j) p=i; void fun(); private: ; ; 四四. 分析下列程序的分析下列程序的输输出出结结果果(分析结果写在该程序左边或右边的空白处; 每小题 5 分,共 30 分) 1. #include void main() int a=40; while(-

8、a) if(a=20) break; if(a%2=0|a%3=0|a%5) continue; couta-1endl; 2 #include void main() int x(5); int int y=fun(x)-; coutyendl; int w; int return w; 3 #include int 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); coutx+y+zendl; int fun(int a,in

9、t b,int b=c; c=a; couta+b+cendl; return a+b+c; 4 #include class AB public: AB(int i,int j):b(j) ab=i+2; coutABn; AB() coutabendl; friend int fun(AB private: static int a; int ab; const int b; ; int fun(AB int AB:a(0); void main() AB a(2,3),b(4,5); coutfun(a),fun(b)endl; 5 #include class PQ public: P

10、Q(int i=0) p=i; void print() coutpendl; PQ() coutPQpendl; private: int p; ; PQ a(8); void main() PQ *p1,*p2; p1=new PQ(7); p2=new PQ2; p20=a; p21=*p1; (*p1).print(); p20.print(); p21.print(); delete p1; delete p2; 6 #include class M public: M(int i) a=i; void f1() coutaMendl; M() coutMendl; protecte

11、d: int a; ; class N:public M public: N(int i,int j,int k):M(i),aa(j) b=k; void f1() coutaendl; aa.f1(); coutbNendl; N() coutNendl; private: M aa; int b; ; void fun(M a) a.f1(); void main() M a1(15); N b1(13,15,17); a1.f1(); b1.f1(); fun(b1); 五五. 分析程序回答分析程序回答问题问题(共 10 分)#include class A public: A() a

12、1=a2=0; A(int i,int j) a1=i; a2=j; A() coutAn; A(A a2=a.a2+2; coutCn; void print() couta1+a2endl; private: int a1,a2; ; void fun(A b=a; b.print(); void main() A x(4,8),y; A p(x); y=x; fun(p); y.print(); 1.该程序调用了几次构造函数(全部)?(3 分) 2.函数 fun()中,b. print()输出值是多少?(3 分) 3.该程序调用了几次拷贝构造函数?(4 分) 六六简单简单回答回答问题问题

13、(每小题回答结果写在该题下面空白处;每小题 2 分,共 10 分) 1.己知:int a=10,*pa= 定义一个指针 pa 的引用 ref,并计算表达式*ref*8 的值。 2.已知:A 类中有一个成员函数说明如下: int fun (int); 请将该成员函数 fun( )说明常成员函数,其格式如何?该函数的功能是返回该参数 的平方,写出在类体外定义该函数的语句。 3使用指针作函数参数和使用引用作函数参数有何不同? 4在两个不同的类中,A 类对象可以赋值给类 B 的对象,要求 A 类和 B 类有什么关系? 5C+语言中有关函数定义方面与 C 语言有何不同? 样题样题 1 参考答案参考答案

14、一.单选题单选题(每 1 小题分,共 10 分) 1. C 2. A 3. B 4. C 5. A 6. D 7. A 8. C 8. A 10. B 、.判断判断题题 (每小题 0.5 分,共 10 分) 对的有:2, 5, 8, 9, 11, 13, 14, 16, 20 三三. 填空填空题题( (每个空 1 分,共 10 分) 1 class A static int a; B b; public: A (int i, int j):B(i,j) static void f1( ) ; 2 class P:public Q public: P (int i, int j) :Q(j) p

15、=i; friend void fun(); private: int p ; ; 四四. 分析下列程序的分析下列程序的输输出出结结果果(部分答对酌情给分;每小题全对 5 分,共 30 分) 1. 34 24 2. 25 3. 7 8 10 25 4. AB AB 7,11 6 4 5. 7 8 7 PQ7 PQ7 PQ8 PQ8 6. 15M 13 15M 17M 13M M M N M M 五五. 分析程序回答分析程序回答问题问题(共 10 分) 1.该程序调用了几次构造函数(全部)?(2 分) 答:4 次 2.函数 fun ()中,b. print()输出值是多少?(2 分) 答:12

16、3.该程序调用了几次拷贝构造函数?(2 分) 答:1 次 六六简单简单回答回答问题问题(每小题回答结果写在该题下面空白处;每小题 2 分,共 10 分) 1.己知:int a=10,*pa= 定义一个指针 pa 的引用 ref,并计算表达式*ref*8 的值。 答:指针 pa 的引用 ref 定义如下: int * 表达式*ref*8 的值: 80 2.已知:A 类中有一个成员函数说明如下: int fun(int); 请将该成员函数 fun( )说明常成员函数,其格式如何?该函数的功能是返回该参数 的平方,写出在类体外定义该函数的语句。 答:常成员函数 fun( )说明如下: int fun

17、(int) const; 在类体外该函数定义如下: int A:fun(int a) const return a*a; 3使用指针作函数参数和使用引用作函数参数有何不同? 答:使用指针作函数形参时对应实参使用变量或对象的地址值,而使用引用作函数形参 时对应实参使用变量或对象值。 4在两个不同的类中,A 类对象可以赋值给 B 类的对象,要求 A 类和 B 类有什么关系? 答:A 类公有继承 B 类 5C+语言中有关函数定义方面与 C 语言有何不同? 答:C+语言中函数定义肘时,不可缺省函数类型;函数体内说明语句位置不受限制函; 数说明使用原型说明;可以定义重载函数;可以定义内联函数;可以设置函

18、教参数的默认值。 样题 2 试题 、 判断判断题题(对者在题号前划 ,错者在题号前划)(20 分) 1.构造函数可以重载。 2.类的数据成员不一定都是私有的。 3.对象数组的元素应是同类的对象。 4.任意一种构造函数都具有转换类型功能。 5.在私有继承中,基类中只有公有成员对派生类是可见的。 6.引用可以作函数参数,不能作函数的返回值。 7.抽象类是不能创建对象的。 8.析构函数是不能被定义为虚函数的。 9.C+语言既支持单继承,又支持多继承。 10. put()函数只能从标准流对象 cin 中提取字符。 11引用的值是不可以被改变的,它的值永远是被引用的变量的值。 12定义一个对象时,系统总

19、会对该对象进行初始化。 13没有参数的构造函数称为默认构造函数,该构造函数一定是系统自动生成的。 14在用一个对象给同类的另一个对象赋值时,调用拷贝初始化构造函数。 15静态对象的成员称为静态成员。 16友元类中的所有成员函数都是友元函数。 17this 指针是指向对象的指针,是系统自动生成的。 18运算符 new 可以创建对象,也可创建对象数组。 19定义派生类时必须指出基类名和继承方式,二者都不可默认。 20C+语言对标准文件的读写函数与对磁盘文件的读写函数是一致的。 、 填空填空题题 (20 分) 1C+语言中,类的继承方式有三种,分别是_、_、 _。 2定义静态成员使用_关键字,静态成

20、员是属于_的。 3堆对象的创建使用_运算符,删除使用_运算符。 4运算符重载的两种方式是_ 和_。 5含有_的类称为抽象类。 、 单选单选填空填空题题 (20 分) 1.关于 new 运算符的下列描述中,_是错误的。 A. 创建对象时必须指定初始值 B. 用它创建的对象应用 delete 来删除 C.可用它来创建动态对象 D. 创建对象时要调用构造函数 2.派生类的对它基类中_成员不可以访问。 A. 公有继承的公有 B. 公有继承的私有 C. 公有继承的保护 D. 私有继承的公有 3.关于派生类的下列描述中_是错误的。 A. 派生类中继承基类成员的访问权限不变 B. 派生类至少有一个基类 C.

21、 派生类还可作另一个派生类的基类 D. 派生类中包含它基类中的成员 4.下列对重载函数的描述中_是正确的。 A. 运算符重载可以改变结合性 B. 运算符重载可以改变优先级 C. 运算符重载可以改变操作数的个数 D. 运算符重载不可以改变语法结构 5.在类体内说明虚函数使用的关键字是_。 A. virtual B. friend C. inline D. static 6.下列关于构造函数的特征中,_是正确的。 A. 不可以重载 B. 不可以设置缺省参数 C. 与类名不同 D. 不说明其类型 7.己知:类 Point 中有一个成员函数说明如下 Point 下面对返回值的描述由_是正确的。 A.

22、该函数无返回值 B. 该函数返回值是类 Point 对象 C.该函数返回值是类 Point 的对象的引用 D.该函数返回值是指向类 Point 的对象的地址 8.关于动态联编的下列描述中_是错误的。 A.动态联编是以公有继承为基础的 B.动态联编是在运行中确定所选函数代码的 C.动态联编是在编译时确定所选函数代码的 D.动态联编要有虚函数 9.下列输出字符串”MN”的方法中,_是正确的。 A. coutput(“MN”); B. cout”MN”; C. cout.put(“MN”); D. coutwrite(“MN”); 10. 下列打开磁盘文件的访问方式常量中,_是以读方式打开文件的。

23、A. out B. in C. ate D. app 、 分析下列程序的分析下列程序的输输出出结结果果 (30 分) 1. #include class M int a; public: M(int i=15) a=i; coutin Mn; int geta() return a; ; void main() M r1,r2(18); coutoctr1.geta()endl; coutdecr2.geta()endl; 2. #include class A double x; public: A(double i) x=i; A operator +(A c) return A(x*c.

24、x); double Getx() return x; ; void main() A a(0); a=A(3)+A(4); couta.Getx()+8endl; 3. #include class P1 public: P1(int i) p1=i; virtual int fun() return p1; private: int p1; ; class P2:public P1 public: P2(int i,int j):P1(i),p2(j) int fun() return p2; private: int p2; ; void main() P1 *pf=new P1(10)

25、; P2 *pd=new P2(8,18); P1 coutfun()endl; coutb.fun()endl; cout(*pd).fun()endl; delete pf; delete pd; 4. #include class A tatic int N; int *a; public: A(int k) a=new intN; for(int j=0;jN;j+) aj=j+k; int geta(int i) return *(a+i); static int getN() return N; A() coutDn; delete a; ; void main() A x(6),

26、y(9); for(int i=0;iA:getN();i+) coutx.geta(i)+y.geta(i)endl; int A:N=3; 5. #include class R public: R() coutin Rn; virtual void fun(int i) coutR:iendl; char *gun() return HELLOn; ; class T:public R public: void fun(int i) coutT:iendl; ; void f1(R couta.gun(); void f2(R a) a.fun(99); couta.gun(); voi

27、d main() T b1,b2; f1(b1); f2(b2); 、 简单简单回答下列回答下列问题问题 (10 分) 1.什么是友元函数?它有什么作用? 2.一个类的派生类是否还可以生成新的派生类?派生类的构造函数是否必须有成员 初始化列表? 3.静态数据成员有什么特点?如何引用静态数据成员? 4.静态联编与动态联编的主要区别是什么?虚函数是否是动态联编的唯一条件? 5.使用 ifstream input; 写出以读方式打开一个磁盘文件 abc.txt 的语句。 样题样题 2 参考答案参考答案 一一. 判断判断题题 (每小题 1 分,共 20 分) 对的有:1,2, 3, 7, 9, 12,

28、 14, 16, 17, 18,20 一. 填空填空题题( (每个空 2 分,共 20 分) 1. public(公有方式),private(私有方式),protected(保护方式) 2. static,类 3. new,delete 4. 成员函数方式,友元函数方式 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 M in M 17 18 2. 20

29、3. 10 18 18 4. 15 17 19 D D 5. in R in R T:88 HELLO R:99 HELLO 五五. 简单简单回答回答问题问题(每小题 2 分,共 10 分) 1.答:友元函数是说明在类体内的非成员函数。说明时前边加关键字 friend。 友元函数可以访问该类中的所有成员,包括私有成员。说明友元函数就是为方便地访问 类中私有成员。 2.答:一个派生类可以作为基类生成新的派生类。 派生类的构造函数通常为了对直接基类数据成员初始化而带有成员初始化列表。当直 接基类中没有带参数的构造函数时,派生类的构造函数可以不带成员初始化列表,它隐含了 基类的默认构造函数。 3.答:静态数据成员是属于类的,不是仅属于某个对象的。 静态数据成员可以使用对象名来引用,也可以使用类名加作用域的方法引用。 4.答:静态联编和动态联编的主要区别在于前者是在编译时进行联编,而后者是在运行时 进行联编。 虚函数是动态联编的重要条件,但它不是唯一条件。动态联编还有其他不可缺少的条件, 如公有继承等。 5.答: ifstream input; input.open(“abc.txt”);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1