《C语言程序》测试题_第1页
《C语言程序》测试题_第2页
《C语言程序》测试题_第3页
《C语言程序》测试题_第4页
《C语言程序》测试题_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、c+程序设计(本科)一、判断题(错误的在后边写“F”,正确的写“T”,每题1分)程序是描绘算法的编程工具。T2.将函数模板与某个详细数据种类连用,就产生了模板函数,称这个过程为函数模板实例化。TC+语言中,用来为对象初始化的特别成员函数称为结构函数;用于在对象撤掉时履行一些清理任务的特别成员函数称为析构函数。T4.逐条翻译并履行的翻译程序称为编译程序。F把全部类组织在一个树形结构中,这时全部类,不论它们之间的差异有多大,都有一个共同的有关类,这类结构被称为类树。类群是由一些相互亲密有关的类和类族构成的。F假如在定义一个类时,该类继承了多个基类的特色,那么这个继承关系称为多重继承。T不同样对象能

2、够调用同样名称的函数,并能够致完满同样的行为的现象称为多态性。F形式参数表是用括号分开的变量说明列表,变量称为函数的形式参数,有时也简称为形参。F9.在C+语言中,只需在申明函数原型时形式参数的个数或许对应的种类不同样,两个或更多的函数就能够共用同一个名字。这类在同一作用域中允很多个函数使用同一函数名的举措被称为重载。TC+的作用域分辨:能够迫使编译器“看到”目前作用域的外层部分,存取那些被隐蔽的名字。这是由作用域分辨操作符实现的,这一过程叫造作用域分辨。T11说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的种类和返回值种类就能够了。T12全部的表达式都有值。F13程序的编译是

3、以文件为单位的,所以将程序分到多个文件中能够减少每次对程序改正所带来的编译工作量。T14类的静态数据成员需要在定义每个类的对象时进行初始化。F15基类中被说明为protected和private的成员只好被其派生类的成员函数接见,不可以够被其余的函数接见。F16当将一个类S定义为另一个类A的友元类时,类S的全部成员函数都能够直接接见类A的全部成员。T17当函数的返回值是数组种类的,传达的是数组第一个元素的地点。F18假如派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型同样,那么,这个函数自动继承基类中虚函数的特色。T19字符串hello,world在内”存中寄存时,占用11个字节的空

4、间。F用new动向申请的内存空间,必然用delete来开释。T21、变量必然先定义或说明,后使用。T23、常量不可以够作为左值使用。T23、头文件中一般寄存着变量和常量的定义、函数的原型以及类的定义。F24、类的友元函数能够直接接见该类的全部成员。T25、派生类的成员函数能够直接接见基类的全部成员。F26、一个类能够作为另一个类的友元类。T27、函数的参数和返回值种类能够是简单数据种类,也能够是指什、引用、数组和类。F28、在基类中被说明为虚函数的类的成员函数必然在每个派生类中说明为虚函数,才能拥有多态的特色。F29、下边两个语句是等价的:Fcharstr=hello,world;charst

5、r11=hello,world;30、用new动向申请的内存是在堆中分派的,而不是在栈中分派的。T31.静态联编所支持的多态性称为编译时的多态性。T32.假如一个类中最罕有一个实函数,则称这个类为抽象类。F33.用于在对象消逝时履行一些清理任务的函数叫虚函数。F34.C+源程序言件的缺省扩展名为cppT35.由C+源程序言件编译而成的目标文件的缺省扩展名为likF36.由C+目标文件连结而成的可履行文件的缺省扩展名为objF37.编写C+程序一般需经过的几个步骤挨次是编写、编译、连结、调试T38.表记符defaultthenwhile全部是保存字F39.能作为C+程序的基本单位是语句T40.程

6、序中主函数的名字为随意表记符F二、填空题(每题3分)假定x=5,y=6,则履行表达式y+=x-计算后,x和y的值分别为_4_和_11_。C+常数0 x145对应的十进制值为_325_。C+常数0345对应的十进制值为_229_。4.十进制常数245对应的十六进制的C+表示为_0 xF5(F大小写均可)_5.十进制常数245对应的八进制的C+表示为_0365(F大小写均可)_。6.signedchar种类的值域范围是_-128_至_+127_之间的整数。7.int和float种类的数据分别占用_4_和_4_个字节。8.float和double种类的数据分别占用_4_和_8_个字节。9.bool和

