1、二级 C+笔试-433 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.对于算法的每一步,指令必须是可执行的。算法的( )要求算法在有限步骤之后能够达到预期的目的。A可行性 B有穷性C正确性 D确定性(分数:2.00)A.B.C.D.2.下列叙述中错误的是( )。A一种数据的逻辑结构可以有多种存储结构B数据的存储结构与数据处理的效率无关C数据的存储结构与数据处理的效率密切相关D数据的存储结构在计算机中所占的空间不一定是连续的(分数:2.00)A.B.C.D.3.在结构化程序设计方法中,下面内聚性最弱的是( )。A逻辑内聚 B时间内聚C偶然内
2、聚 D过程内聚(分数:2.00)A.B.C.D.4.最简单的交换排序方法是( )。A快速排序 B选择排序C堆排序 D冒泡排序(分数:2.00)A.B.C.D.5.负责数据库中查询操作的数据库语言是( )。A数据定义语言 B数据管理语言C数据操纵语言 D数据控制语言(分数:2.00)A.B.C.D.6.在结构化方法中,软件功能分解属于下列软件开发中的阶段是( )。A详细设计 B需求分析C总体设计 D编程调试(分数:2.00)A.B.C.D.7.结构化程序设计的主要特征是( )。A封装和数据隐藏B继承和重用C数据和处理数据的过程分离D把数据和处理数据的过程看成一个整体(分数:2.00)A.B.C.
3、D.8.在数据库管理系统的层次结构中,处于最上层的是( )。A应用层 B语言翻译处理层C数据存取层 D数据存储层(分数:2.00)A.B.C.D.9.概要设计是软件系统结构的总体设计,以下选项中不属于概要设计的是( )。A把软件划分成模块 B确定模块之间的调用关系C确定各个模块的功能 D设计每个模块的伪代码(分数:2.00)A.B.C.D.10.数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是( )。A实体完整性规则 B参照完整性规则C对象完整性规则 D用户自定义完整性规则(分数:2.00)A.B.C.D.11.语句 coutsetprecison(3)3.141592
4、6endl;的输出为( )。A3.14 B3.1C3.142 D3.141(分数:2.00)A.B.C.D.12.下列关于 C+函数的说明中,正确的是( )。A内联函数就是定义在另一个函数体内部的函数B函数体的最后一条语句必须是 return 语句C标准 C+要求在调用一个函数之前,必须先声明其原型D编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(分数:2.00)A.B.C.D.13.设有 a、b、c、d、m、n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab)int Bchar a;char Cint a;int p=a; Df
5、loat a;float (分数:2.00)A.B.C.D.20.阅读下面程序:#include iostream.hfun(int a,int b)int c;c=a+b;return c;void main()int x=6,y=7,z=8,r;r=fun(x-,y+,x+y),z-);coutrendl;则该程序的输出结果是( )。A11 B20C21 D31(分数:2.00)A.B.C.D.21.下列对字符数组进行初始化中,( )是正确的。Achar s1=“abcd“; Bchar s23=“xyz“;Cchar s3=a,x,y; Dchar s423=“xyz“,“mnp“);(
6、分数:2.00)A.B.C.D.22.下列引用的定义中,( )是错误的。Aint i;int Bint i;int j=1;Cfloat i;float Dchar d;char (分数:2.00)A.B.C.D.23.进行初始化即可自动获得初值 0 的变量包括( )。A任何用 static 修饰的变量B任何在函数外定义的变量C局部变量和用 static 修饰的全局变量D全局变量和用 static 修饰的局部变量(分数:2.00)A.B.C.D.24.有如下程序:#include iostreamusing namespace std;class Basepublic:void fun()(
7、cout“Base:fun“endl;class Derived: public Basepublic:void fun()_cout“Derived:fun“endl;int main()Derived d;Dfun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。ABase.fun(); BBase:fun();CBase-fun(); Dfun();(分数:2.00)A.B.C.D.25.若有以下程序:#include iostreamusing namespace std;int f()static int i
8、=0;int s=1;s+=i;i+;return s;int main()int i,a=0;for(i=0;i5;i+)a+=f();coutaendl;return 0;程序运行后,输出的结果是( )。A20 B24C25 D15(分数:2.00)A.B.C.D.26.友元的作用是( )。A提高程序的运用效率 B加强类的封装性C实现数据的隐藏性 D增加成员函数的种类(分数:2.00)A.B.C.D.27.以下函数实现的功能是( )。void fun(char *s)char *p,*q,temp;p=s;q=s+strlen(s)-1;while(pq)temp=*p;*p=*q;*p=
9、temp;p+;q-;A将一个字符串首尾颠倒 B计算字符串的长度C统计字符串中的空格个数 D将字符串中的小写字母变成大写字母(分数:2.00)A.B.C.D.28.关于 this 指针的说明不正确的是( )。A不能在程序中修改 this 指针Bthis 指针可以给其他指针赋值,但不能修改 this 指针C静态成员函数中没有 this 指针Dthis 指针可以被赋值(分数:2.00)A.B.C.D.29.内部格式控制操作函数是在头文件( )中定义的。Aiostream.h Biomanip.hCistream.h Dostream.h(分数:2.00)A.B.C.D.30.有如下函数模板:tem
10、plate typename T,typename UT cast(U u)return u;其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是( )。Acast(i); Bcast(i);Ccastchar*,int(i); Dcastdouble,int(i);(分数:2.00)A.B.C.D.31.已知类 Myst 有一个只需要一个 double 型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列Myst x(3.2),y(5.5),z(0.0);z=8.9-y;y=x-6.3;能够正常运行,运算符函数 op
11、erator-应该在类中声明为( )。Afriend Myst operator-(MystBfriend Myst operator-(Myst,Myst);Cfriend Myst operator-(Myst,MystDfriend Myst operator-(Myst(分数:2.00)A.B.C.D.32.若要用派生类的对象访问基类的保护成员,以下观点正确的是( )A可采用公有继承 B可采用私有继承C可采用保护继承 D不可能实现(分数:2.00)A.B.C.D.33.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机
12、制。#include iostreamusing namespace std;class Base fint a,b;public:Base(int x,int y)a=x; b=y;void show()couta,bendl;class Derived:public Baseint c,d;public:Derived(int x,int y,int z,int m):Base(x,y) c=z; d=m;void show() coutc,dendl;int main()Base B1(50,50), *pb;Derived D1(10,20,30,40);pb=pb-show();re
13、turn 0;运行时输出的结果是( )。A10,20 B30,40C20,30 D50,50(分数:2.00)A.B.C.D.34.有如下程序:#include iostreamusing namespace std;class XXprotected:int k;public:XX(int n=5):k(n)XX()cout“XX“;virtual void f() const=0;inline void XX:f()constcoutk+3;class YY:public XXpublic:YY()cout“YY“;void f() constcoutk-3;XX:f();int main
14、()XX p.f();delete return 0;执行上面的程序将输出( )。A28XX B28YYXXC-33XX D-33XXYY(分数:2.00)A.B.C.D.35.以下程序的输出的结果是( )。#include iostream.hint x=3;void main()void incre();int i;for(i-1;ix;i+)incre();Void incre()static int x=1;x*=x+1;coutx“;A3 3 B2 2C2 6 D2 5(分数:2.00)A.B.C.D.二、填空题(总题数:15,分数:30.00)36.汇编程序的功能是将汇编语言所编写
15、的源程序翻译成由 1 组成的目标程序。(分数:2.00)填空项 1:_37.在面向对象方法中,类之间共享属性和操作的机制称为 1。(分数:2.00)填空项 1:_38.若按功能划分,软件测试的方法通常分为白盒测试方法和 1 测试方法。(分数:2.00)填空项 1:_39.数据的逻辑结构有线性结构 1 两大类。(分数:2.00)填空项 1:_40. 1 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(分数:2.00)填空项 1:_41.含有纯虚函数的类称为 1。(分数:2.00)填空项 1:_42.若有定义语句:int a=3,b=2,c=1;,则表达式 ab?a:b 的值是 1
16、。(分数:2.00)填空项 1:_43.在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串 str 的长度(不得使用系统提供的字符串处理函数)。int GetLen(char*str)if(_) return 0;else return 1+GetLen(str+1);(分数:2.00)填空项 1:_44.下列程序的输出是 3,请填充程序中的空缺,使该行形成一个运算符重载函数的定义。#include iostreamusing namespace std;class MyNumberint n;public:MyNumber(int k):n(k) _int()constre
17、turn n,;int main() MyNumber numl(3);coutint(numl);return 0;(分数:2.00)填空项 1:_45.下面程序的运行结果是_。#include iostreamusing namespace std;class countstatic int n;public:count()n+;static int test()for(int i=0;i4;i+)n+;return n;int count:n=0;int main()coutcount:test()“;count c1, c2;coutcount:test()endl;return 0;
18、(分数:2.00)填空项 1:_46.下面程序的输出为_。#include iostream.hvoid main()int a10,i,k=0;for(i=0;i0;i+)for(i=1;i4;i+)coutkendl;(分数:2.00)填空项 1:_47.以下程序的执行结果是_。#include iostream.hclass Bpublic:B()B(int i,intj);void printb();private:int a,b;class Apublic:A(int i,int j);void printa();private:B c;A:A(int i,int j):c(i,j)
19、void A:printa()c.printb();B:B(int i,int j)a=i;b=j;void B:printb()cout“a=“a“b=“bendl;void main()A m(7,9);m.printa();(分数:2.00)填空项 1:_48.有如下复数类的声明,请补充完整。class complexdouble real; /实部double imag; /虚部public:complex(double x,double y)real=x;imag=y;complex operator+(complex c) /重载加法运算符“+”return complex(_);
20、(分数:2.00)填空项 1:_49.Staff 类含有 int 型数据成员 ID,两个 Staff 对象相等是指它们的 ID 相同。下面的函数重载了运算符=,它用来判断两个 Staff 对象是否相等,相等时返回 true,否则返回 false。请将横线处缺失部分补充完整。bool Staff:Staff=(const Staff (分数:2.00)填空项 1:_50.请将下列栈类 Stack 补充完整class Stackprivate:int pList100; /int 数组,用于存放栈的元素int top; /栈顶元素(数组下标)public:Stack():top(0)void Pu
21、sh (const int/新元素 item 压入栈int Pop (void); /将栈项元素弹出栈;void Stack:Push(const int top+; /栈顶指针增 1_;int Stack:Pop()if (top0) /如果栈空,程序终止exit(1);return pListtop-;(分数:2.00)填空项 1:_二级 C+笔试-433 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:35,分数:70.00)1.对于算法的每一步,指令必须是可执行的。算法的( )要求算法在有限步骤之后能够达到预期的目的。A可行性 B有穷性C正确性 D确定性(分数:
22、2.00)A. B.C.D.解析:2.下列叙述中错误的是( )。A一种数据的逻辑结构可以有多种存储结构B数据的存储结构与数据处理的效率无关C数据的存储结构与数据处理的效率密切相关D数据的存储结构在计算机中所占的空间不一定是连续的(分数:2.00)A.B. C.D.解析:3.在结构化程序设计方法中,下面内聚性最弱的是( )。A逻辑内聚 B时间内聚C偶然内聚 D过程内聚(分数:2.00)A.B.C. D.解析:4.最简单的交换排序方法是( )。A快速排序 B选择排序C堆排序 D冒泡排序(分数:2.00)A.B.C.D. 解析:5.负责数据库中查询操作的数据库语言是( )。A数据定义语言 B数据管理
23、语言C数据操纵语言 D数据控制语言(分数:2.00)A.B.C. D.解析:6.在结构化方法中,软件功能分解属于下列软件开发中的阶段是( )。A详细设计 B需求分析C总体设计 D编程调试(分数:2.00)A.B.C. D.解析:7.结构化程序设计的主要特征是( )。A封装和数据隐藏B继承和重用C数据和处理数据的过程分离D把数据和处理数据的过程看成一个整体(分数:2.00)A.B.C. D.解析:8.在数据库管理系统的层次结构中,处于最上层的是( )。A应用层 B语言翻译处理层C数据存取层 D数据存储层(分数:2.00)A. B.C.D.解析:9.概要设计是软件系统结构的总体设计,以下选项中不属
24、于概要设计的是( )。A把软件划分成模块 B确定模块之间的调用关系C确定各个模块的功能 D设计每个模块的伪代码(分数:2.00)A.B.C.D. 解析:10.数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是( )。A实体完整性规则 B参照完整性规则C对象完整性规则 D用户自定义完整性规则(分数:2.00)A.B.C. D.解析:11.语句 coutsetprecison(3)3.1415926endl;的输出为( )。A3.14 B3.1C3.142 D3.141(分数:2.00)A. B.C.D.解析:12.下列关于 C+函数的说明中,正确的是( )。A内联函数就是定
25、义在另一个函数体内部的函数B函数体的最后一条语句必须是 return 语句C标准 C+要求在调用一个函数之前,必须先声明其原型D编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(分数:2.00)A.B.C. D.解析:13.设有 a、b、c、d、m、n 均为 int 型变量,且 a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=ab)int Bchar a;char Cint a;int p=a; Dfloat a;float (分数:2.00)A.B. C.D.解析:20.阅读下面程序:#include iostream.hfun(int a,int b)int
26、c;c=a+b;return c;void main()int x=6,y=7,z=8,r;r=fun(x-,y+,x+y),z-);coutrendl;则该程序的输出结果是( )。A11 B20C21 D31(分数:2.00)A.B.C. D.解析:21.下列对字符数组进行初始化中,( )是正确的。Achar s1=“abcd“; Bchar s23=“xyz“;Cchar s3=a,x,y; Dchar s423=“xyz“,“mnp“);(分数:2.00)A. B.C.D.解析:22.下列引用的定义中,( )是错误的。Aint i;int Bint i;int j=1;Cfloat i;
27、float Dchar d;char (分数:2.00)A.B. C.D.解析:23.进行初始化即可自动获得初值 0 的变量包括( )。A任何用 static 修饰的变量B任何在函数外定义的变量C局部变量和用 static 修饰的全局变量D全局变量和用 static 修饰的局部变量(分数:2.00)A.B.C.D. 解析:24.有如下程序:#include iostreamusing namespace std;class Basepublic:void fun()( cout“Base:fun“endl;class Derived: public Basepublic:void fun()_
28、cout“Derived:fun“endl;int main()Derived d;Dfun();return 0;已知其执行后的输出结果为:Base:funDerived:fun则程序中下划线处应填入的语句是( )。ABase.fun(); BBase:fun();CBase-fun(); Dfun();(分数:2.00)A.B. C.D.解析:25.若有以下程序:#include iostreamusing namespace std;int f()static int i=0;int s=1;s+=i;i+;return s;int main()int i,a=0;for(i=0;i5;
29、i+)a+=f();coutaendl;return 0;程序运行后,输出的结果是( )。A20 B24C25 D15(分数:2.00)A.B.C.D. 解析:26.友元的作用是( )。A提高程序的运用效率 B加强类的封装性C实现数据的隐藏性 D增加成员函数的种类(分数:2.00)A. B.C.D.解析:27.以下函数实现的功能是( )。void fun(char *s)char *p,*q,temp;p=s;q=s+strlen(s)-1;while(pq)temp=*p;*p=*q;*p=temp;p+;q-;A将一个字符串首尾颠倒 B计算字符串的长度C统计字符串中的空格个数 D将字符串中
30、的小写字母变成大写字母(分数:2.00)A. B.C.D.解析:28.关于 this 指针的说明不正确的是( )。A不能在程序中修改 this 指针Bthis 指针可以给其他指针赋值,但不能修改 this 指针C静态成员函数中没有 this 指针Dthis 指针可以被赋值(分数:2.00)A.B.C.D. 解析:29.内部格式控制操作函数是在头文件( )中定义的。Aiostream.h Biomanip.hCistream.h Dostream.h(分数:2.00)A.B. C.D.解析:30.有如下函数模板:template typename T,typename UT cast(U u)r
31、eturn u;其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是( )。Acast(i); Bcast(i);Ccastchar*,int(i); Dcastdouble,int(i);(分数:2.00)A.B.C.D. 解析:31.已知类 Myst 有一个只需要一个 double 型参数的构造函数,且将运算符“-”重载为友元函数。要使语句序列Myst x(3.2),y(5.5),z(0.0);z=8.9-y;y=x-6.3;能够正常运行,运算符函数 operator-应该在类中声明为( )。Afriend Myst ope
32、rator-(MystBfriend Myst operator-(Myst,Myst);Cfriend Myst operator-(Myst,MystDfriend Myst operator-(Myst(分数:2.00)A.B. C.D.解析:32.若要用派生类的对象访问基类的保护成员,以下观点正确的是( )A可采用公有继承 B可采用私有继承C可采用保护继承 D不可能实现(分数:2.00)A.B.C.D. 解析:33.如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。#include iostreamusing na
33、mespace std;class Base fint a,b;public:Base(int x,int y)a=x; b=y;void show()couta,bendl;class Derived:public Baseint c,d;public:Derived(int x,int y,int z,int m):Base(x,y) c=z; d=m;void show() coutc,dendl;int main()Base B1(50,50), *pb;Derived D1(10,20,30,40);pb=pb-show();return 0;运行时输出的结果是( )。A10,20
34、B30,40C20,30 D50,50(分数:2.00)A. B.C.D.解析:34.有如下程序:#include iostreamusing namespace std;class XXprotected:int k;public:XX(int n=5):k(n)XX()cout“XX“;virtual void f() const=0;inline void XX:f()constcoutk+3;class YY:public XXpublic:YY()cout“YY“;void f() constcoutk-3;XX:f();int main()XX p.f();delete retur
35、n 0;执行上面的程序将输出( )。A28XX B28YYXXC-33XX D-33XXYY(分数:2.00)A. B.C.D.解析:35.以下程序的输出的结果是( )。#include iostream.hint x=3;void main()void incre();int i;for(i-1;ix;i+)incre();Void incre()static int x=1;x*=x+1;coutx“;A3 3 B2 2C2 6 D2 5(分数:2.00)A.B.C. D.解析:二、填空题(总题数:15,分数:30.00)36.汇编程序的功能是将汇编语言所编写的源程序翻译成由 1 组成的目
36、标程序。(分数:2.00)填空项 1:_ (正确答案:机器语言)解析:37.在面向对象方法中,类之间共享属性和操作的机制称为 1。(分数:2.00)填空项 1:_ (正确答案:分类性)解析:38.若按功能划分,软件测试的方法通常分为白盒测试方法和 1 测试方法。(分数:2.00)填空项 1:_ (正确答案:黑盒(或黑箱))解析:39.数据的逻辑结构有线性结构 1 两大类。(分数:2.00)填空项 1:_ (正确答案:非线性结构)解析:40. 1 是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(分数:2.00)填空项 1:_ (正确答案:封装)解析:41.含有纯虚函数的类称为 1
37、。(分数:2.00)填空项 1:_ (正确答案:抽象类)解析:42.若有定义语句:int a=3,b=2,c=1;,则表达式 ab?a:b 的值是 1。(分数:2.00)填空项 1:_ (正确答案:2)解析:43.在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串 str 的长度(不得使用系统提供的字符串处理函数)。int GetLen(char*str)if(_) return 0;else return 1+GetLen(str+1);(分数:2.00)填空项 1:_ (正确答案:*str=NULL)解析:44.下列程序的输出是 3,请填充程序中的空缺,使该行形成一个运算
38、符重载函数的定义。#include iostreamusing namespace std;class MyNumberint n;public:MyNumber(int k):n(k) _int()constreturn n,;int main() MyNumber numl(3);coutint(numl);return 0;(分数:2.00)填空项 1:_ (正确答案:operator)解析:45.下面程序的运行结果是_。#include iostreamusing namespace std;class countstatic int n;public:count()n+;static
39、 int test()for(int i=0;i4;i+)n+;return n;int count:n=0;int main()coutcount:test()“;count c1, c2;coutcount:test()endl;return 0;(分数:2.00)填空项 1:_ (正确答案:4 10)解析:46.下面程序的输出为_。#include iostream.hvoid main()int a10,i,k=0;for(i=0;i0;i+)for(i=1;i4;i+)coutkendl;(分数:2.00)填空项 1:_ (正确答案:12)解析:47.以下程序的执行结果是_。#inc
40、lude iostream.hclass Bpublic:B()B(int i,intj);void printb();private:int a,b;class Apublic:A(int i,int j);void printa();private:B c;A:A(int i,int j):c(i,j)void A:printa()c.printb();B:B(int i,int j)a=i;b=j;void B:printb()cout“a=“a“b=“bendl;void main()A m(7,9);m.printa();(分数:2.00)填空项 1:_ (正确答案:a=7,b=9)
41、解析:48.有如下复数类的声明,请补充完整。class complexdouble real; /实部double imag; /虚部public:complex(double x,double y)real=x;imag=y;complex operator+(complex c) /重载加法运算符“+”return complex(_);(分数:2.00)填空项 1:_ (正确答案:real+c.real,imag+c.imag 或 this-real+c.real,this-imag+c.imag)解析:49.Staff 类含有 int 型数据成员 ID,两个 Staff 对象相等是指它
42、们的 ID 相同。下面的函数重载了运算符=,它用来判断两个 Staff 对象是否相等,相等时返回 true,否则返回 false。请将横线处缺失部分补充完整。bool Staff:Staff=(const Staff (分数:2.00)填空项 1:_ (正确答案:ID=s.D 或 s.ID=ID 或 this-ID=s.ID 或 s.ID=this-ID)解析:50.请将下列栈类 Stack 补充完整class Stackprivate:int pList100; /int 数组,用于存放栈的元素int top; /栈顶元素(数组下标)public:Stack():top(0)void Push (const int/新元素 item 压入栈int Pop (void); /将栈项元素弹出栈;void Stack:Push(const int top+; /栈顶指针增 1_;int Stack:Pop()if (top0) /如果栈空,程序终止