欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:12747461       资源大小:22.35KB        全文页数:26页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、长安大学期末考试C+样题样题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);!y&x=5;x+,y+) A1 B. 2 C. 5 D. 无限3. 己知: int a ,*p; 下列操作中,非法的是( ) 。A. p=a B. p=&a C. *p=9 D. p!=a;4下列有关语句的描述中,错误的是( )。A条件语句中,else子句可以有0个或1个BConti

    2、nue语句只能出现在循环体内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或structB定义派生类时要指出派生类的类名和基类的类名C定义派生类时一定要给出继承方式,不能默认D定

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

    5、多个派生类。12派生类对基类成员的可访问性与派生类对象对基类成员的可访问性是相同的。13保护继承方式下,基类中公有成员和保护成员在派生类中都是保护成员。14在公有继承和保护继承方式下,基类中的公有成员在直接派生类和间接派生类中都是可访问的,而直接派生类和间接派生类的对象也可访问。15静态数据成员应该在构造函数的成员初始化列表中进行初始化。16友元函数是说明在类体内的成员函数,它的定义应在类体外。17用new创建的堆对象,在使用delete释放时必须是先创建的后释放,后创建的先释放。18在C+程序中,创建一个对象时系统自动调用构造函数进行初始化,如果一个类中没有定义构造函数,则无法创建对象。19

    6、友元类中的所有成员函数只能访问友元类所在类中的私有成员。20所有的成员函数都可以重载。三.填空题(将适当的内容填写在下划线上面,每个空1分,共10分)1定义类A中有两个公有的成员函数,其中一个是构造函数,另一个是静态成员函数f1( ),还有两个私有的数据成员,一个是静态数据成员a,另一个类B的对象b。类B中有两个私有的数据成员。为满足上述要求,请填写下列程序的空白处。 A int a; b;public: (int i, int j): void f1( );2P类公有继承Q类,P和Q类中都仅有一个私有的数据成员,P类中两个成员函数,一个是构造函数,另一个友元函数fun( )。下列一段程序实现

    7、上述要求,请将空白处填上适当的内容。 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; couta-1endl; 2#include void main() int x(5); int & fun(int &); int y=fun(x)-; coutyend

    8、l;int w;int & fun(int &i) w=i*i; return w;3#include int y=3;int fun(int,int =2,int &c=y);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,int b,int &c) a=b; b=c; c=a; couta+b+cendl; return a+b+c;4#include class AB public: AB(int i,int j):b(j

    9、) ab=i+2; coutABn; AB() coutabendl; friend int fun(AB &a); private: static int a; int ab; const int b;int fun(AB &a) return AB:a+a.b+a.ab; int AB:a(0);void main()AB a(2,3),b(4,5);coutfun(a),fun(b)endl;5#include class PQpublic: PQ(int i=0) p=i; void print() coutpendl; PQ() coutPQpendl; private: int p

    10、;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; protected: int a;class N:public M public:N(int i,int j,int k):M(i),aa(j) b=k; void f1(

    11、) 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() a1=a2=0; A(int i,int j) a1=i; a2=j; A() coutAn; A(A &a) a1=a.a1+2;a2=a.a2+2; coutCn; void print() c

    12、outa1+a2endl; private: int a1,a2;void fun(A &a) A b; 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分)六简单回答问题(每小题回答结果写在该题下面空白处;每小题2分,共10分)1. 己知:int a=10,*pa=&a; 定义一个指针pa的引用ref,并计算表达式*ref*8的值。2.已知:A类中有

    13、一个成员函数说明如下:int fun (int);请将该成员函数fun( )说明常成员函数,其格式如何?该函数的功能是返回该参数的平方,写出在类体外定义该函数的语句。3使用指针作函数参数和使用引用作函数参数有何不同?4在两个不同的类中,A类对象可以赋值给类B的对象,要求A类和B类有什么关系?5C+语言中有关函数定义方面与C语言有何不同?样题1参考答案二. 单选题(每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, 2

    14、0 三. 填空题(每个空1分,共10分)1class A static int a; B b;public:A (int i, int j):B(i,j) static void f1( );2 class P:public Qpublic: P (int i, int j) :Q(j) p=i; friend void fun();private:int p ;四. 分析下列程序的输出结果(部分答对酌情给分;每小题全对5分,共30分)1. 34242. 253. 7810254.ABAB7,11645. 787PQ7PQ7PQ8PQ86.15M13 15M17M13MMMNMM五. 分析程序

    15、回答问题(共10分)4. 该程序调用了几次构造函数(全部)?(2分)答:4次5. 函数fun ()中,b. print()输出值是多少?(2分)答:126. 该程序调用了几次拷贝构造函数?(2分)答:1次六简单回答问题(每小题回答结果写在该题下面空白处;每小题2分,共10分)1. 己知:int a=10,*pa=&a; 定义一个指针pa的引用ref,并计算表达式*ref*8的值。答:指针pa的引用ref定义如下: int *&ref=pa;表达式*ref*8的值: 802.已知:A类中有一个成员函数说明如下:int fun(int);请将该成员函数fun( )说明常成员函数,其格式如何?该函数

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

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

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

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

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

    21、回值 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. 下列打开磁盘文件的访问方式常量中,_是以读方式打开文件的。A. out B. in C

    22、. 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.x); double Getx() return x;void

    23、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); P2 *pd=new P2(8,18); P1 &b=*pd; coutfun()

    24、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),y(9); for(int i=0;iA:getN();i+) coutx.get

    25、a(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 &a) a.fun(88); couta.gun();void f2(R a) a.fun(99); couta.gun();void main() T b1,b2; f1(b1); f2(b2);五、

    26、 简单回答下列问题 (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.


    注意事项

    本文(长安大学期末考试C++样题.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开