7、char种类的数据分别占用_1_和_1_个字节。10.unsignedshortint和int种类的长度分别为_2_和_4_。字符串“sabook.n”的长度为_15_。字符串“sapennn”的长度为_15_。在C+中储蓄字符串“abcdef”最少需要_7_个字节。在C+中储蓄字符串“a+b=c”最少需要_6_个字节。14.假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为_1_和_3_。15.若while循环的“头”为”while(i+=10)”,并且i的初值为0,同时在循环体中不会改正i的值,则循环体将被重复履行_11_次后正常结束。17.若do循环的“尾”为”while(

8、+ia_。C+是将源程序_一次翻译成目标程序_,此后再履行,这类翻译程序称为编译程序。32.结合的若干数据成员使用地点_同一_,占有的内存是结合中占内存最大的数据成员所占用的内存。33.作用域分辨操作符的一般形式为类名:类表记符,作用域分辨不只可用于类中,并且能够用在_函数调用_时。34.将重点词const写在_函数头_今后,_函数体_,从前,说明该函数是一个const成员函数。35.C+是在_标准C语言_的基础上,引入面向对象看法而扩大形成的混淆型面向对象语言。36.在动向联编中,直到_程序运转_时才能确立调用哪个函数。静态联编是在程序编译时进行的。37.种类变换函数_不可以够_带有参数,当

9、被派生类继承并被说明为_虚函数_时,能够定义多个变换函数。38.继承是_对象_的一个特色,继承支持_层次_类看法C+的_作用域_规则能保证编译器调用正确的成员函数。在C+中,申明结构函数和析构函数时,_不可以够_使用const或volatile重点词。只好用类运算符来重载的运算符是:_=_,_()_,_,_-_。42.应当养成将全部extern说明放到_头文件_中去的习惯,对于自己编写的函数,必然自己给出_函数种类_说明。43.结构是_类_,的一种特例,此中成员在缺省状况下是_公有的_。44.当使用delete删除一个对象时,delete隐含着对_析构函数_函数的一次调用,假如这个函数为虚函数

10、,则这个调用采纳_动向_联编。45.const放在函数前面使常量成员返回_常量对象_。假如定义一个const对象,则只好接见该对象的const成员函数。46.在面向对象的程序设计中,全部都是环绕着47.析结构函数是和_类_同名的函数。_类_张开的。48指向基类的对象的指针变量也能够指向_派生类_的对象。49若多继承时,多个基类中拥有一个同名的成员,则_不可以够_用调整接见权限确立对该成员的接见50多继承状况下,派生类的结构函数的履行次序取决于_继承_派生类时所指定的各基类的次序。51结构函数_不可以够_被继承,析构函数_不可以够_被继承。52_多_继承状况下,派生类中对基类成员的接见会出现二义

11、性。解决二义性的方法是_成员名限制法_、_支配规则_和_虚基类_53垂直接见时,保护成员的接见控制权限与_公有_成员同样。54派生类能够调用其_基类_中不具备的数据和操作。55利用继承能够实现_软件复用_。这类实现缩短了程序的开发时间,促进开发人员复用已经测试和调试好的高质量软件。56当取消一个含有基类和子对象成员的派生类对象时,将第一达成_派生类_的析构函数定义体的履行,接着达成_子对象成员_的析构函数定义体的履行,最后达成_基类_的析构函数定义体的履行。57假如类Alpha继承了类Beta,则类Alpha称为_派生_类,类Beta称为_基_类58对基类数据成员的初始化必然在派生类结构函数中

12、的_成员初始化列表_处履行。59在派生类中使用基类的成员,能够显示地使用_成员名限制符_来使用基类成员60当将基类指针变换为派生类指针时,因为编译器认为这类操作是危险的,所以必然要使用_强迫种类变换_。61多继承能够视为是_单继承_的扩展,派生类及其基类可用一个_有向无环图DAG_表示。62.继承是_对象_的一个特色,继承支持_层次_类看法。63若需要定义一个表记符常量,并且使C+能够进行种类检查,则应在定义语句的开始使用保存字const.64逻辑表达式x3&x10的相反表达式为x=10.65逻辑表达式ab|b=5的相反表达式为ab).三、单项选择题(每题2分,在以下各题的备选答案中,选出一个

13、正确答案,并将其号码填写在题目后边的括号内。)A1.C+源程序言件的缺省扩展名为()。A.cppB.exeC.objD.likC2.由C+源程序言件编译而成的目标文件的缺省扩展名为()。A.cppB.exeC.objD.likB3.由C+目标文件连结而成的可履行文件的缺省扩展名为()。A.cppB.exeC.objD.likB4.编写C+程序一般需经过的几个步骤挨次是()。A.编译、编写、连结、调试B.编写、编译、连结、调试C.编译、调试、编写、连结D.编写、调试、编写、连结B5.以下表记符中不全部是保存字的是()。A.caseforintB.defaultthenwhileC.boolcla

