收藏 分销(赏)

C++模拟题1答案.doc

上传人:丰**** 文档编号:4454406 上传时间:2024-09-23 格式:DOC 页数:16 大小:69KB
下载 相关 举报
C++模拟题1答案.doc_第1页
第1页 / 共16页
C++模拟题1答案.doc_第2页
第2页 / 共16页
C++模拟题1答案.doc_第3页
第3页 / 共16页
C++模拟题1答案.doc_第4页
第4页 / 共16页
C++模拟题1答案.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、C+程序设计模拟试卷(一)一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出得四个备选项中只有一个就是符合题目要求得,请将其代码填写在题后得括号内。错选、多选或未选均无分。1、 编写C+程序一般需经过得几个步骤依次就是A、 编辑、调试、编译、连接B、 编辑、编译、连接、运行C、 编译、调试、编辑、连接D、 编译、编辑、连接、运行答案:B解析:(P21)经过编辑、编译、连接与运行四个步骤。编辑就是将C+源程序输入计算机得过程,保存文件名为cpp。编译就是使用系统提供得编译器将源程序cpp生成机器语言得过程,目标文件为obj,由于没有得到系统分配得绝对地址,还不能直接运行。连接就

2、是将目标文件obj转换为可执行程序得过程,结果为exe。运行就是执行exe,在屏幕上显示结果得过程。2、 决定C+语言中函数得返回值类型得就是A、 return语句中得表达式类型B、 调用该函数时系统随机产生得类型C、 调用该函数时得主调用函数类型D、 在定义该函数时所指定得数据类型答案:D解析:(P51)函数得返回值类型由定义函数时得指定得数据类型决定得。A项得表达式得值要转换成函数得定义时得返回类型。3、 下面叙述不正确得就是A、 派生类一般都用公有派生B、 对基类成员得访问必须就是无二义性得C、 赋值兼容规则也适用于多重继承得组合D、 基类得公有成员在派生类中仍然就是公有得答案:D解析:

3、(P136)继承方式有三种:公有、私有与保护。多继承中,多个基类具有同名成员,在它们得子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则就是指派生类对象可以当作基类对象使用,只要存在继承关系,所以单继承或多继承都适用。基类中得公有成员采用私有继承时,在派生类中变成了私有成员,所以D项错误。4、 所谓数据封装就就是将一组数据与与这组数据有关操作组装在一起,形成一个实体,这实体也就就是A、 类B、 对象C、 函数体D、 数据块答案:A解析:(P39)类即数据与操作得组合体,数据就是类得静态特征,操作就是类具有得动作。5、 在公有派生类得成员函数不能直接访问基类中继承来得

4、某个成员,则该成员一定就是基类中得A、 私有成员B、 公有成员C、 保护成员D、 保护成员或私有成员答案:A解析:(P133)在派生类中基类得保护或者基类公有都可以直接访问,基类得私有成员只能就是基类得成员函数来访问。所以选择A项。6、 对基类与派生类得关系描述中,错误得就是A、 派生类就是基类得具体化B、 基类继承了派生类得属性C、 派生类就是基类定义得延续D、 派生类就是基类得特殊化答案:B解析:(P129)派生类得成员一个就是来自基类,一个来自本身,所以派生类就是基类得扩展,也就是基类得具体化与特殊化,派生类就是对基类扩展。B项基类不能继承派生类成员,所以错误。7、 关于this指针使用

5、说法正确得就是A、 保证每个对象拥有自己得数据成员,但共享处理这些数据得代码B、 保证基类私有成员在子类中可以被访问。C、 保证基类保护成员在子类中可以被访问。D、 保证基类公有成员在子类中可以被访问。答案:A解析:(P86)this指针就是隐藏得,可以使用该指针来访问调用对象中得数据。基类得成员在派生类中能否访问,与继承方式有关,与this没有关系。所以选择A项。8、 所谓多态性就是指 A、 不同得对象调用不同名称得函数B、 不同得对象调用相同名称得函数C、 一个对象调用不同名称得函数D、 一个对象调用不同名称得对象答案:B解析:(P167)多态性有两种静态多态性与动态多态性,静态多态性就是

