1、二级C+分类模拟283二级C+分类模拟283选择题1、下列有关类继承的叙述中,错误的是_。 A继承可以实现软件复用 B虚基类可以解决由多继承产生的二义性问题 C派生类构造函数要负责调用基类的构造函数 D派生类没有继承基类的私有成员2、已知在一个类体中包含如下函数原型:VOLUMEOPER ATOR-(VOLUME.const;,下列关于这个函数的叙述中,错误的是_。 A这是运算符一的重载运算符函数 B这个函数所重载的运算符是一个一元运算符 C这是一个成员函数 D这个函数不改变类的任何数据成员的值3、下列程序的输出结果为_。 #includeiostream. h void main() cha
2、r*a=hello, the, world; char*pa=a; pa+; cout*paendl; Ahello Bthe Cword Dhellotheworld4、在一个长度为n的线性表中删除一个元素,最坏情况下需要移动的数据元素数目为 ( )。 A. 1 B. n-1 C. n+1 D. n25、若有如下语句 #includeiostream.h void main() int x=3; do x=x-2; coutx; while(!(-x); 则上面程序段_。 A输出的是1 B输出的是1和-2 C输出的是3和0 D是死循环6、有如下程序: #includeiostream usi
3、ng namespace std; class Part public: Part(int x=0):val(x)coutval; Part()coutval;) private: int val; ; class Whole public: Whole(int x,int y,int z=0):p2(x),p1(y),val(z)coutval; Whole()coutval; private: Part p1,p2; int val; ; int main() Whole obj(1,2,3); return 0; 程序的输出结果是_。 A123321 B213312 C213 D1231
4、237、如果类A被说明成类B的友元,则_。 A类A的成员即类B的成员 B类B的成员即类A的成员 C类A的成员函数不得访问类B的成员 D类B不一定是类A的友元8、下列定义语句中,错误的是_。 Aint px*; Bchar*acp10; Cchar(*pac)10; Dint(*p)();9、下列叙述中正确的是 A. 线性链表是线性表的链式存储结构 B. 栈与队列是非线性结构 C. 双向链表是非线性结构 D. 只有根结点的二叉树是线性结构10、有以下程序: #includeiostream using namespace std; class A private: int a; public:
5、A(int i) a=i; void disp() couta,; class B private: int b; public: B(int j) b=j; void disp() coutb,; class C:public B,public A private: int c; public: c(int k):A(k-2),B(k+2) c=k; void disp() a:disp(); B:disp(); coutcendl; ; int main() C obj(10); obj. disp(); return 0; 程序执行后的输出结果是_。 A10,10,10 B10,12,1
6、4 C8,10,12 D8,12,1011、有如下定义: int a5=1, 3, 5, 7, 9, *P=a; 下列表达式中不能得到数值5的是_。 Aa2 Ba3 C*(P+2) D*P+412、下列各组类型声明符中,含义相同的一组是_。 Aunsigned long int和long Bsigned short int和short Cunsigned short和short Dshort int和int13、执行语句:coutsetfill(*)setw(10)setfill(#)left123OKendl;return 0;)后将输出( )。 A123*OK B123#OK C123*O
7、K* D123#OK#14、以下不能正确定义二维数组的选项是( )。 Aint a22=1,2; Bint a2=1,2,3,4); Cint a22=1,2,3; Dint a2=1,2,3,4;15、执行下面的程序段后,变量k的值为( )。 int k=3,s2; s0=k; k=s1*10; A. 不定值 B. 33 C. 30 D. 1016、已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME.const;,下列关于这个函数的叙述中,错误的是_ 。 A. 这是运算符的重载运算符函数 B. 这个函数所重载的运算符是一个一元运算符 C. 这是一个成员函数 D.
8、 这个函数不改变类的任何数据成员的值17、C+系统预定义了4个用于标准数据流的对象,下列选项中不属于此类对象的是_。 Acout Bcin Ccerr Dcset18、若已知“int a37;”,则用指针表示数组a中的元素时,下列表示中错误的是_。 A*(a+1)5 B*(*a+3) C*(*(a+1) D*(*a00+2)19、面向对象的开发方法中,类与对象的关系是_。 A抽象与具体 B具体与抽象 C部分与整体 D整体与部分20、下列排序方法中,最坏情况下时间复杂度(即比较次数)低于O(n2)的是_。 A快速排序 B简单插入排序 C冒泡排序 D堆排序21、下列程序的输出结果是( )。 #in
9、cludeiostream.h main() int m=5; if(m+5) coutm; else coutm-; A. 7 B. 6 C. 5 D. 422、下列关于文件流的描述中,正确的是_。 A文件流只能完成针对磁盘文件的输入/输出 B建立一个文件流对象时,必须同时打开一个文件 C若输入流要打开的文件不存在,将建立一个新文件 D若输出流要打开的文件不存在,将建立一个新文件23、一个满二叉树其深度为4,则其叶子节点的个数为( )。 A. 8 B. 16 C. 32 D. 424、面向对象程序设计将数据与( )放在一起,作为一个互相依存、不可分割的整体来处理。 A. 信息 B. 数据抽象
10、 C. 数据隐藏 D. 对数据的操作25、在软件开发中,需求分析阶段产生的主要文档是_。 A软件集成测试计划 B软件详细设计说明书 C用户手册 D软件需求规格说明书26、有如下程序: #includeiostream using namespace std; class Publication /出版物类 char name30; public: Publication(char *name=未知名称) strcpy(this-name,name); const cha * getName()constreturn name; virtual const char * getType()con
11、streturn未知类型; ; class Book:public Publication /书类 public: Book(char *name): Publication(name) virtual const char * getType()constreturn书; ; void showPublication(Publication &p) coutp.gettype():p.getName()endl; int main() Book book(精彩人生); showPublication(book); return 0; 运行时的输出结果是_。 A未知类型:未知名称 B未知类型:
12、精彩人生 C书:未知名称 D书:精彩人生27、有如下程序: # include ioslreclm Using namespace std; class Base public: Base(int x=0):valB(x)coutvalB; Base()coutvalB; Private: int valB; ; class, Derived: public Base public: Dcrived(int x=0,int y=0):Base(x),valD(y) coutvalD; Derived()coutvalD; private: int valD; ; int main() Deri
13、ved obj12(2,3); return 0; 运行时的输出结果是( ), A2332 B2323 C3232 D322328、下面程序的运行结果是( )。 #includeiostream.h int x=5; int fun(int a) int c; C=X*a; retum c; void main() int x=3,a=4; x=x+fun(a); coutx”Xendl; Ax=15 Bx=17 Cx=23 Dx=2529、运行以下程序后,如果从键盘上输入shose后回车,则输出结果为 _。 # includeiostream.h void main() int v1=0,v
14、2=0,k=0; char ch80; cinch; while(chk) switch(chk) case s; case h; default: v1+1; case o: v2+; k+; coutv1 ,v2end1; A. 2, 0 B. 5, 0 C. 4, 5 D. 2, 530、下列关于运算符重载的叙述中,正确的是_。 A通过运算符重载,可以定义新的运算符 B有的运算符只能作为成员函数重载 C若重载运算符+,则相应的运算符函数名是+ D重载一个二元运算符时,必须声明两个形参31、有如下程序: #includeiostream using namespace std; class
15、 Point public: static int number; public: Point() number+; Point() number -; ; int Point:number=0; int main() Point *ptr; Point A, B; Point *ptr_point=new Point3; ptr=ptr_point; Point C; coutPoint:numberendl; deleteptr; return 0; 执行这个程序的输出结果是_。 A3 B4 C6 D732、有如下说明: int a10=1,2,3,4,5,6,7,8,9,10,*p=a;
16、 则数值为9的表达式是_。 A*p+9 B*(p+8) C*p+=9 Dp+833、以下程序的输出结果是( )。 #includeiostream.h void func(char*m) +m: cout*mend1; void main() static char*a=MORNING,AFTERTOON,EVENING; char*n: n=a; func(n); A为空 BMORNINGCAFTERTOON DEVENING34、有如下程序:#include iostreamusing namespace std;class BASEpublic: BASE()coutBASE;class
17、 DERIVED: public BASEpublic: DERIVED() coutDERIVED; int main() DERIVED x; return 0; 执行后的输出结果是( )。 ABASE BDERIVED CBASEDERIVED DDERIVEDBASE35、有如下程序: #includeiostream #includeiomanip using namespace std; int main() int s=123,234; coutrightsetfill(*)setw(6); for(int i=0;i2;i+)coutsiendl; return 0; 运行时的
18、输出结果是_。 A123 234 B*123 234 C*123 *234 D*123 234*36、有函数模板声明和一些变量定义如下: templateclass T1,class T2,class T3T1 sum(T2,T3); double d1,d2; 则下列调用中,错误的是_。 Asumdouble,double,double(d1,d2); Bsumdouble,double(d1,d2); Csumdouble(d1,d2); Dsum(d1,d2);37、有如下程序: #includeiostream #includestring using namespace std; c
19、lass Instrument public: Instrument(string t=乐器,string n=无名):type(t),name(n) virtual string GetType() constreturn乐器; virtual string GetName() constreturn无名; protected: stnng type,name; ; class Piano:public Instrument public: Piano(string n,string t=钢琴):lnstrument(t,n) string CetType() constreturn钢琴;
20、string GetName() constreturn name; ; int main() Instrument * pi=new Piano(星空); coutpi-GetType()-pi-GetName(); delete pi; return 0; 运行时的输出结果是_。 A钢琴-星空 B钢琴-无名 C乐器-星空 D乐器-无名38、下列关于输入流类成员函数getline()的描述中,错误的是_。 A该函数是用来读取键盘输入的字符串的 B该函数读取的字符串长度是受限制的 C该函数读取字符串时,遇到终止符便停止 D该函数读取字符串时,可以包含空格39、下面程序的输出结果是_。 #inc
21、lude iostream using namespace std; int main() int n=10; while(n7) n-; coutn,; coutendl; A10,9,8, B9,8,7, C10,9,8,7, D9,8,7,6,40、下列关于类模板的叙述中,错误的是_。 A类模板描述的是一组类 B可以为类模板的参数设置默认值 C类模板的成员函数可以是函数模板 D定义类模板时只允许有一个模板参数答案:选择题1、D解析 3种继承方式中,派生类继承了基类的私有成员,但不能被直接访问,可以通过派生类的友元函数去访问基类的私有成员。2、B解析 本题考核运算符的重载。题中语句为运算符
22、一这是一个二元运算符,且是作为常成员函数来重载的,所以它不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。3、B解析 本题主要考查的是指针数组和指向指针的指针之间的关系,其中a是指针数组,pa是指向指针数组行的指针,所以pa自加1相当于指向下一行。4、B解析 在一般情况下,要删除第i个元素时,首先是从第i+1个元素开始,直到第n个元素之间共n-i个元素依次向前移动一个位置,删除结束后,线性表的长度减1。最坏情况指的是删除线性表的第一个元素,则需要移动表中第1个元素以外所有的元素,答案为B。5、B解析 do.while语句的一般格式为“do循环体语句while(表达式);”,先执行循环体语句一次,再判断表达式的值,若为真则继续执行循环,否则终止循环。本题中,先执行x=x-2,即为1。判断表达式的值,!(-x)为真,x=0,继续循环。再次执行循环体语句后,x=-2,此时表达式的值为0,结束循环。6、B解析 此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右)接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序,最后执行自身的构造函数。析
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2