14、sslongD.gotoreturncharC6.能作为C+程序的基本单位是()。A.字符B.语句C.函数D.源程序言件A7.程序中主函数的名字为()。A.mainB.MAINC.MainD.随意表记符D8.C+程序的基本模块为()。A.表达式B.表记符C.语句D.函数B9.可用作C+语言用户表记符的一组表记符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeofD10.储蓄以下数据,占用储蓄字节最多的是()。A.0B.0C.“0”D11.程序运转中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分开符。A.空格或逗号

15、B.逗号或回车C.逗号或分号D.空格或回车C12.设”inta=12;”,则履行完语句”a+=a*a;”后,a的值是()。A.12B.144C.156D.288D13.假定在程序中a、b、c均被定义成整型,所赋的值都大于1,则以下能正确表示代数式1的表达式是()abc。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD14.设”inta=15,b=26;”,则”cout0&x=10的相反表达式为()。A.x10B.x10C.x=0|x0&x10B17.x0|y=5的相反表达式为()。A.x=0|y!=5B.x0|y!=5D.x0&y=5A18设x和y均为bool量,

16、则x&y为真的条件是()。A.它们均为真B.此中一个为真C.它们均为假D.此中一个为假C19设x和y均为bool量,则x|y为假的条件是()。A.它们均为真B.此中一个为真C.它们均为假D.此中一个为假B20.字符串”a+b=12n”的长度为()。A.6B.7C.8D.9B21.假定以下x和y均为int型变量,则不正确的赋值为()。A.x+=y+B.x+=y+C.x=+yD.+x=+yC22.以下的符号常量定义中,错误的定义是()。A.constM=10;B.constintM=20;C.constcharch;D.constboolmark=true;C23.循环语句“for(inti=0;

17、in;i+)couti*i;”中循环体履行的次数为()。A.1D.n+1B24.在下边循环语句中循环体履行的次数为()。for(inti=0;in/2)break;A.n/2B.n/2+1C.n/2-1D.n-1D25.在下边循环语句中内层循环体S语句的履行总次数为()。for(inti=0;in;i+)for(intj=i;jn;j+)S;A.n2B.(n+1)/2C.n(n-1)/2D.n(n+1)/2C26.在下边循环语句中循环体履行的次数为()。inti=0,s=0;while(s20)i+;s+=i;A.4B.5C.6D.7A27.在下边循环语句中循环体履行的次数为()。inti=0

18、;doi+;while(i*i10);A.4B.3C.5D.2A28.当办理特定问题时的循环次数已知时,平常采纳()来解决。A.for循环B.while循环C.do循环D.switch语句C29.循环体最少被履行一次的语句为()。A.for循环B.while循环C.do循环D.任一种循环B30.switch语句能够改写为()语句。A.forB.ifC.doD.whileD31.do语句能够改写为()语句。A.复合B.ifC32.在下边的一维数组定义中,哪一个有语法错误。()A.inta=1,2,3;B.inta10=0;C.inta;D.inta5;D33.在下边的字符数组定义中,哪一个有语法

19、错误。()。A.chara20=”abcdefg”;B.chara=”x+y=55.”;C.chara15;D.chara10=5;C34.在下边的二维数组定义中,正确的选项是()。A.inta5;B.inta5;C.inta3=1,3,5,2;D.inta(10);C35.假定一个二维数组的定义语句为“inta34=3,4,2,8,6;”,则元素a12的值为()。A.2B.4C.6D.8A36.假定一个二维数组的定义语句为“inta34=3,4,2,8,6;”,则元素a21的值为()。A.0B.4C.8D.6B37.若定义了函数double*function(),则函数function的返回

20、值为()。A.实数型B.实数的地点C.指向函数的指针D.函数的地点B38.以下说法中正确的选项是()。A.C+程序老是从第一个定义的函数开始履行B.C+程序老是从main函数开始履行C.C+函数必然有返回值,不然不可以够使用函数D.C+程序中有调用关系的全部函数必然放在同一个程序言件中C39.以下表达中不正确的选项是()。A.在一个函数中,能够有多条return语句B.函数的定义不可以够嵌套,但函数的调用能够嵌套C.函数必然有返回值D.不同样的函数中能够使用同样名字的变量A40.函数重载是指()。两个或两个以上的函数取同样的函数名,但形参的个数或种类不同样两个以上的函数取同样的名字和拥有同样的