6、指调用同名函数,由于参数得不同调用不同得同名函数;动态多态性就是指不同对象调用同名函数时,由于对象不同调用不同得同名函数。 多态性肯定具有相同得函数名,所以选择B项。9、 一个函数功能不太复杂,但要求被频繁调用,则应把它定义为 A、 内联函数B、 重载函数C、 递归函数D、 嵌套函数答案:A解析:(P59)内联函数特征代码少,频繁调用,执行效率高。重载函数解决统一接口得问题;递归就是子程序调用,程序调用要耗费很多空间与时间,循环/迭代都比递归有效率得多,递归只就是从形式上,逻辑比较简洁。嵌套函数即反复调用,速度较慢。所以选择A项。10、 下面函数模板定义中不正确得就是A、 AB、 BC、 CD

7、、 D答案:A解析:(P147)A项中F就是一个返回Q类型得值,而return中用返回类型作为返回值错误。所以选择A项。11、 假设ClassY:publicX,即类Y就是类X得派生类,则说明一个Y类得对象时与删除Y类对象时,调用构造函数与析构函数得次序分别为A、 X,Y;Y,XB、 X,Y;X,YC、 Y,X;X,YD、 Y,X;Y,X答案:A解析:(P130)派生类构造函数必须对这三类成员进行初始化,其执行顺序:调用基类构造函数;调用子对象得构造函数;派生类得构造函数体。析构函数在执行过程中也要对基类与成员对象进行操作,但它得执行过程与构造函数正好相反,即对派生类新增普通成员进行清理;调用

8、成员对象析构函数,对派生类新增得成员对象进行清理;调用基类析构函数,对基类进行清理,所以选择A项。12、 适宜采用inline定义函数情况就是A、 函数体含有循环语句B、 函数体含有递归语句C、 函数代码少、频繁调用D、 函数代码多、不常调用答案:C解析:(P59)内联函数具有程序代码少、频繁调用与执行效率高得特征,所以选择C项。13、 假定一个类得构造函数为A(int aa,int bb) a=aa;b=a*bb;,则执行A x(4,5);语句后,x、a与x、b得值分别为A、 3与15B、 5与4C、 4与20D、 20与5答案:C解析:(P75)a=4,因为后减,b得值与a、bb相关,b4

9、*5=20,而与aa没有任何关系。14、 在类中说明得成员可以使用关键字得就是A、 publicB、 externC、 cpuD、 register答案:A解析:extern用于声明外部变量得。register声明寄存器类型变量。无cpu类型。它们都不能声明类成员。public声明为公有访问权限,所以选择A项。15、 下列不能作为类得成员得就是A、 自身类对象得指针B、 自身类对象C、 自身类对象得引用D、 另一个类得对象答案:B解析:类得定义,如果有自身类对象,使得循环定义,B项错误。在类中具有自身类得指针,可以实现链表得操作,当然也可以使用对象得引用。类中可以有另一个类得对象,即成员对象。

10、所以选择B选项。16、 使用地址作为实参传给形参,下列说法正确得就是A、 实参就是形参得备份B、 实参与形参无联系C、 形参就是实参得备份D、 实参与形参就是同一对象答案:D解析:(P51)地址作为实参,表示实参与形参代表同一个对象。如果实参就是数值,形参也就是普通变量,此时形参就是实参得备份。所以选择D项。17、 下列程序得输出结果就是#include void mainint n3=10,20,30,40,50,60;int (*p)3;p=n;coutp00,*(p0+1),(*p)2endl;A、 10,30,50B、 10,20,30C、 20,40,60D、 10,30,60答案:

11、B解析:如果数组元素都就是相同类型得指针,则称这个数组为指针数组。指针数组一般用于处理二维数组。声明得格式为:。p表示指向数组n得行指针。如果将指针得初始化(*p)3=b;地址得等价形式:p+i pi*(p+i)都表示b数组第i+1行得第1个元素得首地址。*(p+i)+jpi+j &pij都表示b数组第i+1行、第j+1列元素得地址。值得等价形式:*(*(p+i)+j) *(pi+j) pij都表示b数组第i+1、第j+1列元素得值。所以题目分别访问p00,p01,p02。18、 在C+中,使用流进行输入输出,其中用于屏幕输入A、 cinB、 cerrC、 coutD、 clog答案:A解析:

