1、国家二级( C+)笔试模拟试卷 209及答案与解析 1 下列关于栈的叙述中,正确的选项是 ( )。 ( A)在栈中只能删除数据 ( B)在栈中只能插入数据 ( C)栈是先进先出的线性表 ( D)栈是先进后出的线性表 2 设有下列二又树: 对此二叉树前序遍历的结果为( )。 ( A) DEBFCA ( B) DBEAFC ( C) ABDECF ( D) ABCDEF 3 下列哪种数据模型可以用树形结构来表示实体之间联系 ( )。 ( A)网状模型 ( B)数据模 型 ( C)关系模型 ( D)层次模型 4 1, 2, 3, 4四个元素按顺序进栈,不可能的出栈顺序为 ( )。 ( A) 1 2
2、3 4 ( B) 2 3 4 1 ( C) 1 4 3 2 ( D) 3 1 4 2 5 下列对于线性链表的描述中,正确的是 ( )。 ( A)存储空间必须连续,且各元素的存储顺序是任意的 ( B)存储空间不一定是连续,且各元素的存储顺序是任意的 ( C)存储空间必须连续,且前件元素一定存储在后件元素的前面 ( D)存储空间不一定是连续,且 前件元素一定存储在后件元素的前面 6 对长度为 N的线性表进行顺序查找,在最坏情况下,需要的比较次数是( )。 ( A) N+1 ( B) N ( C) (N+1) 2 ( D) N 2 7 数据视图的描述称为 ( )。 ( A)外模式 ( B)内模式 (
3、 C)概念模式 ( D)存储模式 8 下列的方法中,不属于软件调试技术的是 ( )。 ( A)强行排错法 ( B)集成测试法 ( C)回溯法 ( D)原因排除法 9 设有表示学生选课 的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ),选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 10 下列工具中,不属于结构化分析的常用工具的是 ( )。 ( A) PAD图 ( B)数据字典 ( C)判定树 ( D)数据流图 11 在下列横线处应添加的语句是 (
4、 )。 class Basepublic: void fun()cout classA inti, j; public: int geti() return i; ; class B: publie A int k: public: void make() k=i*j; ; 则上述定义中非法的表达式是 ( )。 ( A) k=i*j; ( B) int k; ( C) return i; ( D) void make(); 14 在下面的类定义中,错误的语句是 ( )。 class Sample public: Sample(int val); Sample(); private: int a
5、=2 5; Sample(); ; ( A) ( B) ( C) ( D) 15 假定 MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为( )。 ( A) MyClass&(MyClass x); ( B) MyClass(MyClass x) ( C) MyClass (MyClass &x); ( D) MyClass(MyClass*x) 16 下面对静态数据成员的描述中,正确的是 ( )。 ( A)静态数据成员是类的所有对象共享的数据 ( B)类的每个对象都有自己的静态数据成员 ( C)类的不同对象有不同的静态数据成员值 ( D)静态数据成员不能通过类的对象调用 17 关
6、于运算符重载,下列表述中正确的是 ( )。 ( A) C+已有的任何运算符都可以重载 ( B)运算符函数的返回 类型不能声明为基本数据类型 ( C)在类型转换符函数的定义中不需要声明返回类型 ( D)可以通过运算符重载来创建 C+中原来没有的运算符 18 不能作为函数重载的判断依据的是 ( )。 ( A) const ( B)返回类型 ( C)参数个数 ( D)参数类型 19 有如下类的定义。横线处的语句是 ( )。 class MyClass public: MyClass(int a=0,int b=0) X=a: Y=b: void Change()const X-=10: Y+=10:
7、 private: _int X, Y; ( A) static ( B) const ( C) mumble ( D)不需要填入内容 20 有如下函数模板定义: template T1 sum(T1 a1) return(a1+a2+a3); 则以下调用中正确的是 ( )。 ( A) sum(5); ( B) sum(5); ( C) sum(5); ( D) sum(5); 21 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 t
8、his指针 22 以下程序输出结果是 ( ): #include using namespace std; void add(int x, int Y, int*z) *z=y+x; int main() int a,b, c; add(8, 4, &a); add(6, a, &b); add(a, b, &c); cout using namespace std; class TestClass, public: TestClass()cout using namespace std; class TestClass public: TestClass(int r1 int r2) R1=
9、r1; R2=r2; void print(); void printoconst; private: int R1, R2; ; void TestClass: print() cout using namespace std; class TestClass public: TestClass()cout using namespace std; class TestClass public: void fun()coutfun(); 29 下面关于虚函数的描述中正确的是 ( )。 ( A)虚函数是一个静态成员函数 ( B)虚函数是一个非成员函数 ( C)虚函数既可以在函数说明时定义,也可
10、以在函数实现时定义 ( D) 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 30 有如下程序: #include using namespace std; class TestClass1 public: virtual void fun()coutfun(); return0; 执 行上面程序的输出是 ( )。 ( A) 1122 ( B) 2112 ( C) 2213 ( D) 2223 31 有如下程序: #include using namespace std; long fun(intn) if(n2) return(fun(n-1)+fun(n-2); else re
11、turn2; int main() cout using namespace std; template T fun(T a, T b)return(a=b)?a: b; void main() cout class Sample intx, y; public: Sample()x=y=0; Sample(int a, int b)x=a; y=b; Sample() if(x=y) cout using namespace std; class MyClass public: static int s; MyClass(); void sctvaluc(int val); ; int My
12、Class: s=0: MyClass: MyClass() S+: void MyClass: SetValue(int val) s=val; int main() MyClass my3, *p; p=my; for(int k=0; kSetValue(k+1); p+; cout void fun(hat n) int x(5); static int y(10); if(n0) +x: +y; cout using namespace std; class TestClass int x; public: TestClass(int i)x=i; TestClass() ; cla
13、ss TestClass1: public TestClass public: _完成类 TestClass1构造函数的定义 ; int main() TestClass1 Obj(); return 0: 48 下列程序的输出结果是 _。 #include #include using namespace std; void fun(const char*s, char&c)c=sstrlen(s) 2; int main() char str=“ABCDE”; char ch=str1; fun(str,ch); cout using namespace std; class Point
14、public: Point(int xx=0, int yy=0)X=xx; Y=yy; countP+; Point()countP-; int GetX()return x; int GetY()return Y; static void GetC()cout*、:、 ?:这五个运算符之外,其他运算符都可以重载:在类型转换符 函数的定义中不需要声明返回类型;运算符函数的返回值类型可以声明为基本数据类型。 18 【正确答案】 B 【试题解析】 所谓函数重载是指同一函数名可以对应多个函数实现。进行函数重载时,要求同名函数在参数个数上不同或者参数类型上不同。但函数的返回类型不能作为判断重载的依据
15、。 19 【正确答案】 C 【试题解析】 C+中 const关键字用来表示一个常量,同时 const也用来修饰函数。这两个概念需要明确: const所修饰的函数只能是类的成员函数,因为 const所修饰的函数中,要由编译器负责保 护类的成员变量不被修改。而相对的,mutable则是用来修饰类的成员变量,让该变量在 const所修饰的成员函数中可以被修改。而且 const修饰的函数只能是类的成员函数, mutable修饰的变量只能是类的成员变量。 20 【正确答案】 A 【试题解析】 本题考查的函数模板的使用,有时不能根据用户传进来的参数决定所有模板函数的值类型,如函数的返回值,还有用户希望自己
16、指定参数类型,这时就需要显式地指出参数模板的类型,显示指定模板的类型格式为:返回值类型函数模板 (参数表 )。 21 【正确 答案】 D 【试题解析】 this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中; this指针只能在类的成员函数中使用,它指向该成员函数被调用的对象;静态成员函数没有 this指针,因为类中只有一个静态成员函数实例,使用 this指针无意义。 22 【正确答案】 B 【试题解析】 由主函数 main入手,调用 add函数,其中第三个参数为引用,即传值为地址。当 add函数中第三个参数改变时,主函数中这个值也会改变。那么第一个 add
17、调用后 a=12,所以第二个调用中 a=12。调用后 b=18。那么第三个调用后 c=30。 23 【正确答案】 A 【试题解析】 由主函数入手,定义了类 TestClass的对象 a和 d,当类对象进入其作用域时调用构造函数,构造函数在建立对象时由系统自动执行,而且只执行一次。因为定义了两个对象,所以构造函数 TestClass()被调用的次数是 2。“d=userCode(a); ”语句 d中调用成员为 a的 useCode()成员函数,所以是 3次。 24 【正确答案】 B 【试题解析】 常对象只能调用其中的 const成员函数,即 “const TestClass b(20,52);
18、”只能调用 “void print()const; ”。常对象保证所有数据成员的数值不被修改,所以这里是 20, 52。 25 【正确答案】 C 【试题解析】 静态数据成员是一种特殊的数据成员。静态数据成员不属于某一个对象,在为对象所分配的空间中不包括静态数据成员所占的空间。所有对象共享这些静态数据成员,都可以引用它。 26 【正确答案】 B 【试题解析】 公有继承中,基类的公有成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以 B是错误的 ,即选择 B)。 27 【正确答案】 A 【试题解析】 TestClass是 TestClass1的基类。由主函数 main入手,定义
19、TestClass1的对象 d,调用基类 TestClass构造函数输出 BB,调用基类成员函数fun输出 Bf,然后调用派生类的构造函数,输出 DD。 28 【正确答案】 C 【试题解析】 程序中的 TestClass1为 TestClass的派生类, TestClass1公有继承TestClass,所以可以调用其中的公有成员 fun函数,如果要显示调用它,那么使用域符号 “: ”,这样就实现了对函数的显示调用,即选择 C)。 29 【正确答案】 D 【试题解析】 在基类中用 virtual声明成员函数为虚函数,所以 AB错误。在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类
20、型全部与基类的虚函数相同。 30 【正确答案】 C 【试题解析】 主函数中定义 TestClassl的对象 aa, *p对象指针, TestClass2的对象 bb以及 TestClass3的对象 cc。 p指向 cc, TestClass3为 TestClass2的派生类,构造函数输出 2。 TestClass3中 fun函数中为 TestClass2中的 fun,调用TestClass2的构造函数,输出 2。 “p-fun(); ”, TestClass2继承于 TestClass1中的 fun,所以输出 1。然后输出 TestClass3中的 “cout2时递归调用 fun(n-1)+f
21、un(n-2),否则返回 2。所以当 n=3时,调用 fun(2)+fun(1),即返回 2+2,等于4。 32 【正确答案】 D 【试题解析】 “?: ”为条件运算符, (a=b)?a: b是当 a大于 b时取 a,否则取b。所以第一个 fun(3, 6)调用中, 6大于 3,所以输出 6,同理第二个fun(3 14F6 28F)调用中输出 6 28。 33 【正确答案】 D 【试题解析】 此题考查的是数组和指针的概念。题目中 data10共有 10个元素,分别是 dala0、 data0、 data2、 data3data9 ,首元素是 dala0,所以选项 D)错误;其他选项均正确。 3
22、4 【正确答案】 C 【试 题解析】 此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字,所有成员默认定义为 Drivate私有权限。 35 【正确答案】 B 【试题解析】 此题考查的是内联函数。 C+语言引入内联函数的原因是用它来取代 C语言的预处理宏函数。 36 【正确答案】 线性结构 【试题解析】 数据的逻辑结构,是指数据元素之间的逻辑关系,分为线性结构和非线性结构,常见的线性结构有线性表、栈和队列等;常见的非线性结构有树、二叉树等。 37 【正确答案】 9 【试题解析】 两个分别为 n和 m目 的关系 R和 S的笛卡尔积是一个 n+m列的元组的集合。若 R有 k1个元组,
23、S有 k2个元组,则关系 R和 S的广义笛卡尔积有k1k2个元组。 38 【正确答案】 叶子结点 【试题解析】 树中度为零的结点,也就是没有后件的结点,称为叶子结点。 39 【正确答案】 输出 【试题解析】 测试用例由测试输入数据 (输入值集 )和与之对应的预期输出结果 (输出值集 )两部分组成。 40 【正确答案】 软件开发 【试题解析】 软件生命周期分为三个时期共八个阶段:软件定义期 (问题定义、可行性研究和需求分析阶段 )、软件开发期 (系统设计、详细设计、编码和测试阶段 )、软件维护期 (即运行维护阶段 )。 41 【正确答案】 友元 【试题解析】 C+流的输入运算符 “”和输出运算符
24、 “”只能作为非成员函数重载,即应重载为友元函数。 42 【正确答案】 x=2, y=3 x!=y 【试题解析】 此题考查的是类的构造和析构。首先,执行语句 Samples1(2, 3);会调用含有两个,参数的构造函数 sample(int a, intb)x=a; y=b; ),输出 x=2,y=3,然后结束时调用析构函数,因 为 x和 y值不相等,所以最终输出 x!=y。 43 【正确答案】 3 【试题解析】 分析题目, for(int k=0; k3; k+)循环三次,使得函数 SetValue()每次被赋予的参数分别是 1、 2、 3,最后一次 3的值会赋给 s,所以最终输出语句cou
25、tMyClass: sendl:输出结果为 3。 44 【正确答案】 把整型指针 p赋值给通用指针 q 【试题解析】 “int*p=&i; ”是将变量 i的地址作为指针变量 p的初值。 “Void*q”声明一个通用指针 q,所以 “q=p; ”就是将 p的值 赋值给 q。 45 【正确答案】 6, 11 【试题解析】 由主函数 main入手,首先定义变量 m等于 1,然后调用 fun函数。 fun函数中 y为静态数值,等于 10,作用域为到本文件结束。所以 y加 1后,主函数中 y的值也为 11。其中函数中 x的加 1运算调用的是函数中的 x等于 5的变量,即函数中输出的 x值为 6。 46
26、【正确答案】 成员初始化列表 【试题解析】 派生类是基类的具体化,而基类则是派生类的抽象。派生类也就是基类的具体实现,所以对基类数据成员的初始化是在派生类的构造函数中成员初始化列表执行的。 47 【正确答案】 TestClass1(int i): TestClass(i) 【试题解析】 程序中的 Testclass1为 Testclass的派生类,派生类构造函数的一般形式为:派生类构造函数名 (总参数类表 ):基类构造函数名 (参数列表 )派生类中新增数据成员初始化语句 。派生类 TestClass1的基类函数名为 TestClass,参数为int i,并且派生类中没有新增的数据成员。所以派生
27、类 Testclass1的构造函数为:Testclass1(int i): TestClass(i)。 48 【正确答案】 C 【试题解析】 此题考查的是数组的定义使用以及函数的调用。 fun函数的作用是将字符串 str中间的字符串赋值给地址传入的变量 ch。所以 ch的值最终变为 C。 49 【正确答案】 int Point: countP=0; 【试题解析】 此题考查的是静态数据成员的定义和使用。对静态数据成员除要进行引用性说明外,还应在文件作用域内的某个地方进行定义性说明。初始化静态成员前要用类名制定作用域。在定义之外定义静态成员函数时,不使用 static。 50 【正确答案】 2 【试题解析】 此题考查了类成员的默认访问控制权限。因为 C+语言中,类的缺省访问权限是私有,所以本题中 i和 j都是私有成员。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1