21、参数个数,但形参的种类能够不同样两个以上的函数名字不同样,但形参的个数或种类同样两个以上的函数取同样的函数名,并且函数的返回种类同样函数模板也是一个详细种类的函数函数模板的种类参数与函数的参数是同一个看法经过使用不同样的种类参数,函数模板能够生成不同样种类的函数用函数模板定义的函数没有种类C42.以下()的调用方式是引用调用。A.形参和实参都是变量B.形参是指针,实参是地点值C.形参是引用,实参是变量D.形参是变量,实参是地点值A43.为了提升程序的运转速度,可将不太复杂的功能用函数实现,此函数应选择()。内联函数B.重载函数C.递归函数D.函数模板B44.函数原型语句正确的选项是()。A.i

22、ntFunction(voida);B.voidFunction(int);C.intFunction(a);D.voidint(doublea);B45.C+中函数返回值的种类是由()决定的。A.return语句中表达式的种类B.该函数定义时的种类C.调用函数时的调用语句D.系统依据结果A46.以下函数的返回结果是()。intfunction(char*x)char*p=x;while(*p+);return(p-x-1);A.求字符串的长度B.将字符串x连结到字符串C.将字符串x复制到字符串p中D.将字符串x反向寄存B47.函数调用func(exp1,exp2),(exp3,exp4,ex

23、p5)中所含实参的个数为B48.设有以下函数定义p后边()个。intf(char*s)char*p=s;while(*p!=0)p+;return(p-s);在主函数顶用coutf(“good”)调用上述函数,则输出结果为()。C49.以下正确的函数原型语句是()。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(int,int);D.doublefun(intx,y);B50.以下正确的说法是()。用户调用标准库函数前,必然从头定义用户能够从头定义标准库函数,若这样,该函数将失掉原有含义系统不同样意用户从头定义标准库函数用户调用标

24、准库函数前,不用使用预编译命令将该函数所在文件包含到用户源文件中D51.函数调用不可以够够()。A.出此刻一个表达式中B.出此刻履行语句中C.作为一个函数的实参D.作为一个函数的形参B52.以下正确的描绘是()。函数的定义能够嵌套,函数的调用不可以够够嵌套函数的定义不可以够够嵌套,函数的调用能够嵌套函数的定义和函数的调用均能够嵌套函数的定义和函数的调用均不可以够够嵌套A53.若用数组名作为函数调用的实参,传达给形参的是()。A.数组的首地点B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数D54.以下错误的描绘是()。被调用函数中能够不用return语句被调用函数中能够用多个ret

25、urn语句被调用函数中,一个return语句可返回多个值给调用函数不同样意设置参数的默认值设置参数的默认值只幸好定义函数时设置设置参数的默认值时,应当设置右侧的参数设置参数的默认值时,应当全部参数都设置D56.采纳重载函数的目的是()。A.实现共享B.减少空间C.提升速度D.使用方便,提升可读性C57.将两个字符串连接起来构成一个字符串时,采纳()函数。A.strlen()B.strcap()C.strcat()D.strcmp()B58.以下表达中正确的选项是()。使用#define能够为常量定义一个名字,该名字在程序中能够再赋其余的值使用const定义的常量名有种类之分,其值在程序运转时是

26、不可以够改变的在程序中使用内联函数使程序的可读性变差在定义函数时能够在形参表的任何地点给出缺省形参值C59.下边的表记符中,()是文件级作用域。A.函数形参B.语句标号C.外面静态类表记符D.自动类表记符D60.以下表达不正确的选项是()。A.宏取代不占用运转时间B.宏名无种类C.宏取代但是字符替D.宏名必然用大写字母表示D61.C+语言的编译系统对宏命令的办理是()。A.在程序运转时进行B.在程序连结时进行C.和C+程序的其余语句同时进行编译D.在对源程序中其余成分正式编译从行进行B62.当#include后边的文件名用双引号括起来时,找寻被包含文件的方式是()。直接按系统设定的标准方式找寻