12、(P193)(1)标准输入流cin:istream类得对象。(2)标准输出流cout:ostream类得对象。(3)非缓冲型标准出错流cerr:ostream类得对象。(4)缓冲型标准出错流clog:ostream类得对象19、 假定AA为一个类,a为该类公有得函数成员,x为该类得一个对象,则访问x对象中函数成员a得格式为A、 x、aB、 x、aC、 xaD、 (*x)、a答案:B解析:(P41)对象访问成员得方式为:对象名、成员。指针可以有两种:(*对象指针)、成员或者对象指针成员。A选项就是访问数据成员,B项就是访问成员函数。20、 关于对象概念得描述中,说法错误得就是A、 对象就就是C语

13、言中得结构变量B、 对象代表着正在创建得系统中得一个实体C、 对象就是类得一个变量D、 对象之间得信息传递就是通过消息进行得答案:A解析:(P37)A对象在C中才有,包括数据与操作两项,而C中得变量只有数据,没有操作。所以A项错误。二、填空题(本大题共20小题,每小题1分,共20分)请在每小题得空格中填上正确答案。错填、不填均无分。1、 C+得流库预定义了4个流,它们就是cin、cout、clog与_。答案:(P193)cerr解析cin、cout、clog与cerr分别用于标准输入、输出、标准错误流(缓冲)与标准错误流(非缓冲)。2、 每个对象都就是所属类得一个_。答案:(P69)实例解析类

14、就是对象得抽象,对象就是类得一个实例。3、 在已经定义了整型指针ip后,为了得到一个包括10个整数得数组并由ip所指向,应使用语句_。答案:(P78)int *ip=new int10;解析new用来动态开辟空间。常用来产生动态数组及对象构造函数。4、 函数模板中紧随template之后尖括号内得类型参数都要冠以保留字_。答案:(P145)class解析类模板得使用。template ,也可以引入多参数得如:template 5、 定义类得动态对象数组时,系统只能够自动调用该类得_构造函数对其进行初始化。答案:(P80)无参解析使用new创建对象数组,调用无参构造函数。6、 表达式cout解析

15、指针使用成员有两种方法:“”指向运算符与“、”成员访问运算符。8、 假如一个类得名称为MyClass,使用这个类得一个对象初始化该类得另一个对象时,可以调用_构造函数来完成此功能。答案:(P80)复制或拷贝复制或拷贝构造函数就就是用对象初始化新得对象。9、 对赋值运算符进行重载时,应声明为_函数。答案:(P183)类成员解析运算符重载得方法有友元或者成员函数两种途径,但就是赋值运算符只能使用成员函数得方法来实现。10、 如果要把A类成员函数f且返回值为void声明为类B得友元函数,则应在类B得定义中加入得语句_。答案:(P109)friend void A:f;解析成员函数作为另一个类得友元函

16、数,格式为:friend 返回类型 类名:函数(形参)。11、 下列程序段得输出结果就是_。for(i=0,j=10,k=0;i=j;i+,j=3,k=i+j);coutk;答案:4解析for循环结构,三个表达式得作用,初始化、循环判断条件与循环变量变化。循环执行了三次,k得作用就是计算i、j得与。12、 String 类得_方法返回查找到得字符串在主串得位置。答案:(P40)find解析string类对象方法得find,查不到字符串,则返回1。13、 int n=0;while(n=1)n+;while循环执行次数就是_。答案:无限次解析就是赋值运算符,不就是关系运算符,且不等0,所以死循环

17、。14、 控制格式输入输出得操作中,函数_就是用来设置填充字符。要求给出函数名与参数类型答案:(P195)setfill(char)解析格式控制方法得使用,如setw,setfill等等。15、 C+语言支持得两种多态性分别就是编译时得多态性与_得多态性。答案:(P167)运行时解析多态性包括静态得(编译时)多态性与动态得(运行时)多态性。16、 设函数sum就是由函数模板实现得,并且sum(3,6)与sum(4、6,8)都就是正确得函数调用,则函数模板具有_个类型参数。答案:(P61)217、 执行下列代码string str(HelloC+);coutstr、substr(5,3);程序得

