1、国家二级( C+)机试模拟试卷 24及答案与解析 一、选择题 1 在关系代数运算中,有 5种基本运算,它们是 ( )。 ( A)并 (u)、差 ( )、交 (n)、除 ()和笛卡儿积 () ( B)并 (u)、差 ( )、交 (n)、投影 ( )和选择 () ( C)并 (u)、交 (n)、投影 ( )、选择 ()和笛卡儿积 () ( D)并 (u)、差 ( )、投影 ( )、选择 ()和笛卡儿积 () 2 在数据库系统的组织结构中,下列 ( )映射把用户数据库与概念数据库联系了起来。 ( A)外模式模式 ( B)内 模式外模式 ( C)模式内模式 ( D)内模式模式 3 下列关于线性链表的描
2、述中,正确的是 ( )。 I、只含有一个指针域来存放下一个元素地址 II、指针域中的指针用于指向该结点的前一个或后一个结点 (即前件或后件 ) III、结点由两部分组成:数据域和指针域。 ( A)仅 I、 II ( B)仅 I、 Ill ( C)仅 II、 III ( D)全部 4 下面关于数据库三级模式结构的叙述中,正确的是 ( )。 ( A)内模式可以有多个,外模式和模式只有一个 ( B)外模式可以 有多个,内模式和模式只有一个 ( C)内模式只有一个,模式和外模式可以有多个 ( D)模式只有一个,外模式和内模式可以有多个 5 设有关键码序列 (66, 13, 5l, 76, 8l, 26
3、, 57, 69, 23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为 ( )。 ( A) 23, 1 3, 5l, 57, 66, 26, 8l, 69, 76 ( B) 13, 23, 26, 51, 57, 66, 81, 76, 69 ( C) 23, l 3, 51, 57, 26, 66, 8l, 69, 76 ( D) 23, 13, 5l, 57, 81, 26, 66, 69, 76 6 下列哪一条不属于数据库设计的任务 ?( ) ( A)设计数据库应用结构 ( B)设计数据库概论结构 ( C)设计数据库逻辑结构 ( D
4、)设计数据库物理结构 7 数据库技术的根本目标是 ( )。 ( A)数据存储 ( B)数据共享 ( C)数据查询 ( D)数据管理 8 需求分析阶段的任务是 ( )。 ( A)软件开发方法 ( B)软件开发工具 ( C)软件开发费用 ( D)软件系统功能 9 关系数据库管理系统能实现的 专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 数据管理技术发展的三个阶段中, ( )没有专门的软件对数据进行管理。 I人工管理阶段 II文件系统阶段 III数据库阶段 ( A)仅 I ( B)仅 III ( C) I和
5、II ( D) II和 III 11 阅读以下程序: #include void main() static int a2: 5,3, 1, 2); int ij, s1=0; for(i=0; i using namespace std; int main() char*p=“abcdefgh”, *r; r=p; cout using namespace std; void fun(int&x,int y)int t=x; x=y; y=t; ) int main() int a2=l, 2); fun(a1, a0); std: cout int x=5; int fun(int a)
6、int c; C=X*a: return c; ) void main() int x=3,a=4; X=X+fun(a); cout class TestClass public: static int m: TestClass 0 m+: ) TestClass(int n、 m=n: static void test() m+: ) ); int TestClass: m=0; void main() TestClass A: TestClass B(3); A test(); TestClass: test(); cout using namespace std; class Test
7、Class public: TestClass()cout class TestClass l public: void showl() coutb?“*a= d“: “#b= d“, a, b); ( A)没有正确的输出格式控制 ( B)输出为: *a=2 ( C)输出为: #b=2 ( D)输出为: *a=2#b=2 23 若执行以下程序时从键盘上输入 9,则输出结果是 ( )。 main() int n; cinn; if(n+void main() int*pl; int*p2=&pl; int b=20; pl=&b; cout ( B) template ( C) template
8、 ( D) template 32 有如下程序: #include using namespace std; class AA int n; public: AA(int k): n(k) int getOretum n; int getoconstreturn n+l; ); int main() AA a(5); const AA b(6); cout class Sample int n; public: Sample(int i)n=i; ) operator+()n+; ) /前缀重载运算符 operator+(int)n+=2; /后缀重载运算符 void disp() cout“
9、必须使用的原型为 ( )。 ( A) istream&operator(istream&, ); ( B) istream&operator(istream, ); ( C) istream operator(istream, &); ( D) operator(istream&-x , ); 36 运算符函数调用格式的表达式 “y x+”与表达式 “y operator (operator+(x,0)”的含义相同,由此可看出 ( )。 ( A) “ ”和 “+”都是作为成员函数重载的 ( B) “ ”和 “+”都是作为非成员函数重载的 ( C) “ ”是作为成员函数重载的, “+”是作为非成
10、员函数重载的 ( D) “ ”是作为非成员函数重载的, “+”都是作为成员函数重载的 37 派生类的构造函数的成员初始化列表中,不能包含 ( )。 ( A)基类的构造函数 ( B)派生类中子对象的初始化 ( C)基类中子对象的初始化 ( D)派生类中一般数据成员的初始化 38 在下面的类定义中 ,横线处应填入的内容是 ( )。 class Fred public: void print()cout /*error* template void fun(T t) std: cout void fun(bool t) std: cout #include #include using namesp
11、ace std; void WriteFile(char*str) ofstream outl; outl open(“modi2 txt“,iosbase: binarylios_base: app); for(int i: 0; stri!=0; i+) out 1 put(stri); outl close(); ) void fun(int X) void ClearFile() ofstream outl; out 1 open(“modi2 txt“); outl close(); ) intmain() ClearFile(); fun(13); return (): ) 四、综
12、合应用题 43 使用 VC6打开考生文件夹下的源程序文件 modi3 cpp。通过继承完成输入到屏幕指定的信息: TestClassA TestClassB YestClassC 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类 B虚继承于 A,请在注释 /*1*后添加适当的语句。 (2)完成类 C虚继承于 A,请在注释 /*2*后添加适当的语句。 (3)完成类 D继承于 B, C,请在注释 /*3*后添加适当的语句。 (4)函数 fun通过调用基类的 fun,完成所输出的内容,请在注释/*4*后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来
13、。请不要修改其他的程序代码。 #include class TestClassA public: void fun() cout”和输出运算符 “”须使用以下原型: istream&operator(istream&, &):。 36 【正确答案】 C 【试题解析】 运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即 yoperator*(z)或者 operator*(y, z);另一种是通过运算符构成表达式,即y*z。因为 “+”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀 “+”时必须多一个虚拟参数: int。 37 【正确答案】 C 【试
14、题解析】 在定义派生类的构造函数时,除了对自己的数据成员进行初始化外,还必须负责调用基类的构造函数使基类的数据成员得以初始化。如 果派生类中还有子对象,还应包含对子对象初始化的构造函数。 38 【正确答案】 C 【试题解析】 此题考查的是静态数据成员的定义。题目中 count数据成员要定义成静态的,其初始化的格式为:类型类名:静态数据成员 =常量。 39 【正确答案】 D 【试题解析】 此题考查的是 this指针的使用。类的每一个非静态成员函数都有一个隐含的常量指针,即 this指针。类的静态成员函数不能含有 this指针,因为 this指针是一个指向本对象的指针。 40 【正确答案】 B 【
15、试题解析】 此题考查的 是复制构造函数的概念。用一个己知的对象初始化一个正在创建的同类对象时,就会发生复制构造函数。因此,选项 A)、 C)、 D)均会调用复制构造函数,而只有选项 B)没有创建的动作,不调用复制构造函数。 二、基本操作题 41 【正确答案】 (1)template (2)删除 “template” (3)bool flag=true; 【试题解析】 程序要求输出字符串 Hello test。从已定源程序的 main丰函数开始入手,调用函数 fun实现字符的输出。 【解题思路】 (1)c+ff】的模板类格式为 template,所以将题 中程序中的第 1个标识下语句 “temp
16、late”修改为 “template”。 (2)在第 2个标识下的 “void tim(bool t)”函数中,其中变量为布尔型变最,是 c+中的基础变量,并不是模板变量,并没有使用到模板类,所以删除第 2个标识下的模板类型定义语句。 (3)第 3个标识下的 “bool flag=TRuE; ”是声明布尔型变量 flag,并将其值赋为逻辑真。而 TRUE并不是合法值, C+中区分人小写,所以逻辑真值应为 true,即“bool flag=: true; ”。 三、简单应用题 42 【正确答案】 char str32; inti; for(i=30; i=O; i一 ) /计算二进制 if(x
17、2)stri=1; /求余,如果余不为零字符串 str第 i位为 1 else stri=0; /否则为 0 x=1: if(!x)break; str31= 0; /串加尾符 cout&striendl; WriteFile(&strli); 【试题解析】 (1)该程序功能是实现十进制转换成二进制数。十进制到二进制的转换是对十进制的数字进行 2的取余运算,余数不为零则取 1,否则为 0,然后对余数进行循环取余运算,直到余数为 0。 (2)从已给部分源程序的 main主函数开始入手,核心函数 fun(intx)中的 x参数为输入的十进制数。 【解题思路】 (1)定义存放二进制的字符串 str。
18、 (2)然后利用 for循环对十进制数字 x进行取余运算,直到余数为 0结束。 (3)如果取余结果为 0,则二进制字符串这个字符位的值为 0,否则为 l。 (4)最后调用 WriteFile将运算结果存入文件。 四、综合应用题 43 【正确答案】 (1)将 “class TestClassB: ”补充完整为: class TestClassB: virtual Dublic TestClassA (2)将 “class TestClassC: ”补充完整为: class TestClassC: vinual public TestClassA (3)将 “class TestClassD: ”
19、补充完整为: class TestClassD: public TestClassB,public TesstClassC (4)添加语句: TestClaSsA: fun(); TestClaSsB: fun(); TestClassC:fun(); 【试题解析】 在 VC环境下手打开程序,根据题干给出的几条功能要求,对程序中给出注释下的内容逐个补全或修改。从已定源程序的 main丰函数开始入手,可以看 出程序通过调用类和函数 fun实现各种输出操作。 【解题思路】 (1)题目 l要求 “完成类 B虚继承于 A”。存 C+中,声明虚基类的一般形式为:class派生类名: virtual继承方
20、式基类名,由题目知道 TestclassA由基类,TestClassB为派生类,所以第 1个标识下修改为 “class TestclassB: vinual Dublic TestClassA”。 (2)同 (1),题目 2和题目 3中要求的标识 2和 3下的语句修改为 “class TestClassC: Vinual public TestClassA “ 和 “class TestClassD: public TestClassB, public TestClassC”。 (3)题日 4要求 “函数 fun通过调用基类的 fun,完成所输出的内容 ”。在 C+中调用基类的成员函数,要使用作用域限定符 “: ”,类名 A:函数 fun,就是调用类 A的函数 fun,根据题目中的要求补全对类 TestclassA、 TestclassB以及TestclassC中的 fun函数,即 “TestClassA: fun(); TestClassB: fun();TestClassC: fun(); ”。
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1