27、目录先在源程序所在目录找寻,再按系统设定的标准方式找寻目录C.但是找寻源程序所在目录D.找寻目前逻辑盘上的全部目录A63.当#include后边的文件名用尖括号括起来时,找寻被包含文件的方式是()。直接按系统设定的标准方式找寻目录B.先在源程序所在目录找寻,再按系统设定的标准方式找寻目录但是找寻源程序所在目录D.找寻目前逻辑盘上的全部目录A.外面类B.自动类C.内部静态类D.寄存器类A65.在下边储蓄类中,()的对象不是局部变量。A.外面静态类B.自动类C.函数形参D.寄存器类C66.对于局部变量,下边说法正确的选项是()。定义该变量的程序言件中的函数都能够接见定义该变量的函数中的定义处以下的

28、任何语句都能够接见定义该变量的复合语句中的定义处以下的任何语句都能够接见定义该变量的函数中的定义处以上的任何语句都能够接见C67.文件包含命令中被包含的文件的扩展名()。A.必然是.hB.不可以够是.hC.能够是.h或.cppD.必然是.cppB68.预办理命令在程序中都是以()符号开头的。A.*B.#C.&D.B69.设array为一个数组,则表达式sizeof(array)/sizeof(array0)的结果为()。A.array数组首地点B.array数组中元素个数C.array数组中每个元素所占的字节D.array数组占的总字节数C70.用new运算符创立一个含10个元素的一维整型数组

29、的正确语句是()。A.int*p=newa10;B.int*p=newfloat10;C.int*p=newint10;D.int*p=newint10=1,2,3,4,5A71.以下给字符数组赋初值时,正确的选项是()。A.chars1=”abcdef”;B.chars24=”abcd”;C.chars323=“abc”,”xyz”;D.chars44=a,x,s,t;D72.设有定义“staticintdata56;”,设该数组在静态储蓄区中的初步地点为十进制的型数占4个字节,则数组元素data23的地点为()。D.160B73.假定变量m定义为“intm=7;”,则定义变量p的正确语句为

30、()。A.intp=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;D74.假定k是一个double种类的变量,则对于变量p的正确立义语句为()。A.doublep=&k;B.int*p=&k;C.double&p=*k;D.char*p=”Thankyou!”;A75.变量s的定义为“char*s=”Helloworld!”;”,要使变量p指向s所指向的同一个字符串,A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;C76.对于void指针,以下说法正确的选项是()。A.void指针就是未指向任何数据的指针B.void

31、指针就是已定义而未初始化的指针C.指向任何种类数据的指针可直接赋值给一个void指针D.void指针值可直接赋给一个非void指针D77.假定一条定义语句为“inta10,x,*pa=a;”,若要把数组a中下标为3的元素值赋给语句为()。100,若每个int则应采纳()。x,则不正确的A.x=pa3;B.x=*(a+3);C.x=a3;D.x=*pa+3;D78.假定有定义“intb10;int*pb;”,则不正确的赋值语句为(A.pb=b;B.pb=&b0;C.*pb=newint;D.pb=b5;)。C79.假定p是拥有double种类的指针变量,则表达式+p使p的值(以字节为单位)增添(

32、)。A.1B.4C.sizeof(double)D.sizeof(p)C80.假定p指向的字符串为”string”,则coutp+3的输出结果为()。A.stringB.ringC.ingD.i四、问答题(每题10分)为何称C+语言是混淆型面向对象的语言?答:一般真实的向对象语言拥有抽象、封装、继承和多态性等特色,完满由一组抽象的对象构成,所以没有全局函数。而C+是在标准C语言的基础上引入“面向对象”看法而扩大形成的,严格地讲,它不是完满由一组抽象的对象(类)构成。因为C+程序中还有像main这样的全局函数,所以称它为混淆型面向对象语言。下边是一个结合的定义:ClassCUunionintiv

33、alue;floatfvalue;/;ivalue和fvalue拥有什么关系?答:这是一个什么结合的说明?它说明这是一个无名结合说明,它说明ivalue和fvalue共享同一个内存。3.什么是C+的多态性?答:多态性就是指对一个动作恩赐一个名字或符号,该名字或符号在类层次的上基层中是共享的(即用同一个名字),而层次中每一个类对该动作的实现是以其合适自己的方式来定义的。在C+中,多态性又被直观地称为“一个名字,多个函数”。怎样经过抽象形成“类”的看法?类的看法来自于什么过程?答:抽象是一种从一般的看法对待事物的方法,能够将一组对象的共同特色进一步抽象出来,进而形成“类”的看法。类的看法来自于人们