18、输出结果就是_。答案:(P42)C+解析substr取子字符串,第1个参数表示要截取子串在字符串中得位置,第2个表示取多少个字符。18、 在面向对象得程序设计中,将一组对象得共同特性抽象出来形成_。答案:(P38)类解析类就是相似特征得对象得抽象,对象就是类得一个实例。19、 定义类动态对象数组时,元素只能靠自动调用该类得_来进行初始化。答案:(P77)无参构造函数解析使用new 创建动态对象数组,不能有参数,所以只能调用无参得构造函数,初始化对象20、 已知有20个元素int类型向量V1,若用V1初始化为V2向量,语句就是_。答案:(P151)vector V2(V1);解析采用向量初始化另

19、一个向量得形式:vector name1(name);三、改错题(本大题共5小题,每小题2分,共10分)下面得类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。1、 #include class Testprivate:int x,y=20;public:Test(int i,int j)x=i,y=j;int getxreturn x;int getyreturn y;void mainTest mt(10,20);coutmt、getxendl;coutmt、getyendl;答案:int x,y=20;在类内部不能对数据成员直接赋值。修改int x,y;2、 #include

20、class Testint x,y;public:fun(int i,int j)x=i;y=j;showcoutx=x;if(y)cout,y=yendl;coutendl;void mainTest a;a、fun(1);a、show;a、fun(2,4);a、show;答案:int i,int j调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认值。所以int i,int j错误。修改int i,int j0/注j只要有一个int类型得数据就行。3、 #include class Aint i;public:virtual void fun=0;A(int a)i=a;c

21、lass B:public Aint j;public:void funcoutB:funn; B(int m,int n=0):A(m),j(n);void mainA *pa;B b(7);pa=&b;答案:B(int m,int n=0):A(m),j(n)因为基类就是抽象类,不能被实例化,所以在派生类中不能调用初始化基类对象。所以B(int m,int n=0):A(m),j(n)错误,删去A(m)。修改B(int m,int n=0):j(n)4、 #include class Xpublic:int x;public:X(int x)coutx=xendl;X(X&t)x=t、x;

22、coutt、xendl;void fun(X);void fun(X t)coutt、xendl;void mainfun(X(10);答案:coutx=xx=x表达式得值要加括号。修改coutx=x)endl;5、 #include #include class Baspublic:Bas(char *s=0)strcpy(name,s);void show;protected:char name20;Bas b;void showcoutname:b、nameendl;void mainBas d2(hello);show;答案:void show;就是普通函数不就是成员函数,但就是要访问

23、类成员,需要定义为友元函数。修改friend void show;四、完成程序题(本大题共5小题,每小题4分,共20分)1、 在下面程序横线处填上适当字句,以使该程序执行结果为:50 4 34 21 100 7、1 8、1 9、1 10、1 11、1#include template void f (_)_;for (int i=0;in/2;i+)t=ai, ai=an1i, an1i=t;void main int a5=10,21,34,4,50;double d6=11、1,10、1,9、1,8、1,7、1;f(a,5);f(d,6);for (int i=0;i5;i+)cout a

24、i ;cout endl;for (i=0;i6;i+)cout di ;cout endl;答案:T a,int n,T t;解析不同得数据类型得调用,使用了模板。f函数增加t变量,因为实参类型不同,所以t得类型应该就是T类型得。2、 在下面程序得底画线处填上适当得字句,使该程序执行结果为40。#include class Test public:_;Test (int i=0)x=i+x;int Getnumreturn Test:x+7;_;void mainTest test;couttest、Getnumendl;答案:static int x;,int Test:x=33;解析从成

25、员函数访问方式类名:成员可知就是静态成员所以static int x;从结果要对初始化为33,且在类外进行初始化, int Test:x=33;。3、 在下列程序得空格处填上适当得字句,使输出为:0,2,10。#include #include class Magicdouble x;public:Magic(double d=0、00):x(fabs(d)Magic operator+(_)return Magic(sqrt(x*x+c、x*c、x);_operator(ostream & stream,Magic & c) streamc、x;return stream;void main

