2021年度自考C试题及答案9套合集.pdf
全国自考C+程序设计模仿试卷(-)38一、单项选取题(本大题共20小题,每小题1分,共20分)在每小题列出四个备选项中只有一种是符合题目规定,请将其代码填写在题后括号内。错选 多选或未选均无分。1.编写C+程序普通需通过几种环节依次是()A.编辑、调试、编译、连接B.编辑、编译、连接、运营C.编译、调试、编辑、连接D.编译、编辑、连接、运营答案:B解析:(P 2 1)通过编辑、编译、连接和运营四个环节。编辑是将C+源程序输入计算机过程,保存文献名为cp p。编译是使用系统提供编译器将源程序cp p 生成机器语言过程,目的文献为o bj,由于没有得到系统分派绝对地址,还不能直接运营。连接是将目的文献o bj转换为可执行程序过程,成果为e xe。运营是执行e xe,在屏幕上显示成果过程。2.决定C+语言中函数返回值类型是()A.r e t ur n 语句中表达式类型B.调用该函数时系统随机产生类型C.调用该函数时主调用函数类型D.在定义该函数时所指定数据类型答案:D解析:(P 5 1)函数返回值类型由定义函数时指定数据类型决定。A 项表达式值要转换成函数定义时返回类型。3 .下面论述不对的是()A.派生类普通都用公有派生B.对基类成员访问必要是无二义性C.赋值兼容规则也合用于多重继承组合D.基类公有成员在派生类中依然是公有答案:D解析:(P 1 3 6)继承方式有三种:公有、私有和保护。多继承中,各种基类具备同名成员,在它们子类中访问这些成员,就产生了二义性,但进行访问时,不能存在二义性。赋值兼容规则是指派生类对象可以当作基类对象使用,只要存在继承关系,因此单继承或多继承都合用。基类中公有成员采用私有继承时.,在派生类中变成了私有成员,因此D项错误。4 .所谓数据封装就是将一组数据和与这组数据关于操作组装在一起,形成一种实体,这实体也就是()A.类B.对象C.函数体D.数据块答案:A解析:(P 3 9)类即数据和操作组合体,数据是类静态特性,操作是类具备动作。5.在公有派生类成员函数不能直接访问基类中继承来某个成员,则该成员一定是基类中()A.私有成员B.公有成员C.保护成员D.保护成员或私有成员答案:A解析:(P 1 3 3)在派生类中基类保护或者基类公有都可以直接访问,基类私有成员只能是基类成员函数来访问。因此选取A项。6.对基类和派生类关系描述中,错误是()A.派生类是基类详细化B.基类继承了派生类属性C.派生类是基类定义延续D.派生类是基类特殊化答案:B解析:(P 1 2 9)派生类成员一种是来自基类,一种来自自身,因此派生类是基类扩展,也是基类详细化和特殊化,派生类是对基类扩展。B项基类不能继承派生类成员,因此错误。7.关于t h i s指针使用说法对的是()A.保证每个对象拥有自己数据成员,但共享解决这些数据代码B .保证基类私有成员在子类中可以被访问。C.保证基类保护成员在子类中可以被访问。D.保证基类公有成员在子类中可以被访问。答案:A解析:(P 8 6)t h i s指针是隐藏,可以使用该指针来访问调用对象中数据。基类成员在派生类中能否访问,与继承方式关于,与t h i s没关于系。因此选取A项。8.所谓多态性是指()A.不同对象调用不同名称函数B.不同对象调用相似名称函数C.一种对象调用不同名称函数D.一种对象调用不同名称对象答案:B解析:(P 1 6 7)多态性有两种静态多态性和动态多态性,静态多态性是指调用同名函数,由于参数不同调用不同同名函数;动态多态性是指不同对象调用同名函数时,由于对象不同调用不同同名函数。多态性必定具备相似函数名,因此选取B项。9.一种函数功能不太复杂,但规定被频繁调用,则应把它定义为()A.内联函数B.重载函数C.递归函数D.嵌套函数答案:A解析:(P 5 9)内联函数特性代码少,频繁调用,执行效率高。重载函数解决统一接口问题;递归是子程序调用,程序调用要耗费诸多空间和时间,循环/迭代都比递归有效率得多,递归只是从形式上,逻辑比较简洁。嵌套函数即重复调用,速度较慢。因此选取A项。1 0 .下面函数模板定义中不对的是()A.AB.BC.CD.D答案:A解析:(P 1 4 7)A 项中F 是一种返回Q类型值,而r e t u r n 中用返回类型作为返回值错误。因此选取A 项。1 1 .假设C la s s Y:p u b li c X,即类Y 是类X 派生类,则阐明一种Y 类对象时和删除Y 类对象时,调用构造函数和析构函多顺序分别为()A.X.Y;Y.XB.X.Y;X,YC.Y.X;X,YD.Y,X;Y,X答案:A解析:(P 1 3 0)派生类构造函数必要对这三类成员进行初始化,其执行顺序:调用基类构造函数;调用子对象构造函数;派生类构造函数体。析构函数在执行过程中也要对基类和成员对象进行操作,但它执行过程与构造函数正好相反,即对派生类新增普通成员进行清理;调用成员对象析构函数,对派生类新增成员对象进行清理;调用基类析构函数,对基类进行清理,因此选取A 项。1 2 .适当采用i n li n e 定义函数状况是()A.函数体具有循环语句B.函数体具有递归语句C.函数代码少、频繁调用D.函数代码多、不常调用答案:C解析:(P 5 9)内联函数具备程序代码少、频繁调用和执行效率高特性,因此选取C 项。1 3 .假定一种类构造函数为A(i n t a a,i n t b b)a=a a;b=a*b b;,则执行A x(4,5);语句后,X.a 和x.b 值分别为()A.3 和 1 5B.5 和4C.4 和 2 0D.2 0 和 5答案:C解析:(P 75)a=4,由于后减,b 值与a、b b 有关,b =4*5=2 0,而与a a 没有任何关系。1 4.在类中阐明成员可以使用核心字是()A.p u b li cB e x t e r nC.c p uD.r e g i s t e r答案:A解析:e x t e r n 用于声明外部变量。r e g i s t e r 声明寄存器类型变量。无c p u 类型。它们都不能声明类成员。p u b li c 声明为公有访问权限,因此选取A 项。1 5 .下列不能作为类成员是()A.自身类对象指针B.自身类对象C.自身类对象引用D.另一种类对象答案:B解析:类定义,如果有自身类对象,使得循环定义,B 项错误。在类中具备自身类指针,可以实现链表操作,固然也可以使用对象引用。类中可以有另一种类对象,即成员对象。所以选取B 选项。1 6 .使用地址作为实参传给形参,下列说法对的是()A.实参是形参备份B.实参加形参无联系C.形参是实参备份D.实参加形参是同一对象答案:D解析:(P5 1)地址作为实参,表达实参加形参代表同一种对象。如果实参是数值,形参也是普通变量,此时形参是实参备份。因此选取D项。1 7 .下列程序输出成果是()ttinclude void main()int n 3 =1 0,2 0,3 0,4 0,5 0,6 0;int(*p)3 ;vnp=n;coutp 0 0 ,”*(p C O +1)/,/z(*p)2 aD.(*x).a()答案:B解析:(P4 1)对象访问成员方式为:对象名.成员。指针可以有两种:(*对象指针).成员或者对象指针-成员。A 选项是访问数据成员,B 项是访问成员函数。2 0 .关于对象概念描述中,说法错误是()A.对象就是C 语言中构造变量B.对象代表着正在创立系统中一种实体C.对象是类一种变量D.对象之间信息传递是通过消息进行答案:A解析:(P3 7)A 对象在C+中才有,涉及数据和操作两项,而C 中变量只有数据,没有操作。所以A 项错误。二、填空题(本大题共20小题,每小题1分,共20分)请在每小题空格中填上对的答案错填、不填均无分。1 .C+流库预定义了4 个流,它们是cin、cout、clog和_ _。答案:(P1 9 3)cerr 解析cin、cout、clog和cerr分别用于原则输入、输出、原则错误流(缓冲)和原则错误流(非缓冲)。2.每个对象都是所属类一种答案:(P6 9)实例 解析类是对象抽象,对象是类一种实例。3 .在已经定义了整型指针ip后,为了得到一种涉及1 0 个整数数组并由i p 所指向,应使用语句一。答 案:(P7 8)i n t*i p=n e w i n t 1 0;解析n e w用来动态开辟空间。惯用来产生动态数组及对象构造函数。4 .函数模板中紧随te m p l a te 之后尖括号内类型参数都要冠以保存字。答案:(P1 4 5)c l a s s 解析类模板使用。te m p l a te c l a s s T ,也可以引入多参数如:te m p l a te 5.定义类动态对象数组时,系统只可以自动调用该类 构造函数对其进行初始化。答案:(P8 0)无参 解析使用n e w创立对象数组,调用无参构造函数。6 .表达式c o ut e n d l 还可表达为_。答案:解析e n d l 与字符常量 n 等价。7 .在C+中,访问一种指针所指向对象成员所用指向运算符是答案:-解析指针使用成员有两种办法:指 向 运 算 符 和”成员访问运算符。8.如果一种类名称为M y C l a s s,使用这个类一种对象初始化该类另一种对象时,可以调用 构造函数来完毕此功能。答案:(P8 0)复制或拷贝复制或拷贝构造函数就是用对象初始化新对象。9 .对赋值运算符进行重载时,应声明为 函数。答案:(P1 8 3)类成员 解析运算符重载办法有友元或者成员函数两种途径,但是赋值运算符只能使用成员函数办法来实现。1 0 .如果要把A 类成员函数f ()且返回值为v o i d 声明为类B 友元函数,则应在类B 定义中加入语句答案:(P1 0 9)f r i e n d v o i d A:f ();解析成员函数作为另一种类友元函数,格式为:f r i e n d 返回类型 类名:函数(形参)。1 1 .下列程序段输出成果是。f o r(i=0,j=1 0,k=0;i =j;i+,j-=3,k=i+j);c o ut k;答案:4 解析f o r 循环构造,三个表达式作用,初始化、循环判断条件和循环变量变化。循环执行了三次,k 作用是计算i、j 和。1 2 .Str i n g 类 办法返回查找到字符串在主串位置。答案:(P4 0)f i n d 解析s tr i n g 类对象办法f i n d,查不到字符串,则返回T。1 3 .i n t n=0;wh i l e (n=l)n+;wh i l e 循环执行次数是。答案:无限次 解析=是赋值运算符,不是关系运算符,且不等0,因此死循环。1 4 .控制格式输入输出操作中,函数 是用来设立填充字符。规定给出函数名和参数类型答案:(P1 95)s e tf i l l (c h a r)解析格式控制办法使用,如s e tw,s e tf i l l 等等。1 5 .C+语言支持两种多态性分别是编译时多态性和 多态性。答案:(P1 6 7)运营时 解析多态性涉及静态(编译时)多态性和动态(运营时)多态性。1 6 .设函数s u m 是由函数模板实现,并且s u m 6)和s u m(4.6,8)都是对的函数调用,则函数模板具备一个类型参数。答 案:(P6 1)21 7 .执行下列代码s t r i n g s t r(He l l o C+”);c o u t s t r.s u b s t r(5,3);程序输出成果是。答案:(P4 2)C+解析s u b s t r 取子字符串,第1 个参数表达要截取子串在字符串中位置,第2 个表达取多少个字符。1 8 .在面向对象程序设计中,将一组对象共同特性抽象出来形成。答案:(P3 8)类 解析类是相似特性对象抽象,对象是类一种实例。1 9 .定义类动态对象数组时,元素只能靠自动调用该类 来进行初始化。答案:(P7 7)无参构造函数 解析使用n e w 创立动态对象数组,不能有参数,因此只能调用无参构造函数,初始化对象2 0 .已知有2 0 个元素i n t 类型向量VI,若用VI初始化为V2 向量,语句是。答 案:(P1 5 1)v e c t o r V2(Vl);解析采用向量初始化另一 种向量形式:v e c t o r n a m e l (n a m e);三、改错题(本大题共5小题,每小题2分,共10分)下面类定义中有一处错误,请用下横线标出错误所在行并给出修改意见。1.Si n c l u d e c l a s s Te s t p r i v a t e:i n t x,y=2 0;p u b l i c:Te s t (i n t i,i n t j)x=i,y=j;i n t g e t x()r e t u r n x;i n t g e t y()r e t u r n y;;v o i d m a i n O Te s t m t(1 0,2 0);c o u t m t.g e t x ()e n d l;c o u t m t.g e t y ()e n d l;答案:i n t x,y=2 0;在类内部不能对数据成员直接赋值。修改i n t x,y;2.Si n c l u d e c l a s s Te s t i n t x,y;p u b l i c:f u n(i n t i,i n t j)x=i;y=j;s h o w ()c o u t ,x=z z x;i f (y)c o u t,/,y=,y e n d l;c o u t e n d l;);v o i d m a i n()Te s t a;a.f u n(l);a.s h o w();a.f u n (2,4);a.s h o w ();)答案:i n t i,i n t j 调用时,既有一种参数,也有两个参数,且没有重载,因此参数需要带默认值。因此i n t i,i n t j 错误。修改i n t i,i n t j=0/注j 只要有一种i n t 类型数据就行。3.t t i n c l u d e c l a s s A i n t i;p u b l i c:v i r t u a l v o i d f u n ()=0;A(i n t a)i=a;);c l a s s B:p u b l i c A i n t j;p u b l i c:v o i d f u n ()c o u t ,zB:f u n()n;B(i n t m,i n t n=0):A(m),j (n);v o i d m a i n()(A *p a;B b(7);p a=&b;)答案:B(i n t m,i n t n=0):A(m),j(n)由于基类是抽象类,不能被实例化,因此在派生类中不能调用初始化基类对象。因此B(i n t m,i n t n=0):A始),j(n)错误,删去A(m)。修改B(i n t m,i n t n=0):j(n)4 Si n c l u d e c l a s s X p u b l i c:i n t x;p u b l i c:X(i n t x)c o u t x=x e n d l;X(X&t)x=t.X;c o u t t.x e n d l;v o i d f u n(X););v o i d f u n(X t)c o u t x=x x=x 表达式值要加括号。修改c o u t (t h i s-x=x)e n d l;5.t t i n c l u d e Si n c l u d e c l a s s B a s p u b l i c:B a s (c h a r *s 二 0)s t r c p y(n a m e,s);v o i d s h o w();p r o t e c t e d:c h a r n a m e 2 0;);B a s b;v o i d s h o w()c o u t ,n a m e:b.n a m e e n d l;v o i d m a i n O B a s d 2(h e l l o );s h o w();)答案:v o i d s h o w。;是普通函数不是成员函数,但是要访问类成员,需要定义为友元函数。修改f r i e n d v o i d s h o w();四、完毕程序题(本大题共5小题,每小题4分,共20分)1 .在下,面程序横线处填上恰当字句,以使该程序执行成果为:5 0 4 3 4 2 1 1 00 7.1 8.1 9.1 1 0.1 1 1.1Si n c l u d e t e m p l a t e v o i d f ();f o r (i n t i=0;i n/2;i+)t=a i ,a i =a n-l-i ,a =t;)v o i d m a i n ()i n t a 5 =1 0,2 1,3 4,4,5 0 ;d o u b l e d 6 =1 1.1,1 0.1,9.1,8.1,7.1 ;f (a,5);f (d,6);f o r (i n t i=0;i 5;i+)c o u t a i z,/;c o u t e n d l;f o r (i=0;i 6;i+)c o u t d i ”;c o u t e n d l;)答案:T a ,i n t n,T t=0;解析 不同数据类型调用,使用了模板。f函数增长t变量,由于实参类型不同,因此t类型应当是T类型。2.在下面程序底画线处填上恰当字句,使该程序执行成果为4 0。#i n c l u d e c l a s s Te s t p u b l i c:Te s t (i n t i=0)x=i+x;i n t Ge t n u m O r e t u r n Te s t:x+7;);v o i d m a i n()Te s t t e s t;c o u t t e s t.Ge t n u m ()e n d l;)答案:s t a t i c i n t x;,i n t Te s t:x=3 0;解析从成员函数访问方式类名:成员可知是静态成员因此s t a t i c i n t x;从成果要对初始化为3 0,且在类外进行初始化,i n t Te s t:x=3 0;。3.在下列程序空格处填上恰当字句,使输出为:0,2,1 0。#i n c l u d e Si n c l u d e c l a s s Ma g i c d o u b l e x;p u b l i c:Ma g i c(d o u b l e d=0.0 0):x(f a b s(d)(Ma g i c o p e r a t o r+(_)(r e t u r n Ma g i c(s q r t(x*x+c.x*c.x);)o p e r a t o r(o s t r e a m&s t r e a m,Ma g i c&c)s t r e a m c.x;r e t u r n s t r e a m;);v o i d m a i n()Ma g i c m a;c o u t m a/z,“Ma g i c (2),,m a+Ma g i c (-6)+Ma g i c(-8)e n d l;答案:o p e r a t o r+(Ma g i c&c),f r i e n d o s t r e a m&o p e r a t o r 解析对加法进行重载,o p e r a t o r (Ma g i c&c),是对插入符进行重载,要访问成员因此定义为友元函数,f r i e n d o s t r e a m&o p e r a t o ro4 .下面是一种输入半径,输出其面积和周长C+程序,在下划线处填上对的语句。Si n c l u d e v o i d m a i n O d o u b l e r a d;c o u t z,r a d=z z;c i n r a d;d o u b l e 1=2.0*p i*r a d;d o u b l e s=p i*r a d*r a d;c o u t z,n Th e l o n g i s:,l e n d l;c o u t z zTh e a r e a i s:z zs e n d l;答案:u s i n g n a m e s p a c e s t d,#d e f i n e p i 3.1 4 1 5 9 解析进行输入或输出要引入i o s t r e a m,因此u s i n g n a m e s p a c e s t d;从标点看没有分号,因此使用宏定义,#d e f i n e p i 3.1 4 1 5 9。5.程序实现大写字母转换成小写字母。t t i n c l u d e v o i d m a i n O c h a r a;c i n a;i f()a=a+i;c o u t a=A&a=Z解析大写字母变小写字母相差3 2,需要对i声明并初始化。大写字母变小写字母。要判断字符是大写字母。五 程序分析题(本大题共4小题,每小题5分,共20分)1.给出下面程序输出成果。#i n c l u d e c l a s s a p u b l i c:v i r t u a l v o i d p r i n t()c o u t a p r o g.z,e n d l;);c l a s s b:p u b l i c a);c l a s s c:p u b l i c b p u b l i c:v o i d p r i n t ()c o u t,c p r o g./z e n d l;);v o i d s h o w(a *p)(*p).p r i n t ();)v o i d m a i n()a a;b b;c c;s h o w(&a);s h o w(&b);s h o w(&c);)答案:a p r o g.a p r o g.c p r o g.解析考查多态性。a类对象调用自身虚函数,b类由于没有覆写p r i n t,因此依然调用基类虚函数。而c类重新定义p r i n t虚函数,因此调用c类p r i n t。2.给出下面程序输出成果。#i n c l u d e#i n c l u d e#i n c l u d e b o o l f u n(l o n g n);v o i d m a i n()l o n g a=1 0,b=3 0,1=0;i f(a%2=0)a+;f o r (l o n g m=a;m=b;m+=2)i f (f u n(m)i f(l+%1 0=0)c o u t e n d l;c o u t s e t w(5)m;)b o o l f u n(l o n g n)i n t s q r t m=(i n t)s q r t(n);f o r(i n t i=2;i=s q r t m;i+)i f(n%i=0)r e t u r n f a l s e;r e t u r n t r u e;答案:1 1 1 3 1 7 1 9 2 3 2 9 解析循环体用来判断n与否是质数函数,在m a i n函数判断1 03 0之间质数。3.给出下面程序输出成果。Si n c l u d e c l a s s Te s t i n t x,y;p u b l i c:Te s t (i n t i,i n t j=0)x=i;y=j;i n t g e t (i n t i,i n t j)r e t u r n i+j;);v o i d m a i n()Te s t t l(2),t 2(4,6);i n t (Te s t:*p)(i n t,i n t=1 0);p=Te s t:g e t;c o u t(t l.*p)(5)e n d l;Te s t *p l=&t 2;c o u t*p)(7,2 0)e n d l;)答案:1 5 2 7 解析指向类成员函数指针使用,*P指向Te s t类中有两个参数函数一种指针。P=Te s t:g e t.这样p就和g e t发生了联系。(t l.*p)(5)等价于调用一种参数g e t函数。4.Si n c l u d e#i n c l u d e#i n c l u d e c l a s s s t u d e n t c h a r n a m e 8;i n t d e g;c h a r l e v e l 7 ;f r i e n d c l a s s p r o c e s s;/阐明友元类p u b l i c:s t u d e n t(c h a r n a ,i n t d)s t r c p y (n a m e,n a);d e g=d;);c l a s s p r o c e s s p u b l i c:v o i d t r a n s(s t u d e n t&s)i n t i=s.d e g/1 0;s w i t c h(i)c a s e 9:s t r c p y(s.l e v e l,优);b r e a k;c a s e 8:s t r c p y (s.l e v e l,良);b r e a k;c a s e 7:s t r c p y(s.l e v e l,中);b r e a k;c a s e 6:s t r c p y (s.l e v e l,及 格);b r e a k;d e f a u l t:s t r c p y (s.l e v e l,不及格);)v o i d s h o w(s t u d e n t&s)c o u t s e t w(1 0)s.n a m e s e t w(4)s.d e g s e t w(8)s.l e v e l e n d l;;v o i d m a i n O s t u d e n t s t 口=s t u d e n t(张三”,7 8),s t u d e n t(李四”,9 2),s t u d e n t(王五”,6 2),s t u d e n t (孙六,8 8);p r o c e s s p;c o u t 结 果:姓名 s e t w(6)成绩”久s e t w(8)级别e n d l;f o r (i n t i=0;i G e t P e r i m ()G e t P e r i m ()e n d l;_一 单项选取题(本大题共20小题,每小题1分,共20分)在每小题列出四个备选项中只有一种是符合题目规定,请将其代码填写在题后括号内。错选 多选或未选均无分。1.静态成员函数没有()A.返回值B.t h i s 指针C.指针参数D.返回类型答案:B解析:(P 107)静态成员函数是普通函数前加入s t a t i c,它具备函数所有特性:返回类型、形参,因此使用(P 107)静态成员函数,指针可以作为形参,也具备返回值。静态成员是类具备属性,不是对象特性,而t h i s 表达是隐藏对象指针,因而静态成员函数没有t h i s 指针o静态成员函数当在类外定义时,要注意不能使用s t a t i c 核心字作为前缀。由于静态成员函数在类中只有一种拷贝(副本),因而它访问对象成员时要受到某些限制:静态成员函数可以直接访问类中阐明静态成员,但不能直接访问类中阐明非静态成员;若要访问非静态成员时,必须通过参数传递方式得到相应对象,再通过对象来访问。2.假定AB为一种类,则执行“AB a(2),b 3 ,*p 4 ;”语句时调用该类构造函多次数为()A.3B.4C.5D.9答案:B解析:(P 79)a(2)调用1次带参数构造函数,b 3 调用3次无参数构造函数,指针没有给它分派空间,没有调用构造函数。因此共调用构造函多次数为4。3.关于多态性说法不对的是()A.C+语言多态性分为编译时多态性和运营时多态性B.编译时多态性可通过函数重载实现C.运营时多态性可通过模板和虚函数实现D.实现运营时多态性机制称为动态多态性答案:C解析:(P 171)多态性分为静态和动态。静态通过函数重载来实现,动态是通过基类指针或基类引用和虚函数来实现。因此错误是C项。4.假定一种类构造函数为“A(i n t i=4,i n t j=0)a=i;b=j;“,则执行“A x;”语句 后,x.a 和x.b 值分别为()A.1 和0B.1 和4C.4和 0D.4和 1答案:A解析:(P 75)带默认构造函数,相应实参没有值时就采用形参值。调用构造函数时,i=l,不采用默认值,而只有一种参数,j 采用默认值0即j=0,因而a=l,b=0,选取A项。5 .类My A拷贝初始化构造函数是()A.My A()B.My A(My A*)C.My A(My A&)D.My A(My A)答案:C解析:(P 80)复制即拷贝构造函数使用对象引用作形参,防止暂时产生一种对象,A无参构造函数,B是指针作为形参,D项是对象,因此选取C项。6 .在C+中,函数原型不能标记()A.函数返回类型B.函数参数个数C.函数参数类型D.函数功能答案:D解析:函数声明,阐明函数参数、返回类型以及函数名,函数体即实现某些决定功能。因此函数原型不能决定函数功能。7 .友元关系不能()A.提高程序运营效率B .是类与类关系C.是一种类成员函数与另一种类关系D.继承答案:D解析:(P 111)友元可以是函数与类关系即友元函数,也可以类与类关系即友元类,但友元不能继承,是单向性,且不具备传递性。友元可以访问类中所有成员,提高了访问以便性。因而选取D 项。8.实现两个相似类型数加法函数模板声明是()A.add(T x,T y)B.T add(x,y)C.T add(T x,y)D.T add(T x,T y)答案:D解析:(P 6 3)实现两个相似类型数加法成果应当和操作数具备相似类型。进行加法运算后成果也是和参数具备相似类型,需要返回值。A 无返回值时要用v o i d,B 形参无类型,C 形参y没有类型,因此选取D 项。9.在i n t a=3,i n t *p=&a;中,*p 值 是()A.变量a地址值B.无意义C.变量p 地址值D.3答案:D解析:*P 代表引用a变量值,p 代表a地址值。因此选取D 项。1 0 .下列不是描述类成员函数是()A.构造函数B.析构函数C.友元函数D.拷贝构造函数答案:C解析:(P 10 9)构造函数、析构函数、拷贝构造函数都是特殊成员函数,友元则不是成员函数。因此选取C 项。1 1 .如果从原有类定义新类可以实现是()A.信息隐藏B.数据封装C.继承机制D.数据抽象答案:C解析:(P 12 9)继承指在原有类基本上产生新类。数据封装即数据和操作组合在一起,形成类。信息隐藏,通过访问权限来实现。数据抽象,将事物特性抽象为数据成员或服务。因而选取C项。1 2 .下面关于类说法不对的是()A.一种类可以有各种构造函数B.一种类只有一种析构函数C.析构函数需要指定参数D.在一种类中可以阐明具备类类型数据成员答案:C解析:(P 8 0)构造函数可以有参数、可以重载、因而可以有各种,A项对的。析构函数只有一种不能重载、不能继承,没有返回值,B项对的,C项错误。1 3 .在函数定义中形参属于()A.全局变量B.局部变量C.静态变量D.寄存器变量答案:B解析:形参或函数中定义变量都是局部变量。在函数外定义变量是全局变量。形参只能用局部变量,频繁使用变量可以声明为寄存器变量,形参不能使用静态变量或寄存器变量。1 4 .下列关于重载函数说法中对的是()A.重载函数必要具备不同返回值类型B.重载函数参数个数必要相似C.重载函数必要有不同形参列表D.重载函数名可以不同答案:C解析:(P 5 9)函数重载必要函数名相似而形参类型或个数不同,与返回值无关。1 5 .t hi s指针存在目是()A.保证基类私有成员在子类中可以被访问B.保证基类保护成员在子类中可以被访问C.保证每个对象拥有自己数据成员,但共享解决这些数据成员代码D.保证基类公有成员在子类中可以被访问答案:C解析:(P 8 6)C+规定函数在被调用之前,应当让编译器懂得该函数原型,以便编译器运用函数原型提供信息去检查调用合法性,强制参数转换成为恰当类型,保证参数对的传递。对于原则库函数,其声明在头文献中,可以用i n cl u d e 宏命令包括这些原型文献;对于顾客自定义函数,先定义、后调用函数可以不用声明,但后定义、先调用函数必要声明。普通为增长程序可理解性,常将主函数放在程序开头,这样需要在主函数前对其所调用函数一一进行声明,以消除函数所在位置影响。因此选取C 项。1 6 .关于n e w 运算符下列描述中,错误是()A.它可以用来动态创立对象和对象数组B.使用它创立对象或对象数组可以使用运算符d e l e te 删除C.使用它创立对象时要调用构造函数D.使用它创立对象数组时必要指定初始值答案:D解析:(P 7 8)n e w 创立对象数组不能指定初始值,因此调用无参构造函数,选取D 项。1 7 .已知:p 是一种指向类A 数据成员m 指针,A 1 是类A 一种对象。如果要给m 赋值为5,对的是()A.A l.p=5;B.A l-p=5;C.A l.*p=5 ;D.*A 1.p=5;答案:C解析:(P 1 1 8)A 中p 是指针即地址,错误;B 选项中A l 不是指针不能使用指向运算符-,错误;“*”比”级别要高,因此D 选项*A l.p=5 相称于(*A l).p=5;错误。此外涉及到指向成员函数时注意如下几点:指向成员函数指针必要于其赋值函数类型匹配三个方面:(1)参数类型和个数;(2)返回类型;(3)它所属类类型。成员函数指针声明:指向sh o r t型S cr e e n 类成员指针定义如下:sh o r t S cr e e n:p s_ S cr e e n;p s_ S cr e e n 可以用_ h e i g h t地址初始化如下:sh o r t S cr e e n:*p s_ S cr e e n=&S cr e e n:_ h e i g h t;类成员指针必要总是通过特定对象或指向改类型对象指针来访问。是通过使用两个指向成员操作符指针(针对类对象和引用.*,以及针对指向类对象指针-*)。1 8 .如下基类中成员函数表达纯虚函数是()A.v i r tu a l v o i d tt()=0B.v o i d tt(i n t)=0C.v i r tu a l v o i d tt(i n t)D.v i r tu a l v o i d tt(i n t)答案:A解析:(P 1 7 3)当在基类中不能为虚函数给出一种故意义实现时,可以将其声明为纯虚函数,实现由派生类完毕。格式:v i r tu a l 函数返回类型阐明符X 函数名(参数表)=0;。1 9 .C+类体系中,不能被派生类继承有()A.常成员函数B.构造函数C.虚函数D.静态成员函数答案:B解析:(P 1 3 2)构造函数不能被继承。2 0 .静态成员函数不能阐明为()A.整型函数B.浮点函数C.虚函数D.字符型函数答案:C解析:(P 1 0 8)使用核心字s t a t i c 声明成员函数就是静态成员函数,静态成员函数也属于整个类而不属于类中某个对象,它是该类所有对象共享成员函数。静态成员函数可以在类体内定义,也可以在类外定义。当在类外定义时,要注意不能使用s t a t i c 核心字作为前缀。由于静态成员函数在类中只有一种拷贝(副本),因而它访问对象成员时要受到某些限制:静态成员函数可以直接访问类中阐明静态成员,但不能直接访问类中阐明非静态成员;若要访问非静态成员时,必要通过参数传递方式得到相应对象,再通过对象来访问。虚函数是非静