34、认识自然、认识社会的过程。下边是类C的定义:classC:publicA,privateBprivate:intc;public:voidsetC(intx,inty)c=x;setB(y);voidshowC()showB();coutcendl;讨论类C属于何种方式的继承及其派生方法对接见基类成员的影响。答:类C是多重继承,它从类A公有派生,所以,类A的公有(保护的)成员在类C中还是公有的(保护的)。类C从类B私有派生,类B的全部成员在类C中是私有的。C+的流库预约义了哪几个流?与这几个流所联系的详细设施是什么?答:它们是cin、cout、cerr和clog,与C+的流类库预约义的四个流所

35、联系的详细设施为:cin与标准输入设施有关系cout与标准输出设施有关系cerr与标准错误输出设施有关系(非缓冲方式)clog与标准错误输出设施有关系(缓冲方式)在使用C+时,能否应仍旧保持C语言的习惯及思想方式?为何?答:不可以够。做为C语言的超集,C+在技术上是和C完满兼容的,但它在看法上是和C语言完满不同样的,所以,使用者应当学会按C+自己的方式来使用它,掌握C+的思想方式、设计方法和习惯。C+中有哪些系统能够实现命名常量?答:第一个方法是定义const数据种类,它不单说了然数据,并且申明它是常量,即它的值不可以够改变。其余一个方法就是利用列举。简述模板类的动向特色。答:从类系的动向性能

36、角度来看,模板类拥有更多的动向特色。一旦达成一个继承类系的设计,它能办理的数据和办理数据的方法就确立了,除非新继承一个类来达成新的功能。模板类在设计达成今后,能够办理的数据种类却能够不停增添,并且模板类的实例可在编译时刻初始化,进而拥有更好的灵巧性。.简述静态成员的特色,此后就作用域与全局变量进行比较?答:作为类的静态成员,它的特色是不论类创立了多少个对象,其静态成员都只有一个副本,这个副本为类的全部对象共享。类的静态成员不同样于全局变量,全局变量的作用于为整个程序,静态成员只幸好类的对象中有效。用指针或引用调用虚函数与经过对象接见虚函数的差异是?答:使用一个基种类的指针(或引用)调用一个虚函

37、数时候,c+使用动向联编,而经过对象接见时候,则使用静态联编。12.多重继承的结构次序一般可分为4步,下边给出这4个步骤:答:1):任何虚假基类的结构函数依据它们被继承的次序结构。2):任何非虚假基类的结构函数依据它们被继承的次序结构。3):任何成员对象的结构函数依据它们申明的次序结构。4):类自己的结构函数。在C+中,应当使用什么语句来动向分派和开释内存?答:.new,delete下边的程序的正确的输出结果是什么?#include#includeclassbasepublic:virtualchar*fun(void)const=0;char*base:fun(void)constretur