26、Magic ma;coutma, Magic(2), ma+Magic(6)+Magic(8)endl;答案:operator+(Magic&c),friend ostream&operator解析对加法进行重载,operator+(Magic & c),就是对插入符进行重载,要访问成员所以定义为友元函数,friend ostream & operator。4、 下面就是一个输入半径,输出其面积与周长得C+程序,在下划线处填上正确得语句。#include _;_;void maindouble rad;coutrad;double l=2、0*pi*rad;double s=pi*rad*ra

27、d;coutn The long is:lendl;coutThe area is:sendl;答案:using namespace std,#define pi 3、14159解析进行输入或输出要引入iostream, 所以using namespace std;从标点瞧没有分号,所以使用宏定义,#define pi 3、14159。/const double pi=3、141595、 程序实现大写字母转换成小写字母。#include void mainchar a;_;cina;if(_)a=a+i;couta=A & a=Z解析大写字母变小写字母相差32,需要对i声明并初始化。大写字母变

28、小写字母。要判断字符就是大写字母。五、程序分析题(本大题共4小题,每小题5分,共20分)1、 给出下面程序输出结果。#includeclass apublic:virtual void printcout a prog、 endl;class b:public a;class c:public bpublic:void printcoutc prog、endl;void show(a *p)(*p)、print;void maina a;b b;c c;show(&a);show(&b);show(&c);答案:a prog、a prog、c prog、解析考查多态性得。a类对象调用本身得虚函

29、数,b类因为没有覆写print,所以仍然调用基类得虚函数。而c类重新定义print虚函数,所以调用c类得print。2、 给出下面程序输出结果。#include #include #include bool fun(long n);void mainlong a=10,b=30,l=0;if(a%2=0) a+;for(long m=a;m=b;m+=2)if(fun(m)if(l+%10=0)cout endl;cout setw(5) m;bool fun(long n)int sqrtm=(int)sqrt(n);for(int i=2;i=sqrtm;i+)if(n%i=0)retur

30、n false;return true;答案:11 13 17 19 23 29解析循环体用来判断n就是否就是质数得函数,在main函数判断1030之间质数。3、 给出下面程序输出结果。#include class Testint x,y;public:Test(int i,int j=0)x=i;y=j;int get(int i,int j)return i+j;void mainTest t1(2),t2(4,6);int (Test:*p)(int,int=10);p=Test:get;cout(t1、*p)(5)endl;Test *p1=&t2;cout*p)(7,20)endl;

31、答案:15 27解析指向类成员函数得指针得使用,*p指向Test类中有两个参数得函数得一个指针。PTest:get、这样p就与get发生了联系。(t1、*p)(5)等价于调用一个参数得get函数。4、 #include #include #include class studentchar name8;int deg;char level7;friend class process; / 说明友元类public:student(char na,int d) strcpy(name,na);deg=d;class process public:void trans(student &s)int

32、i=s、deg/10;switch(i)case 9:strcpy(s、level, 优);break;case 8:strcpy(s、level,良);break;case 7:strcpy(s、level,中);break;case 6:strcpy(s、level,及格);break;default:strcpy(s、level,不及格);void show(student &s)coutsetw(10)s、namesetw(4)s、degsetw(8)s、levelendl;void main student st=student(张三,78),student(李四,92),stude

33、nt(王五,62),student(孙六,88);process p;cout结 果:姓名setw(6)成绩setw(8)等级endl;for(int i=0;i4;i+) p、trans(sti);p、show(sti);答案:结果:姓名成绩等级张三78中李四92优王五62及格孙六88良六、程序设计题(本大题共1小题,共10分)1、 已定义一个Shape抽象类,在此基础上派生出矩形Rectangle与圆形Circle类,二者都有GetPerim函数计算对象得周长,并编写测试main函数。class Shapepublic:ShapeShapevirtual float GetPerim=0;

34、答案:class Rectangle:public Shapepublic:Rectangle(float i,float j):L(i),W(j)Rectanglefloat GetPerimreturn 2*(L+W);private:float L,W;class Circle:public Shapepublic:Circle(float r):R(r)float GetPerimreturn 3、14*2*R;private:float R;void mainShape * sp;sp=new Circle(10);coutGetPerim endl;sp=new Rectangle(6,4);coutGetPerimendl;_

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
百度文库年卡

猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服