《面向对象程序设计(C++)》期末考试试题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第1页(共5页)学习中心/函授站_西安电子科技大学校本部姓名学号西安电子科技大学网络与继续教育学院2015学年上学期《面向对象程序设计(C++)》期末考试试题(综合大作业)题号一二三四五总分题分1020202030得分考试说明:1、大作业于2015年4月3日公布,2015年5月9日前在线提交;2、考试必须独立完成,如发现抄袭、雷同、拷贝均按零分计。一、简答题(10分)1.1(3分)C++提供了哪些循环语句?它们各自的特点是什么?C++语言提供三种循环语句:for循环语句应用最广泛,使用最灵活。不仅可以用于循环次数已经确定的情况,也能用于循环次数不确定、只给出循环结束条件的情况。while循环语句,其特点是先判断表达式,后执行语句,在循环体中应有使循环趋于结束的语句。do-while语句,其特点是先执行语句,后判断表达式。对同一个问题可以用while语句处理,也可以用do-while语句处理。1.2(3分)在C++中什么可以充当友元?友元是否可以继承,为什么?在C++中,自定义函数可以充当友元,友元只是能访问指定类的私有和保护成员的自定义函数,不是被指定类的成员,自然不能继承1.3(4分)若派生类以private方式从一个基类派生,派生类的对象可以访问基类中的那些成员?派生类的成员函数可以访问基类中的那些成员?二、填空题(每空1分,共20分)2.1break语句在循环结构中的功能是是跳出整个循环,continue语句的功能是跳过本次循环。2.2有一段程序为:while(表达式)语句1语句2……当表达式的值为非0时,执行语句1后执行语句2;当表达式为0时,执行语句2。2.3使用关键字Inline说明的函数称为内联函数。编译时,源程序中所有对该函数第2页(共5页)的调用被替换为此函数的体内。2.4数组名代表的是该数组的_数组首地址的指针;数组元素作为函数的实参时,是以指针方式传递参数的。2.5在C++中,类A的每一个非静态成员函数都有一个隐藏的指针类型的形参This指针,它指向当前正在操作的对象,其类型为。2.6C++语言引入了异常处理机制,用throw语句“抛出”异常,然后用相应的语句_try捕获被“抛出”的异常,并做出相应的处理。2.7在C++语言中,用new表达式来创建动态的类对象;用_delete___表达式释放动态类对象。2.8C++支持两种类型的多态,编译时多态和运行时多态。运行时多态是通过虚函数来实现的,编译时多态是通过函数重载来实现的。2.9纯虚函数就是特殊的虚函数,包含纯虚函数的类称为抽象类。2.10在某些应用中,需要程序中属于某个类的所有对象共享某个数据。在C++语言中,为了不破坏数据的封装性,需将所要共享的数据说明为类的私有成员,即用关键字_private_______说明的类成员。三、选择题(每题2分,共20分)3.1在下列给字符数组赋值语句中,是错误的。已知,chars[5]。A.s[0]='m';B.s[5]='n';C.s[1]='a';D.s[2]='b';3.2下列对结构变量赋值的描述中,是错误的。A.结构变量可以使用初始值表对它初始化B.可以给一个结构变量的各个成员赋值C.可将任意已知的结构变量名赋给一个结构变量D.可将一个已知结构变量名赋给相同结构类型的另一个结构变量3.3下列if语句中,条件为真的语句是。A.if(0)B.if(3)C.boolbFlag=ture;if(!bFlag)D.if(a)3.4若i的初值为1,能输出1到10的整数。A.if(i++10)couti;B.docouti;while(++i=10);C.while(i++10)couti;D.switch(++i=10)couti;3.5在下面的程序中,若实参a与形参x以引用传递的方式传递信息,实参b与形参y以值传递的方式传递信息,那么从函数compute返回主程序后,a和b的值分别为。MainProgramvoidcompute(x,y)A.5和2B.5和12C.1和2D.1和123.6下列关于运算符重载的描述中,是正确的。A.运算符重载可改变其优先级B.运算符重载不改变其语法结构C.运算符重载可改变其结合性D.运算符重载可改变其操作数的个数3.7为了使类中的成员能够被类的对象通过成员运算符访问,则应该把成员的访问权限定义为。A.publicB.protectedC.privateD.packaged3.8假设A是一个类,那么执行语句“Aa,b(3),*p;”,调用了次构造函数。A.2B.3C.4D.53.9假设类AB用成员函数的方式重载加法运算符,以实现两个AB类对象的加法,并返a:=1;b:=2;compute(a,b);x:=x+2*y;y:=2*x+y;return;第3页(共5页)回相加的结果,则该成员函数的声明为。A.ABoperator+(AB&a,AB&B);B.ABoperator+(AB&);C.operator+(ABa);D.AB&operator+();3.10下列对C++中静态数据成员的描述中,正确的是。A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员值D.静态数据成员不能通过类的对象来调用四、读程题(每题5分,共20分)4.1给出下列源程序的输出结果。#includeiostream.hintadd(int*x,intn){intsum,i;for(sum=0,i=0;in;i++)sum+=*(x+i);returnsum;}voidmain(){intarr[]={1,3,5,7};coutadd(arr,4)endl;}输出结果:164.2指出下列类定义中的3处错误。#includeiostream.hclassA{public:A(){a1=a2=0;coutDefaultconstructorcalled.\n;}A(inti,intj){a1=i;a2=j;coutConstructorcalled.\n;}voidprint(){couta1=a1,a2=a2endl;}private:inta1,a2;};voidmain(){Ax,y(3,9);x.print();y.print();}4.3给出下述源程序的运行结果。#includeiostream.h#includestring.hstructStudent{char*name;第4页(共5页)doublescore;}*p;voidmain(){Students1;p=&s1;p-name=(char*)newchar[50];p-score=95.5;strcpy(p-name,Maping);coutp-name','(*p).scoreendl;}运行结果:Maping,95.54.4给出下述源程序的运行结果并说明该程序的功能。#includeiostream.hintadd(inta,intb=5);voidmain(){intm=5;coutsum1=add(m)endl;coutsum2=add(m,add(m))endl;coutsum3=add(m,add(m,add(m)))endl;}intadd(intx,inty){returnx+y;}运行结果:sum1=10sum1=15sum1=20五、编程题(每题15分,共30分)5.1有n个整数已按由小到大的顺序排列好,要求输入一个整数,把它插入到原有数列中,而且仍然保持有序,同时输出新的数列。(插入时应考虑到插入的数的各种可能性,比所有的数都小;比所有的数都大;在最大数和最小数之间)intInsertArray(intx,inta[],intk){inti,j;if(k0||kMaxSize-1)return0;/*插入不成功返回0*/if(k==0){/*数组为空,直接插入即可*/a[0]=x;return1;}第5页(共5页)i=0;while(a[i]x){/*确定插入位置*/i++;}for(j=k;ji;j--){/*插入位置之后的元素依次后移*/a[j]=a[j-1];}a[i]=x;return1;}5.2利用运算符重载,定义复数类的加法与减法,使之能够执行下列运算。Complexa(4.0,6),b(7.4,2),c(0,0);c=a+b;c=4.1+a;c=b+2.3;

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功