1、二级 C+笔试-16 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:70.00)1.如下程序段运行时输出“*”的个数是 int i=5; while(int i:0)cout*;i-;(分数:2.00)A.0B.1C.5D.无穷2.建立一个类对象时,系统会自动调用(分数:2.00)A.析构函数B.构造函数C.静态函数D.友元函数3.有如下程序: #includeiostream using namespaee std; class Pair int m; int n; public: Pair(int i,int j):m(i),n(j) boot
2、 operator(pair P)const;/需在类体外给出定义 ; int main( ) Pair pl(3,4),p2(4,3),p3(4,5); cout(plp2)(p2p1)(p2p3)(p3p2); retum 0; 运算符函数 operator的功能是比较两个 Pair 对象的大小,当左边对象大时,返回 true,否则返回 false。比较规则是首先比较两对象的 m 成员,m 大者为大;当 m相等时比较 n,n 大者为大。程序输出 0101,下列对运算符重载函数的正确定义是(分数:2.00)A.bool Pair:operator(Pair P)eonstB.bool Pai
3、r:operator(Pair P) if(m!=P.m)return mpIn;return npn; if(m!=P.m)return mpm;return npn;C.bool Pair:operator(Pair P)eonstD.bool Pair:operator(Pair P) if(mp.m)return true;return np.n; if(Ulp.m)return true;return np.n;4.假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外 3 条语句不同的语句是(分数:2.00)A.eoutsetfill(*)123setw(9)321;B.
4、eoutsetrill(*)setw(6)left123setw(6)right321;C.eout123setrill(*)setw(6)321;D.eoutsetfill(*)setw(9)left123321;5.如下程序运行时的输出结果是 #includeiostream using namespace std; class ONE int c; public: ONE( ):c(0)eout1; ONE(int n):C(n)cout2; ; class TW0 ONE onel; ONE one2; public: TWO(int m):one2(m)eout3; ; int ma
5、in( ) TWO t(4); return 0; (分数:2.00)A.3B.23C.123D.2136.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是(分数:2.00)A.提高耦合性、降低内聚性有利于提高模块的独立性B.降低耦合性、提高内聚性有利于提高模块的独立性C.耦合性是指一个模块内部各个元索问彼此结合的紧密程度D.内聚性是指模块间互相连接的紧密程度7.如下程序段运行时的输出结果是 int i=4;int J=1; int main( ) inti=8,j=i; coutijendl; (分数:2.00)A.44B.41C.88D.818.运算符重载时不需要保持的性质是
6、(分数:2.00)A.操作数个数B.操作数类型C.优先级D.结合性9.如下程序的输出结果是 #includeiostream #includecstring using namespace std; class XCF int a; public: XCF(int aa=0):a(aA) cout“1“; XCF(XCF&X)a=xa;cout“2“;l XCF( )couta; int Geta( )t return a; ; int main( ) XCF d(15),d2(d1); XCF*pd=new XCF(8); coutpd-Geta( ); delete pd; return
7、0; (分数:2.00)A.1215588B.1218855C.12185D.12851210.下列关于函数模板的描述中,错误的是(分数:2.00)A.从模板实参表和从模板函数实参表获得的信息矛盾时,以模板实参的信息为准B.对于常规参数所对应的模板实参,任何情况下都不能省略C.虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D.模板参数表不能为空11.如下程序的输出结果是 #includeiostream using namespace std; class A public: virtual void f( )tout1; void g( )cout2; ; class B:pu
8、blic A public: virtual void f( )cout3; void g( )cout4; ; void show(AA) a.f( );a.g( ); int nlain( ) B b; show(B) ; return 0; (分数:2.00)A.12B.34C.14D.3212.如下程序的输出结果是 #includelostream #includecstring using namespace std; class XCD char*a; int b; public: XCD(char*aa,int bB) a=new charstrlen(aA) +1; strcp
9、y(a,aA) ; b=bb; char*Geta( )return a; int Getb( )return b; ; int main( ) char*pl=“abcd“,*p2=“weirong“: int dl,6,d2=8; XCD x(pl,d1),y(p2,d2); coutstrlen(xGeta( )+yGetb( )endl; return 0; (分数:2.00)A.12B.16C.14D.1113.下列排序方法中,最坏情况下比较次数最少的是(分数:2.00)A.冒泡排序B.简单选择排序C.直接插入排序D.堆排序14.数据库应用系统中的核心问题是(分数:2.00)A.数据
10、库设计B.数据库系统设计C.数据库维护D.数据库管理员培训15.有如下类定义和变量定义: class A public: A( )data=0; A( ) int GetData( )constreturn data; void SetData(int n)data=n; private: int data; ; const A a; A b; 下列函数调用中错误的是(分数:2.00)A.aGetData( );B.aSetData(10);C.bGetData( );D.bSetData(10);16.有两个关系 R、S 如下: (分数:2.00)A.选择B.投影C.插入D.连接17.支持子
11、程序调用的数据结构是(分数:2.00)A.栈B.树C.队列D.二叉树19.要建立文件流并打开当前目录下的文件 file.dat 用于输入,下列语句中错误的是(分数:2.00)A.ifstream fin=ifstreamopen(“filedat”);B.ifstream*fir=new ifstream(“filedat”);C.ifstream fin;finopen(“filedat”);D.ifstream*fin=new ifstream( );fin-open(“filedat”);20.已知有数组定义 char a34; 下列表达式中错误的是(分数:2.00)A.a2=“WIN“
12、B.strcpy(a2,“WIN“)C.a23=WD.a01=a0121.有如下类定义: class XX int xx; public: XX( ):xx(0)eoutA; XX(int n):xx(n)toutB; ; class YY:public XX mt yy; public: YY( ):yy(0)i coutyy; YY(int n):XX(n+1),yy(n)coutyy; YY(int m,int n):XX(in),yy(n)coutyy; ; 下列选项中,输出结果为 A0 的语句是(分数:2.00)A.YY y1(0,0);B.YY y2(1);C.YY y3(0);D
13、.YY y4;22.有如下类定义和变量定义: class Parents public: int publicData: private: int privateData; ; class ChildA:public Parents/类体略*/; class ChildB:private Parents/类体略*/; ChildA a; ChildB b; 下列语句中正确的是(分数:2.00)A.coutapublicDataendl;B.coutaprivateDataendl;C.coutbpublieDataendl;D.eoutbprivateDataendl;23.已知类 MyCla
14、ss 声明如下: class MyClass int U; public: MyClass(int k):n(k) int getValue( )constreturn n; ; 在下列数组定义中正确的是(分数:2.00)A.MyClass xl2;B.MyClass x22=new MyClass(1),new MyClass(2);C.MyClass*x32;D.MyClass*x42=MyClass(1),MyClass(2);24.软件按功能可分为应用软件、系统软件和支撑软件。下面属于应用软件的是(分数:2.00)A.编译程序B.操作系统C.教务管理系统D.汇编程序25.在定义一个类模
15、板时,模板形参表是用一对括号括起来的,所采用的括号是(分数:2.00)A.( )B. C.D. 26.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是(分数:2.00)A.10B.8C.6D.427.下列描述中,不属于面向对象思想主要特征的是(分数:2.00)A.封装性B.跨平台性C.继承性D.多态性28.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(分数:2.00)A.ios_base:inB.ios_base:in | ios_base:outC.ios_base:outD.ios_base:in&ios_base:out29.通过派
16、生类的对象可直接访问其(分数:2.00)A.公有继承基类的公有成员B.公有继承基类的私有成员C.私有继承基类的公有成员D.私有继承基类的私有成员30.对 C+编译器区分重载函数无任何意义的信息是(分数:2.00)A.参数类型B.参数个数C.返回值类型D.常成员函数关键字 const31.有如下程序: #includeiostream using namespace std; class AA int k; protected: int n; void setK(int k)this-k=k; public: void setN(int n)this-n=n; ; class BB:public
17、 AA/*类体略*/; int main( ) BB x; xn=1: /1 xsetN(2); /2 Xk=3; /3 xsetK(4); /4 return 0; 在标注号码的 4 条语句中正确的是(分数:2.00)A.1B.2C.3D.432.已知函数 fun 的原型为 int fun(int,int,int); 下列重载函数原型中错误的是(分数:2.00)A.char fun(int,int);B.double fun(int,int,double);C.int fun(int,char*);D.float fun(int,int,int);33.将 E-R 图转换为关系模式时,实体和
18、联系都可以表示为(分数:2.00)A.属性B.键C.关系D.域34.下列叙述中正确的是(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构35.下面叙述中错误的是(分数:2.00)A.软件测试的目的是发现错误并改正错误B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测试的随意性二、B填空题/B(总题数:15,分数:30.00)36.假设用一个长度为 50 的数组(数组元素的下标从 049)作为栈的存储空间,栈底指
19、针 bottom 指向栈底元素,栈顶指针 top 指向栈顶元素,如果 bottom=49,top=30(数组下标),则栈中具有 1 个元素。(分数:2.00)填空项 1:_37.软件测试可分为白盒测试和黑盒测试。基本路径测试属于 1 测试。(分数:2.00)填空项 1:_38.符合结构化原则的三种基本控制结构是:选择结构、循环结构和 1。(分数:2.00)填空项 1:_39.数据库系统的核心是 1。(分数:2.00)填空项 1:_40.在 E-R 图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 1 框。(分数:2.00)填空项 1:_41.有如下程序段: intx=1,y=2,z=
20、3; x=xz: y=yz; z=xy: coutxyz; 这个程序段的输出结果是_。(分数:2.00)填空项 1:_42.有如下程序段: for(inti=i;i=50;i+) if(i%3 1=0)continue; else if(i%5 1=0)continue; couti“,“; 这个程序的输出结果是_。(分数:2.00)填空项 1:_43.有如下程序段: char C20=“examination“; C4=0; coutcendl; 这个程序的输出结果是_。(分数:2.00)填空项 1:_44.下面的函数利用递归实现了求 1+2+3+n 的功能: int sum(int n)
21、if(n=0)return 0; else return n+saln(n-1); 在执行 SUm(10)的过程中,递归调用 sum 函数的次数是_。(分数:2.00)填空项 1:_45.非成员函数应该声明为类 1 函数才能访问该类的私有成员。(分数:2.00)填空项 1:_46.有如下程序: #includeiostream using namespace std; class Monitor public: Monitor(char t):type(t) void Print( )const cout“The type of monitor is“type D. 解析:解析 定义类模板的一
22、般格式为: templateclass 类型参数class 类名类成员声明;26.某二叉树有 5 个度为 2 的结点,则该二叉树中的叶子结点数是(分数:2.00)A.10B.8C.6 D.4解析:解析 对于任何一棵二叉树,其终端结点(叶子结点)数为度为 2 的结点数+1。所以该二叉树的叶子结点数等于 5+1=6。27.下列描述中,不属于面向对象思想主要特征的是(分数:2.00)A.封装性B.跨平台性 C.继承性D.多态性解析:解析 面向对象思想的三大特性:封装、继承、多态。28.当使用 ifstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(分数:2.00)A.ios_
23、base:in B.ios_base:in | ios_base:outC.ios_base:outD.ios_base:in&ios_base:out解析:解析 对于类 ifstrearn,文件打开方式的默认值是 ios:in;而对类 ostrearn 文件打开的方式默认为 los:out。29.通过派生类的对象可直接访问其(分数:2.00)A.公有继承基类的公有成员 B.公有继承基类的私有成员C.私有继承基类的公有成员D.私有继承基类的私有成员解析:解析 在私有继承方式和保护继承方式下,派生类对象不能访问基类的任何成员;在公有继承方式下,派生类对象可以访问基类的公有成员。30.对 C+编译
24、器区分重载函数无任何意义的信息是(分数:2.00)A.参数类型B.参数个数C.返回值类型 D.常成员函数关键字 const解析:解析 若重载函数名相同,则通过参数个数和参数类型的不同来区分该调用哪个重载函数。调用重载函数时,函数返回值类型不在参数匹配检查之列。因此,若两个函数的参数个数和类型都相同,而只有返回值类型不同,则不允许重载。31.有如下程序: #includeiostream using namespace std; class AA int k; protected: int n; void setK(int k)this-k=k; public: void setN(int n)
25、this-n=n; ; class BB:public AA/*类体略*/; int main( ) BB x; xn=1: /1 xsetN(2); /2 Xk=3; /3 xsetK(4); /4 return 0; 在标注号码的 4 条语句中正确的是(分数:2.00)A.1B.2 C.3D.4解析:解析 类对象只能访问类的公有成员,不能访问类的私有成员和保护成员。32.已知函数 fun 的原型为 int fun(int,int,int); 下列重载函数原型中错误的是(分数:2.00)A.char fun(int,int);B.double fun(int,int,double);C.in
26、t fun(int,char*);D.float fun(int,int,int); 解析:解析 若重载函数名相同,则通过参数个数和参数类型的不同来区分该调用哪个重载函数。调用重载函数时,函数返回值类型不在参数匹配检查之列。因此,若两个函数的参数个数和类型都相同,而只有返回值类型不同,则不允许重载。33.将 E-R 图转换为关系模式时,实体和联系都可以表示为(分数:2.00)A.属性B.键C.关系 D.域解析:解析 数据库逻辑设计的主要工作是将 ER 图转换成指定 RDBMS 中的关系模式。从 E-R 图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R 图中属性也可以转换成关系
27、的属性。实体集也可以转换成关系。34.下列叙述中正确的是(分数:2.00)A.栈是“先进先出”的线性表B.队列是“先进后出”的线性表C.循环队列是非线性结构D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 解析:解析 栈是“先进后出”的线性表;队列是“先进先出”的线性表;循环队列是队列的一种顺序存储结构,因此是线性结构;有序线性表既可以采用顺序存储结构,又可以采用链式存储结构。35.下面叙述中错误的是(分数:2.00)A.软件测试的目的是发现错误并改正错误 B.对被调试的程序进行“错误定位”是程序调试的必要步骤C.程序调试通常也称为 DebugD.软件测试应严格执行测试计划,排除测
28、试的随意性解析:解析 软件测试的目的是暴露错误,评价程序的可靠性。软件调试的目的是发现错误的位置并改正错误。软件测试和软件调试不是同一个概念。二、B填空题/B(总题数:15,分数:30.00)36.假设用一个长度为 50 的数组(数组元素的下标从 049)作为栈的存储空间,栈底指针 bottom 指向栈底元素,栈顶指针 top 指向栈顶元素,如果 bottom=49,top=30(数组下标),则栈中具有 1 个元素。(分数:2.00)填空项 1:_ (正确答案:20)解析:解析 通常,栈底指针指向栈空间的栈中的元素个数等于“栈底指针-栈顶指针+1”,即 49-30+1=20。37.软件测试可分
29、为白盒测试和黑盒测试。基本路径测试属于 1 测试。(分数:2.00)填空项 1:_ (正确答案:白盒)解析:解析 黑盒测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑盒测试技术分为等价类划分、边界分析、错误猜测及因果图等。白盒测试的基本原则是保证所测模块中每一个独立路径至少被执行一次;保证所测模块所有判断的每一分支至少被执行一次;保证所测模块每一循环都在边界条件和一般条件下至少各被执行一次;验证所有内部数据结构的有效性。白盒测试的主要方法有逻辑覆盖和基本路径测试等。38.符合结构化原则的三种基本控制结构是:选择结构、循环结构和 1。(分数:2.00)
30、填空项 1:_ (正确答案:顺序结构)解析:解析 结构化程序设计的 3 种基本逻辑结构为顺序结构、选择结构和循环结构。顺序结构是最基本、最常用的程序设计结构;选择结构包括简单分支选择结构和多分支选择结构;循环结构也称重复结构,它根据给定的条件,判断是否需要重复执行某一相同的程序段。39.数据库系统的核心是 1。(分数:2.00)填空项 1:_ (正确答案:数据库管理系统)解析:解析 数据库管理系统可以对数据库的建立、使用和维护进行管理,是数据库系统的核心。40.在 E-R 图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是 1 框。(分数:2.00)填空项 1:_ (正确答案:菱形)解
31、析:解析 在 E-R 图中,用矩形框表示实体,框内标明实体名;用椭圆框表示实体的属性,框内标明属性名;用菱形框表示实体间的联系,框内标明联系名。41.有如下程序段: intx=1,y=2,z=3; x=xz: y=yz; z=xy: coutxyz; 这个程序段的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:213)解析:解析 “”为二进制异或运算符,运算规则为:相同为假(0),不同为真(1)。42.有如下程序段: for(inti=i;i=50;i+) if(i%3 1=0)continue; else if(i%5 1=0)continue; couti“,“; 这个程序的输
32、出结果是_。(分数:2.00)填空项 1:_ (正确答案:15,30,45)解析:解析 本段程序是求解 050 之间所有既是 3 的倍数又是 5 的倍数的数。43.有如下程序段: char C20=“examination“; C4=0; coutcendl; 这个程序的输出结果是_。(分数:2.00)填空项 1:_ (正确答案:exam)解析:解析 对于 c4=0,在 c4里面保存的是对于 ASCII 码为 O 的字符,即空格,使用 cout 遇到空格自动结束,所以打印 exam。44.下面的函数利用递归实现了求 1+2+3+n 的功能: int sum(int n) if(n=0)retu
33、rn 0; else return n+saln(n-1); 在执行 SUm(10)的过程中,递归调用 sum 函数的次数是_。(分数:2.00)填空项 1:_ (正确答案:11)解析:解析 递归调用 1+10=10+sum(9)=10+9+sum(8)=10+9+8+sum(7)=10+1+sum(0),调用参数从 10 到 0,故而调用次数应该为 11 次。45.非成员函数应该声明为类 1 函数才能访问该类的私有成员。(分数:2.00)填空项 1:_ (正确答案:友元)解析:解析 友元函数是对应于当前类的外部函数,但它可以访问该类的所有成员。友元函数不是当前类的成员函数,可以是另外一个类的
34、成员函数。在类中声明友元函数时,需要在函数名前加关键字friend。46.有如下程序: #includeiostream using namespace std; class Monitor public: Monitor(char t):type(t) void Print( )const cout“The type of monitor is“type填空项 1:_ (正确答案:id(I),mon(C))解析:解析 带参构造函数的定义格式(在类外部声明)为: 类名:构造函数名(参数表):数据成员名 1(初始值 1),数据成员名 2(初始值 2)在类中声明为: 构造函数名(参数表):数据成员
35、名 1(初始值 1),数据成员名 2(初始值 2) 在 compute 中有两个数据成员,所以在构造函数中应该对这两个数据成员 id 和 mon 初始化,初始化 mon 创建一个对象,参数为构造函数的形参 c。47.有如下程序: #includeiostream using namespaee std;c lass Animal public: virtual char*getType( )constreturn“Animal“; virtual char*getVoice( )constreturn“Voice“; ; class Dog:public Animal public: char
36、*getType( )constreturn“Dog“; char*getVoice( )eonstreturn“Woof“; ; void type(Animal&A) coutagetType( ); void speak(Animal A) eoutagetVoice( ); int main( ) Dog d;type(D) ;cout“speak“;speak(D) ;cout填空项 1:_ (正确答案:Dog SpeakVoice)解析:解析 派生类继承基类,并重新定义了基类的虚函数。void type(AnimalA) 是对象引用作为函数参数,传递的是地址,是“地址调用”,故 a
37、getType( )调用的是派生类重新定义后的 getType( )成员函数。void speak(Animal A) 是对象作为函数参数,是“传值调用”,在进行函数调用时,将派生类对象赋值给基类对象。但是,对象 a 只能调用派生类继承自基类的成员。故在 agetVoice( )中调用的是基类的虚函数 getVoice( ),打印“Voive”。48.补充完整下面的类定义: const double PI=3.14; class Circle /圆形物体的抽象基类 protected: double r; /半径 public: Circle(double radius=0):r(radius
38、) _; /计算圆形物体表面积的纯虚函数声明 ; class Cylinder:public Circle/圆柱体类 double h; /高度 public: Cylinder(double radius=0,double height=0); Circle(radius),h(height) Virtual double Area( )return 2*PI*r*(r+h);/计算圆柱体的表面积 ;(分数:2.00)填空项 1:_ (正确答案:virtual double Area( )=0)解析:解析 声明纯虚函数的一般形式为: Virtual 函数类型 函数名(参数表)=049.补充完
39、整下面的类定义: class XCH char*a; public: XCH(char*a A) /构造函数 a=new charstrlen(aA) +1; strcpy(a,aA) ; XCH&operator=(const XCH&x)/重载赋值函数 delete a; a=new charstrlen(xA) +1; strcpy(a,xA) ; _; XCH( )delete a; ;(分数:2.00)填空项 1:_ (正确答案:return*this)解析:解析 重载赋值运算符为成员函数,赋值完成后,函数要有返回值,且类型为 XCH,即隐含的当前指针对象。50.补充完整下面的模板定
40、义: templateclass Type /Type 为类型参数 class Xtwo /由两个Type 类型的数据成员构成的模板类 Type a; Type b; public: Xtwo(Type aa=0,Type bb=0):a(aA) ,b(bB) int Compare( ) /比较 a 和 b 的大小 if(aB) return 1; else if(a=B) return 0; else return-1; Type Sum( )return a+b; /返回 a 和 b 之和 Type Mult( ); /函数声明,返回a 和 b 之乘积 ; templateclass Type _ :Mult( )return a*b; /Mult 函数的类外定义(分数:2.00)填空项 1:_ (正确答案:Xtwo)解析:解析 类外部定义成员函数时,需要加上类名和域作用符“:”。一般格式为: 类名:函数名称(参数表)函数体。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1