38、nbase;classderived1:virtualpublicbasepublic:char*fun(void)constreturnderived1;classderived2:virtualpublicbasepublic:char*fun(void)constreturnderived2;classsubderived:publicderived1,publicderived2public:char*fun(void)constchar*pch;pch=newcharstrlen(derived1:fun()+strlen(derived2:fun()+1;strcpy(pch,de

39、rived1:fun();strcat(pch,derived2:fun();returnpch;voidmain(void)base*pb;pb=newderived1;coutfun()endl;pb=newderived2;coutfun()endl;pb=newsubderived;coutfun()endl;答:.derived1derived2derived1derived2目前介绍的C+标准十分虚结构函数?答:.不支持友元运算符obj会被C+编译器解说为何?答:.operator(obj)17.写出下边程序的运转结果。#include#includevoidprint(float

40、a,intcount,intwidth);voidmain(void)floatf2=1.0f,10.0f;coutDefaultnumericformat:endl;print(f,2,10);coutSettingios:showpoint:endl;cout.setf(ios:showpoint);print(f,2,10);cout.unsetf(ios:showpoint);coutSettingios:scientific:endl;cout.setf(ios:scientific);print(f,2,10);cout.unsetf(ios:scientific);voidpri

41、nt(floata,intcount,intwidth)for(inti=0;icount;i+)cout.width(width);coutaiendl;答:Defaultnumericformat:110Settingios:showpoint:1.0000010.0000Settingios:scientific:1.000000e+0001.000000e+001一个const对象能否能接见全部成员函数?答:只好接见const成员函数私有与保护之间的差异是什么?答:保护成员在派生类中也能够被接见,而私有成员不可以够够20、在C+中,封装是借助于什么达到的?答:类21、C+可经过什么成立

42、类库?答:继承22、用于类中虚成员函数说明的重点字是什么?答:Bvirtual达成下边的类定义。ClassMyClasspublic:MyClass()x=0;_intGetNum(_my);private:intx;intGetNum(_my)_returnmy.x;friendMyClass在下边程序的横线处填上合适的语句,使种类该程序履行结果为10。#includeclassMyClasspub1ic:_/为x置值_/取x值private:intx;voidmain()Myclassmy(10);Coutmy.GetNum()end;MyClass(inta)x=a;intGetNumr

43、eturnx;25.下边的类中定义了一个对于礼拜的列举种类,请达成下边的程序。ClassMyClasspublic:enumWeekSun,Mon,Tue,Wed,Thu,Fri,Sat;Weekweek;voidfun(MyClass&my)_=_;_/将对象my的week赋值为所定义的列举种类/值为3的列举量my.weekWed以下程序将x,y和z按从小到大的次序摆列,在划线处填入正确的内容。Templatevoidorder(_)_if(xy)a=x;x=y;y=a;if(yz)a=y;y=z;z=a;if(xy)a=x;x=y;y=a;T&x,T&y,T&zTa27.什么是数据封装?答

44、:所谓数据封装,就是将一组数据和与这组数占有关的操作会合组装在一同,形成一个能动的实体,也就是对象。什么叫做支配规则?答:类X中的名字N支配类Y中同名的名字N,是指类X以类Y为它的一个基类,这称为支配规则。为何引入函数模板和类模板?答:可能经常会碰到这样一种状况:对于很多的数据种类,需要供给一种逻辑功能完满同样的函数,而编制这些函数所供给的程序言本完满同样,其差异但是是办理的数据种类不同样。对于这类函数,从前经常有两种实现方法,一种方法是用宏函数,另一种方法例是为各样种类都重载这一函数。宏函数固然方便,但是有时经常引入一些意想不到的问题,从C+开始已经不提议使用宏;而为各样数据种类重载又显得有

45、点麻烦。希望供给一种更方便更靠谱的方法来达成这一功能,函数模板就是适应这一要求而产生的。经常会碰到这样一种状况:为了达到一些相像的功能,需要供给一系列的类,这些类除了一些成员数据种类和一些有关函数办理的数据种类有些不同样以外,别无差异。与函数模板相对应,C+用类模板来达成这一功能。30.在使用C+时,能否应仍旧保持C语言的习惯及思想方式?为何?答:不可以够。做为C语言的超集,C+在技术上是和C完满兼容的,但它在看法上是和C语言完满不同样的,所以,使用者应当学会按C+自己的方式来使用它,掌握C+的思想方式、设计方法和习惯。C+中有哪些系统能够实现命名常量?答:第一个方法是定义const数据种类,

46、它不单说了然数据,并且申明它是常量,即它的值不可以够改变。其余一个方法就是利用列举。简述模板类的动向特色。答:从类系的动向性能角度来看,模板类拥有更多的动向特色。一旦达成一个继承类系的设计,它能办理的数据和办理数据的方法就确立了,除非新继承一个类来达成新的功能。模板类在设计达成今后,能够办理的数据种类却能够不停增添,并且模板类的实例可在编译时刻初始化,进而拥有更好的灵巧性。33.简述静态成员的特色,此后就作用域与全局变量进行比较?答:作为类的静态成员,它的特色是不论类创立了多少个对象,其静态成员都只有一个副本,这个副本为类的全部对象共享。类的静态成员不同样于全局变量,全局变量的作用于为整个程序

47、,静态成员只幸好类的对象中有效。34.用指针或引用调用虚函数与经过对象接见虚函数的差异是?答:使用一个基种类的指针(或引用)调用一个虚函数时候,c+使用动向联编,而经过对象接见时候,则使用静态联编。35.认真阅读下边的程序,给出正确的输出结果。#includeenumnotemiddleA,middleB,middleC,middleD;classinstrumentpublic:voiddisplay(note)constcoutinstrument:displayendl;classpiano:publicinstrumentpublic:voiddisplay(note)constcou

48、tpiano:displayendl;classguitar:publicinstrumentpublic:voiddisplay(note)constcoutguitar:displayendl;voidtone(instrument&i)i.display(middleC);voidmain(void)guitarguitar1;tone(guitar1);pianopiano1;tone(piano1);答案:程序输出结果以下:nstrument:displayinstrument:display36.认真阅读下边的程序,分析程序使用何种运算符重载,它的用法能够与程序中的哪一种结构函数的

49、用法做比较,并给出程序的输出结果。#includeclassbaseintlength;intwidth;inthight;public:base()length=width=hight=1;coutConstrucingbaseobjectdefaultendl;base(int,int,int);base(base&);intsurface(void);intvolume(void);base&operator=(constbase&BB);base:base(inta,intb,intc)length=a;width=b;hight=c;coutConstructingbaseobjec

50、tbybase(.)!endl;base:base(base&B)length=B.length;width=B.width;hight=B.hight;coutConstructingbaseobjectbybase(base&)!endl;base&base:operator=(constbase&BB)length=BB.length;width=BB.width;hight=BB.hight;coutConstructingbaseobjectbyoperatorendl;return*this;intbase:surface(void)return2*(length*width+le

51、ngth*hight+width*hight);intbase:volume(void)returnlength*width*hight;voidmain(void)baseA;coutcubeA:surface=A.surface()volume=A.volume()endl;baseB(10,10,10);coutcubeB:surface=B.surface()volume=B.volume()endl;A=B;coutcubeA(B):surface=A.surface()volume=A.volume()endl;baseC(A);coutcubeC(A):surface=C.sur

52、face()volume=C.volume()endl;答案:使用了“=”运算符重载,目的是将复制结构函数与“=”运算符重载的使用方法做比较。输出结果以下:ConstrucingbaseobjectdefaultcubeA:surface=6volume=1Constructingbaseobjectbybase(.)!cubeB:surface=600volume=1000ConstructingbaseobjectbyoperatorcubeA(B):surface=600volume=1000Constructingbaseobjectbybase(base&)!cubeC(A):sur

53、face=600volume=100037.阅读程序,给出正确的输出结果。#includeclassbasepublic:virtualintfun(void)constcoutbase:funendl;return10;classdivide:publicbasepublic:intfun(void)constcoutdivide:funfun();b2.fun();b3.fun();答案:正确的输出结果为:divide:fundivide:funbase:fun38.下边这个程序使用了静态成员变量,认真阅读程序此后给出正确的输出结果。#include#includeclassroomint

54、width;intheight;intlength;public:room(int,int,int);intgetW(void)constreturnwidth;intgetH(void)constreturnheight;intgetL(void)constreturnlength;intfloorarea(void)returnlength*width;voiddisplay(void);room&operator+=(int);room:room(intl=0,intw=0,inth=0)length=l;width=w;height=h;voidroom:display(void)co

55、utTheroomslengthis:lengthendl;coutTheroomswidthis:widthendl;coutTheroomsheightis:heightendl;room&room:operator+=(inthh)height+=hh;return*this;classbuildingstaticroomroomaray5;staticintheightaray5;public:building()for(inti=1;i=5;i+)heightarayi+=i;voidaddheight(void);voidprint(void);voidbuilding:addhe

56、ight(void)for(inti=0;i5;i+)roomarayi+=i+1;voidbuilding:print(void)for(inti=0;i5;i+)coutTheithroomsinfomationsuchas:endl;roomarayi.display();intbuilding:heightaray5=0,0,0,0,0;roombuilding:roomaray5=room(10,4,3),room(10,4,3),room(10,4,3),room(10,4,3),room(10,4,3);voidmain(void)buildingbd;bd.print();co

57、utDoyouwanttoaddtherooms?(y/n)ch;if(ch=y)bd.addheight();bd.print();elseif(ch=n)exit(1);elseexit(1);答案:正确的输出结果为:The0throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:3The1throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:3The2throomsinfomationsuch

58、as:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:3The3throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:3The4throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:3Doyouwanttoaddtherooms?(y/n)假如输入y,则又会使每一个房间挨次加高,且房间的高度呈阶梯状,其输出结果为:The0throomsin

59、fomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:4The1throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:5The2throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:6The3throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4The

60、roomsheightis:7The4throomsinfomationsuchas:Theroomslengthis:10Theroomswidthis:4Theroomsheightis:8下边这一程序是对于多重继承时结构函数的调用次序问题,给出正确的输出结果并说明原由。#includeclassbasepublic:intb;base()b=0;classdivide1:virtualpublicbaseintb1;public:divide1()b=10;classdivide2:virtualpublicbaseintb2;public:divide2()b=20;classsubd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论