《C++复习题考题.pdf》由会员分享,可在线阅读,更多相关《C++复习题考题.pdf(157页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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
26、ar data;struct node*next;a,b,*p=&a,*q=&b;A.a.next=q;B.p.next=&b;C.p-next=&b;D.(*p).next=q;【参考答案】B20.下面程序段的运行结果是()void main()int t,a,b,c;a=l;b=2;c=2;while(aBC)t=a;a=b;b=t;c-;)coutvvAvv vBvv C;A.1,2,0 B.2,1,0 C.1,2,1 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
27、%=k)-(k%=5)【参考答案】D22.有以下结构体说明和变量的定义,且指针p 指向变量a,指针q 指向变量b。则不能把结点b 连接到结点a 之后的语句是()struct node char data;struct node*next;a,b,*p=&a,*q=&b;A.a.next=q;B.p.next=&b;C.p-next=&b;D.(*p).next=q;【参考答案】B23.以下都是C+语言标识符的是()A.dsfa,df4,f$B.huhj,aA,k2C.3k,h,j_9 D._ok,jk,k8【参考答案】D24.设以下变量均为int类型,则值不等于7的表达式是()A.(x=y=6
28、,x+y,x+l)B.(x=y=6,x+y,y+l)C.(x=6,x+l,y=6,x+y)D.(y=6,y+1 ,x=y,x+1)【参考答案】C25.while和 do-while循环的主要区别是()A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件更严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句【参考答案】A26.若二维数组a 有 m 歹!则计算任一元素在数组中相对位置的公式为(假设a00位于数组的第一个位置上)()A.i*m+j B.j*m+i C.i*m+j-l D.i*m+j+l【参考答案
29、】A27.下面叙述不正确的是()A.派生类一般都用公有派生B.对基类成员的访问必须是无两义性的C.赋值兼容则也适用于多重继承的组合D.基类的公有成员在派生类中仍然是公有的【参考答案】D28.关于友元的概念错误的是()A.友元函数没有this指针B.调用友元函数时必须在它的实参中给出要访问的对象C.一个类的成员函数也可以作为另一个类的友元函数D.只能在类的公有段声明友元【参考答案】D29.卜面程序的结果是()#includeclass test private:int num;public:test();int getint()return num;test();test:test()num=0
30、;test:test()co u t,z Destructor is active ENDL;void main()test x3;cout Exiting main ENDL;A.Exiting is acticeDestructor is activeDestructor is activeDestructor is activeB.Exiting mainDestructor is activeDestructor is activeC.Exiting mainDestructor is activeD.Exiting main【参考答案】A30.下列语句不能够用于打开C 根目录下文件t
31、est.txt的语句是()A.ifstream fin;fin.open(/,CAtest.txt);B.ifstream fin(,z C:Xtest.txt);C.A 和 BD.ifstream fin;fin(/C:Mest.txt);【参考答案】D31.下列关于C+函数的描述中正确的是OA.主函数是程序的入口,它山用户定义的函数调用B.函数在调用之前必须先被声明C.每个用户定义的函数只能被其他函数调用一次D.函数是C+中面向对象程序设计框架的基本组成单元【参考答案】B32.下列程序的运行结果为()#includeclass Location protected:int X,Y;publ
32、ic:void SetX(int myx)X=myx;void SetY(int myy)Y=myy;void showxyO cout X=X class Rectangle:public Location(private:int H,W;public:void SetH(int myh)H=myh;void SetW(int myw)W=myw;void show()cout,f X=X Yvv H=H void main()Rectangle rl;rl.SetX(3);rl.SetY(5);rl.SetH(4);rl.SetW(6);rl.showxy();rl.show();A.X=
33、3 Y=5 B.X=3 Y=5X=3 Y=5 H=4 W=6 X=3 Y=5 H=3 W=6C.X=3 Y=5 D.X=3 Y=5X=3 Y=4 H=4 W=6 X=3 Y=3 H=4 W=6【参考答案】A33.有以下程序#includevoid main()int a=5,b=0,c=0;if(a=b+c)cout,f*ENDL;else c o u t$ENDL;下列选项叙述正确的是()A.有语法错不能通过编译B.可以通过编译但不能通过连接C.输出*D.输出$【参考答案】D34.以下程序中循环体总的执行次数是()int i,j;for(i=6;il;i-)for(j=0;jI;J+)A.2
34、0B.261 C.15D.25【参考答案】A35.下列程序的输出结果是()#includevoid main()int a3,i,j,k=2;for(i=0;i3;i+)ai=i;for(i=0;iK;I+)for(j=0;jK;J+)a|jJ=ai;coutA2;A.2 B.3C.1 D.O【参考答案】A二、填空题6.6 是 C+语言程序的入口。【参考答案】6 main。函数7.C+语言的基本控制结构为顺序结构、选择结构和7o【参考答案】7 循环结构8.函数重载要求重载的函数必须有和原函数一样的【8】。【参考答案】【8】函数名9.设置虚基类的目的是 9 1 通 过 1 0 表示虚基类。【参考
35、答案】9 解决二义性问题 1 0 用关键字virtual10.语句cout n 还可表示为【11】。11 coutENDL;11.若已知a=10,b=20,则表达式!aB的值为121【参考答案】12 112.友元类的所有成员函数都是另一个类的【13】。【参考答案】1 3 友元函数13.表达式x.operator+()还可写成【14】。【参考答案】1 4+x14.若要在C 盘根目录下作为二进制文件打开文件test.dat,则应该用的语句是:【参考答案】1 5 ifstream fin(C:test.dat,ios_binary);或 ifstream fin;fin.open(c:test.da
36、t,ios_bin上机部分一、改错题使 用 VC6打开考生文件夹下的工程kt2,此工程包含一个源程序文件kt2.c p p,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:VehiclemessageCarmessageVehiclemessage源程序文件kt2_l.cpp清单如卜:#includeclassvehicle(intwheels;floatweight;public:voidmessage(void)coutVehiclemessagen;);classcar:publicvehicle(intpassenger_load;public:voidmessage(v
37、oid)coutCarmessagenH;);classtruck:publicvehicle(intpassengejload;iloatpayload;public:intpassengers(void)retumpassenger_load;);voidmain()(vehicle*unicycle;unicycle=newvehicle;unicycle.message();deleteunicycle;unicycle=newcar;unicycle-message();deleteunicycle;unicycle=newtruck;unicycle-message();delet
38、eunicycle;)【参考答案】(1)将 void message(void)coutVehicle messagen;改为:virtual void message(void)coutVehicle messagen;(2)将 void message(void)coutCar messagen;改为:void message(void)coutCar messagen;(3)将 unicycle.message();改为:unicycle-message();【试题解析】(1)主要考查对虚函数使用规则的掌握,要实现对函数message的动态联编应该使用虚函数,否则产生的是静态联编,调用的
39、函数输出结果就与要求不符;(2)主要考查对流输出操作的掌握,该处错误的使用了流输入操作;(3)主要考查对象和对象指针的概念,对 象 指 针 使 用 调 用 成 员 函 数,而对象使用调用成员函数.二、简单应用题编写类AA 的成员函数intCompare(AAb),该函数用于比较*this与 b 的大小,若两者含有元素的个数n 相同,并且数组中前n 个元素值对应相同,则认为两者相等返回1,否则返回 0。注意:用数组方式及for循环来实现该函数。输出结果如下:a=ba o c注意:部分源程序已存在文件kt2_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数Compare的花括号
40、中填写若干语句。文件kt2_2.cpp的内容如下:#include#includeclassAAint*a;intn;intMS;public:voidInitAA(intaa,intnn,intms)(if(nnms)coutError!HENDL;exit(l);)MS=ms;n=nn;a=newintMS;for(inti=0;iIintCompare(AAb););intAA:Compare(AAb)()voidmain()AAa,b,c;intx=l,2,3,4,5);inty=1,236,7;intzJ=1,2,5,7,9);a.InitAA(x,3,5);b.InitAA(y,3
41、,5);c.InitAA(z,3,5);if(a.Compare(b)coutna=bnENDL;elsecoutaobENDL;if(a.Compare(c)couta=cuENDL;elsecoutaocEN D L;【参考答案】int AA:Compare(AA b)if(n!=b.n)return 0;for(int i=0;i oif(aij!=b.aij)return 0;return 1;【试题解析】本题考查应用for循环、if条件控制语句等基本控制结构解决实际问题的能力。3.综合应用题使 用 VC6打开考生文件夹下的工程testl7_3,此工程包含一个源程序文件kt2_3.cp
42、p,其中定义了用于表示点的类Point和表示内容的类Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按要求完成下列操作,将它们的定义补充完整。(1)定义类Point的构造函数,请使用参数列表的形式将成员函数x 和 y 分别初始化为参数 x l 和 y l 的值。请在注释“*1*”之后添加适当的语句。(2)完成类Text的构造函数Text(char*str)的定义,将 char型的str指向的内容赋值给text并且输出str所指向的内容,请在注释“*2*”之后添加适当的语句。(3)定义类 CircleWithText 的构造函数 CircleWithText(int
43、cx,intcy,char*msg),int 型的 ex和 cy用于赋值给x 和 y,char型的指针*msg用于赋值给te x t,请在注释“*3*”之后添加适当的语句。输出结果如下:Point:34hello注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序如下:#include#includeclassPointintx.y;public:*coutPoint:X Y N;Point();classTextchartextflOO;public:Text(char*str)/*2*Text();classCircleWithText:publicPoint,publicT
44、extpublic:()-CircleWithText();voidmain()CircleWithTextcm(3,4,nhelloM);)【参考答案】(l)Point(int x 1=0,int y 1=0):x(x 1),y(y 1)(2)strcpy(text,str);coutST R nNn;(3)CircleWithText(int ex,int cy,char*msg):Point(cx,cy),Text(msg)【试题解析】本题主要考查考生对于多继承中类的定义和派生类构造函数的定义的掌握。注意学会使用参数列表的形式定义派生类的构造函数,在列表中的格式是基类名1(向基类传递的参
45、数列表),基类名2(向基类传递的参数列表)。C+模拟试题(4)笔试部分一、选择题11.C+语言中标点符号中表示一条预处理命令开始的是()A.#B.;C.*D.【参考答案】A12.sizeof(float)是()A.一个双精度型表达式B.一个整型表达式C.一种函数调用D.一个不合法的表达式【参考答案】B13.设有程序段int k=10;while(k=O)k=k-l;则下面描述中正确的是()A.循环执行10次 B.无限循环C.循环体语句一次也不执行D.循环体语句执行一次【参考答案】C14.以下不正确的定义语句是()A.double x5=2.0,4.0,6.0,8.0,10.0;B.int y5
46、=0,l,3,5,7,9);C.charcl=,1 2 3 4 5);D.char c2=xl0(xa(x8;【参考答案】B15.下列函数的运行结果是()#includeint f(int a,int b)int c;if(ab)c=l;else if(a=b)c=0;else c=l;return(c);)void main()int i=2,j=3;int p=f(i,j);coutP;A.-l B.l C.2D.编译出错,无法运行【参考答案】A16.关于静态数据成员的描述中正确的是()A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据
47、成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化【参考答案】D17.下表正确的是()类中的访问属性访问修饰符在子类中的访问属性A.public private不能直接访问B.protect public publicC.private public不能直接访问D.protect private protect【参考答案】C18.下列运算符中全都可以被友元函数重载的是()A.=,+,-,B.,+,(),new C,-,+,*,D.,+,*【参考答案】D19.对于下面的程序ifstream fin(c:test.txt);if(fin)co u tf,ok”;elseco u t wr
48、ong,f;对于if语句中的内容可以换为()A.fin.fail();B.fin.bad();C.fin.good();D.fin.eof();【参考答案】C20.不合法的main函数命令行参数表示形式是()A.main(int a,char*c口)B.main(int arc,char*arv)C.main(int argc,char*argv)D.main(int argv,char*argcJ)【参考答案】c21.下面叙述不正确的是()A.基类的保护成员在派生类中仍然是保护的成员B.基类的保护成员在公有派生类中仍然是保护的C.基类的保护成员在私有派生类中仍然是私有的D.对基类成员的访问必
49、须是无二义性【参考答案】A22.下面程序的功能是将从键盘输入的一对数,由小到大排序输出,当输入一对相等数时结束循环,在划线处填入的选项是()#includevoid main()int a,b,t;cin a b;whi l e()if(ab)t=a;a=b;b=tcoutA bendl;cin a b;)A.!a=b B.a!=b C.a=b D.a=b【参考答案】B23.C+语言对C 语言做了很多改进,C+语言相对于C 语言的最根本的变化是()A.增加了一些新的运算符B.允许函数重载,并允许设置缺省参数C.规定函数说明符必须用原型D.引进了类和对象的概念【参考答案】D24.设有定义int
50、x;float y;,则 10+x+y值的数据类型是3A.int B.double C.float D.不确定【参考答案】C25.下面程序的运行结果为()#includevoid main()(for(int a=0,x=0;!x&a=10;a+)(a+;JcoutAENDL;)A.10B.11 C.12D.0【参考答案】C26.下面关于数组的初绐化正确的是()A.char str=az b c B.char str2=a c C.charstr 引=a b,c d,e f )D.char str()=a b c【参考答案】A27.决定C+语言中函数的返回值类型的是()A.retum语句中的表