C++复习题考题.pdf
《C++复习题考题.pdf》由会员分享,可在线阅读,更多相关《C++复习题考题.pdf(157页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+模拟试题(1)笔试部分一、选择题11.下面关于类和对象的描述中,错误的是()A.类就是C 语言中的结构体类型,对象就是C 语言中的结构体变量B.类和对象之间的关系是抽象和具体的关系C.对象是类的实例,一个对象必须属于一个己知的类D.类是具有共同行为工的若干对象的统一描述体【参考答案】A12.设 int a=10,b=ll,c=12;,表达式(a+b)C&B=C 的值是(p)A.2 B.0C.-2D.1【参考答案】B13.下列语句中不是死循环的是()A.int i=10;B.for(int i=l;i=0);if(i=l)break;)【参考答案】A14.下面关于数组的描述错误的是()A.在
2、 C+语言中数组的名字就是指向该数组第一个元素的指针B.长度为n 的数组,下标的范围是On-1C.数组的大小必须在编译时确定D.数组只能通过值参数和引用参数两种方式传递给函数【参考答案】D15.下面的哪个选项不能作为函数的返回类型?()A.void B.int C.new D.long【参考答案】C16.下列程序的输出结果为()#includeint func(int n)if(nl)return 1;else return n+func(n-l);return 0;void main()coutFUNC(5)ENDL;A.0B.10C.15D.16【参考答案】D17.以下程序中,错误的行为(
3、)l.#include2.class A3.4.public:5.i nt n=2;6.A(int val)coutVALENDLJ7.A()8.(;9.void main()10ll.Aa(O);12.)A.5 B.6C.7 D.11【参考答案】A18.下面程序的运行结果为()#includeclass A(int num;public:A(int i)num=i;A(A&a)num=a.num+;void print()coutNUM;);void main()(Aa(l),b(a);a.print();b.print();)A.ll B.12C.21 D.22【参考答案】c19.如果类A
4、 被说明成类B 的友元,则()A.类 A 的成员即类B 的 成 员 B.类 B 的成员即类A 的成员C.类 A 的成员函数不得访问类B 的 成 员 D.类 B 不一定是类A 的友元【参考答案】D20.建立派生类对象时,3 种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3 种构造函数的调用顺序为()A.abc B.acb C.cab D.cba【参考答案】A21.下面关于模板的描述,错误的是()A.函数模板和类模板的参数可以是任意的数据类型B.类模板不能直接使用,必须先实例化为相应的模板类,然后定义了模板类的对象后才能使用C.函数模板不能直接使用,需要实
5、例化为模板函数后才使用D.类模板的成员函数都是模板函数【参考答案】A22.下面程序的运行结果是()#includevoid main()int num=l;int&ref=num;refcref+2;coutNUM;num=num+3;coutREFENDL;A.13B.16C.36D.33【参考答案】C23.下列程序的运行结果为()#includeint i=0;class A public:A()i+;);void main()Aa,b3,*c;c=b;coutIENDL;A.2 B.3 C.4 D.5【参考答案】c24.下列字符串中可以用C+语言标识符的是()A._1234 B.foob
6、arC.virtua D.34var【参考答案】A25.下列语句的输出结果()coutSTRLEN(z,T,Z 065XFFN/z);A.5B.14 c.8D.输出项不合法,无正常输出【参考答案】A26.若有如下语句()#includevoid main()int x=3;dox=x-2;coutX;while(!(x);则上面程序段A.输出的是1 B.输出的是1和-2 C.输出的是3 和 0 D.是死循环【参考答案】B27.以下程序中调用cin函数给变量a 输入数值的方法是错误的,其错误原因是()#includevoid main()int*p,*q,a,b;p=&a;co u t,r in
7、put a:7;cinp;A.*p表示的是指针变量P 的地址B.p表示的是变量a 的地址,而不是变量a 的值C.*p表示的是指针变量p 的值D.*p只能用来说明p 是一个指针变量【参考答案】B28.有以下程序#includevoid fun(int a,int b,int c)a=456,b=567,c=678;void main()int x=10,y=20,z=30;fun(x,y,z);c o u t X r/vYvv ZENDLJ输出结果是()A.30,20,10B.10,20,30C.456,567,678 D.678,567,456【参考答案】B29.下列定义中p 指向的地址可更改
8、,但*p 不能够更改的是()A.const int*P B.int*const p;C.const int const p;D.int*p;【参考答案】A30.下面程序的结果是()#includeclass A(int a;public:A():a(l)void showa()coutA;);class B(int a;public:B():a(2)void showa()coutA;);class C:public A,public Bint a;public:C():a(3)void showa()coutA;void main()Cc;c.showa();A.l B.2C.3 D.程序有
9、错误【参考答案】C31.如果表达式x*y+z中,“*”是作为友元函数重载的,“+”是作为友元函数重载的,则该表达式还可为()A.operator+(operator*(x,y),z)B.x.operator+(operator*(x,y),z)C.y.operator*(operator+(x,y),z)D.x.operator+(operator:f:(x,y)【参考答案】A32.对于语句 coutSETFILL(*)SETW(10)1 A*2 B*2 C*2 D 2*【参考答案】A33.有如下程序#includeint func(int a,int b)return(a+b);void m
10、ain()int x=2,y=5,z=8,r;r=func(func(x,y),z);coutR;该程序的输出的结果是()A.12B.13C.I4D.I5【参考答案】D34.下列描述中,抽象类的特性是()A.可以说明虚函数B.可以定义友元函数C.可以进行构造函数重载D.不能说明其对象【参考答案】D35.下列程序的运行结果是()#includevoid fun(int*a,int*b)int*k;k=a;a=b;b=k;void main()i n t a=3,b=6,*x=&a,*y=&b;f u n(x,y);cou tAb;oA.6 3 B.3 6 c.编译出错 D.0 0【参考答案】B二
11、、填空题6 .C+中封装性、继承性和【6】是面向对象思想的主要特征。【参考答案】61多态性7.下列f o r语句的循环次数为 7 1f o r(i n l a=O,b=1 ;b&a 5 ;a+);【参考答案】7 58 .C+程序是从【8】函数开始执行的。【参考答案】【8】ma in9.派生类构造函数的执行顺序是先执行【9】的构造函数,然后执行成员对象的构造函数,最后执行10的构造函数。【参考答案】9.9基 类【1 0】派生类1 0 .C+语言程序的注释可以出现在程序中的任何地方,个注释以 1 1 作为开始和结束的标记。【参考答案】1 1)/*/1 1.用以下语句调用库函数ma lloc,使字符
12、指针s t指向具有1 1个字节的动态存储空间,请填空。s t=(c ha r*)12;【参考答案】1 2 ma U oc(ll)或ma lloc(s iz e of(c ha r)*1 1)1 2.下列程序在构造函数和析构函数中申请和释放类的数据成员in t*a,申请时使用形参b初始化a,请填空。c la s s Apu b lic:A(in t b);A();pr iv a t e:in t *a;;A:(in t b)(【13;A:A()1 4 ;【参考答案】12.13 a=new int(b)14 delete a13.将x+y*z中 的“+”用成员函数重载,用友元函数重载应写为【15】
13、。【参考答案】15 x.operator+(operator*(y,z)上机部分一、改错题使 用 VC6打开考生文件夹下的工程ktl,此工程包含一个源程序文件k tL l.c p p,但该程序运行有问题,请改正程序中的错误,使程序的输出结果为:Whichact(aorb)?bactlact2Bact3Bact4Bend源程序文件ktl_l.cpp清单如F:#includeclassApublic:virtualvoidactl()coutactlnu;act2();voidact2()coutact2n;act3();voidact3()coutAact3n;act4();virtualvoi
14、dact4coutAact4n,;act5();voidact5()coutn AendnH;classB:publicA(voidact3()cout,Bact3n,;act4();voidact4()coutBact4n;act5();voidact5()coutnBendnn;);voidmain(void)(chare;A*a;coutnWhichact(aorb)?H;cinC;if(c=,a,)a=newA;elsea=newB;a-actl();deletea;【参考答案】(1)将 void act3()coutAact3n;act4();改为:virtual void act3
15、()coutAact3n;act4();(2)将 virtual void act4 coutAact4n;act5();改为:virtual void act4()coutAact4n;act5();(3)将 cinC;改为:cinc;【试题解析】(1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;(2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;(3)主要考查是否会使用流输入操作,本题中使用的是流输出符。二、简单应用题请编写一个函数voidfun(charss),该函数将字符串ss
16、翻转,如 ss为“123abc”则翻转后 为“cba321”。注意:用数组方式及for循环来实现该函数。注意:部分源程序已存在文件ktl_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件ktl_2.cpp的内容如下:#include#includevoidfun(charss);【参考答案】(1)将 void act3()coutAact3n;act4();改为:virtual void act3()coutAact3n;act4();将 virtual void act4coutAact4n;act5();改为:virtual void
17、act4()coutAact4n;act5();(3)将 cinC;改为:cinc;【试题解析】(1)主要考查对虚函数使用规则的理解,要实现对函数act3的动态联编应该使用虚函数,这样在本题中对于函数的调用才能实现根据不同对象调用不同函数;(2)主要考查对函数定义的掌握,虽然参数表为空,但括号是不能省略的;(3)主要考查是否会使用流输入操作,本题中使用的是流输出符。二、简单应用题请编写一个函数voidfun(charssU),该函数将字符串ss翻 转,如 ss为“123abc”则翻转后 为“cba321”。注意:用数组方式及for循环来实现该函数。注意:部分源程序已存在文件ktl_2.cpp中
18、。请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。文件ktl_2.cpp的内容如下:#include#includevoidfun(charss);voidmain()chars 80;coutvvoid fun(charss)()【参考答案】void fun(char ss)(int n=strlen(ss);for(int i=0;i(n/2);i+)char c=ssi;ssi=ssn-l-i;ssn-l-i=c;)【试题解析】本题考查的是利用数组及for循环、if条件判断等基本控制语句解决实际问题的能力,基本算法是根据字符串的对称性把对应的两个字符串
19、互相换位。三、综合应用题使用VC6打开考生文件夹下的工程testl_3,此工程包含一个源程序文件ktl_3.cpp,其中定义了类C a t,但类C at的定义并不完整。请按要求完成下列操作,将 类 C at的定义补充完整。(1)定 义 类 C a t的保护数据成员itsAge用于表示年龄,它 是 in t型的数据。请在注释*之后添加适当的语句。(2)完成成员函数GetAge()的类外定义,返回成员的itsAge值,请在注释“*2*”之后添加适当的语句。(3)完成成员函数SetAge(intage)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“*3*”之后添加适当的语句。(4
20、)完成成员函数M eow的类外定义,使其输出字符串“meow.”到屏幕上。请在注释“*4*”之后添加适当的语句。输出结果如下:meow.kittyisacatwhois5yearsold.meow.注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序如下:#includeclassCat(public:intGetAge();voidSetAge(intage);voidMeow();protected:*);intCat:GetAge()()voidCat:Set Age(intage)()voidCat:Meow()()voidmain()(Catkitty;kitty.Me
21、ow();kitty.SetAge(5);cout,kittyisacatwhoisn;coutKITTY.GETAGE();coutuyearsold.n;kitty.Meow();)【参考答案】(l)int itsAge;(2)return itsAge;(3)itsAge=age;(4)coutMmeow.n;【试题解析】本题主要考查类的定义和成员函数的定义的深刻理解。C+模拟试题(2)笔试部分笔试部分一、选择题11.下列关于C+语言类的描述错误的是()A.类用于描述事物的属性和对事物的操作B.类与类之间通过封装而具有明确的独立性C.类与类之间必须是平等的关系,而不能组成层次结构D.类与
22、类之间可以通过一些方法进行通信和联络【参考答案】C12.以下叙述中正确的是()A.构成C+语言程序的基本单位是类B.可以在一个函数中定义另一 个函数C.main()函数必须放在其他函数之前D.所有被调用的函数一定要在调用之前进行定义【参考答案】A13.以下程序的输出结果是()#includevoid reverse(int a,int n)int i,t;for(i=0;i t=ai;ai=an-l-i;an-l-i=t;)void main()ini b 10=1,2,3,4,5,6,7,8,9,10;int i,s=0;reverse(b,8);for(i=6;i10;i+)s+=bi;c
23、outS;)A.22B.10C.34D.30【参考答案】A14.设有数组定义:char arrayn=C h i n a 则数组array所占的空间为()A.4个 字 节 B.5个 字 节 C.6个 字 节 D.7个字节【参考答案】C15.下面的哪个选项不能作为函数的返回类型?()A.void B.int C.new D.long【参考答案】C16.下面程序输出的结果是()#includevoid main()inti;int a33=1,2,345,6,7,8,9;for(i=0;iv3;i+)coutA2-II)A.l 5 9B.7 5 3C.35 7 D.59 117.下列描述中哪个是正
24、确的?()A.私有派生的子类无法访问父类的成员B.类 A 的私有派生子类的派生类C 无法初始化其祖先类A 对象的属性,因为类A 的成员对类C 是不可访问的C.私有派生类不能作为基类派生子类D.私有派生类的所有子孙类将无法继续继承该类的成员【参考答案】B18.如果友元函数重载一个运算符时,其参数表中没有任何参数是说明该运算符是()A.一元运算符B.二元运 算 符 C.选项A 和选项B 都 可 能 D.重载错误【参考答案】D19.下列关于模板的说法正确的是()A.模板的实参在任何时候都可以省略B.类模板与模板类所指的是同概念C.类模板的参数必须是虚拟类型的D.类模板中的成员函数全部都是模板函数【参
25、考答案】D20.下面程序段的运行结果是()void main()int t,a,b,c;a=l;b=2;c=2;while(aBC)t=a;a=b;b=t;c-;)c o u t A,z Bvv C;A.l,2,0B.2,L0C.l,2,l D.2,1,1【参考答案】A2L若定义int k=7,x=12;,则能使值为3 的表达式是()A.x%=(k%=5)B.x%=(k-k%5)C.x&=k-k%5 D.(x%=k)-(k%=5)【参考答案】D22.有以下结构体说明和变量的定义,且指针p 指向变量a,指针q 指向变量b。则不能把结点b 连接到结点a 之后的语句是()struct node ch
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 复习题 考题
限制150内