1、国家二级 C+机试(选择题)模拟试卷 101及答案与解析 一、选择题 1 数据结构主要研究的是数据的逻辑结构、数据的运算和 ( )。 ( A)数据的方法 ( B)数据的存储结构 ( C)数据的对象 ( D)数据的逻辑存储 2 一棵二叉树的前序遍历结果是 ABCEDF,中序遍历结果是 CBAEDF,则其后序遍历的结果是 ( )。 ( A) DBACEF ( B) CBEFDA ( C) FDAEBC ( D) DFABEC 3 在数据处理中,其处理的最小单位是 ( )。 ( A)数据 ( B)数据 项 ( C)数据结构 ( D)数据元素 4 在数据库系统的内部结构体系中,索引属于 ( )。 (
2、A)模式 ( B)内模式 ( C)外模式 ( D)概念模式 5 以下 ( )不属于对象的基本特征。 ( A)继承性 ( B)封装性 ( C)分类性 ( D)多态性 6 数据库系统的核心是 ( )。 ( A)数据模型 ( B)软件开发 ( C)数据库设计 ( D)数据库管理系统 7 开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( )。 ( A)软件矛盾 ( B)软 件危机 ( C)软件藕合 ( D)软件产生 8 关系模型允许定义 3类数据约束,下列不属于数据约束的是 ( )。 ( A)实体完整性约束 ( B)参照完整性约束 ( C)属性完整性约束 ( D)用户自定义的完整性
3、约束 9 关系表中的每一行记录称为一个 ( )。 ( A)字段 ( B)元组 ( C)属性 ( D)关键码 10 在数据库管理技术的发展中,数据独立性最高的是 ( )。 ( A)人工管理 ( B)文件系统 ( C)数据库系统 ( D)数据模型 11 下列语句中,错误的是 ( )。 ( A) const intbuffer=-256; ( B) const int temp; ( C) const double*point; ( D) const double*rt=new double(5 5); 12 下列变量名中,合法的 ( )。 ( A) CHINA ( B) byte-size ( C
4、) double ( D) A+a 13 在进行任何 C+流的操作后,都可以用 C+流的有关成员函数检测流的状态;其中只能用于检测输入流状态的操作函数名称是 ( )。 ( A) fail ( B) eof ( C) bad ( D) good 14 对于语句 cout main() intm=5; ifm+5) cout voidmain() int x; cinx; if(x+5) cout using namespace std; int i=l; class Fun public: static int i; int value()return i一 1; int valueoconst
5、retum i+l; ; int Fun: i=2; int main() int i=3; Fun funl; ( A) cout void main() int i(0); while(+i) if(i=10)break; if(i 3 1=1) continue; cout using namespace std; class A public: AOcout #include“string h” void main() char a=“Hello Test“,b=“Test”; strcpy(a, b); cout void main() char str25=”12341591156
6、78”), *p2; intij, s=O; for(i=0; i 0;j+=2) s=lO*s+piU一 0; cout using namespace std; void fun(char*q) +q; cout int fun(int); voidmain() hat a=2, i; for(i=0; i 3; i+) cout using namespace std; inta; int劬 (); intmain() exteminta; intb: a=10; b=funO; cout using namespace std; class TestClass l public: Te
7、stClass 1 0cout5成立 (此时 m的值变为 6),所以执行语句cout5不成立,因为 “+”后缀,之后 x的值变为 5,执行语句 cout5成、 Z,所以执行语句 coutxendl:输出 7。 17 【正确答案】 D 【试题解析】 this指针不能在程序中修改,不能被幅值;静态成员没有 this指针,因为类中只有一个静态成员函数实例,使用 this指针无意义。 18 【正确答案】 A 【试题解析】 函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。因此,函数模板使一个函数可以定义成对许多不 I叫数据类型完成同一个任务。 19 【正确答案】
8、 A 【试题解析】 此题凶为定义的变量 i是 static类型的 (main()函数内部的 i只是一个局部变量 ),所以,选项 A)中 fun1 value()的返回值是 1, Fun: i引用的是外部变量会输出 2; fun2 value();会调用常成员函数 intvalue()constretun i+l; 使得外部静态变量 i的值增加为 3,故输出 3。 20 【正确答案】 A 【试题解析】 选项 A)中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫无相干的函数;重载函数中编译是根据参数表进行选择,包括参数的个数和类型。 21 【正确答案】 D 【试
9、题解析】 对象之间的信息传递是通过消息进行的。对象 =方法 (函数 )+属性(数据 ),而 C语言的结构体其实就是不同类型数据的组合。并没有处理数据的方法。 22 【正确答案】 A 【试题解析】 在 C+中,科学计数法表示小数的方法: E(e)左右必须有数,且E(e)的右侧只能为整数。 23 【正确答案】 C 【试题解析】 在 C+中定义二维数组时并赋值,则数组的行数可以省略不写。选项 A)、 B)、 D)均是字符字符串初始化。 24 【正确答案】 A 【试题解析】 语句 “int木 p5”表示一个数组 p,它的大小是 5,里面存放的数据类型是 int木,也就是整型指针。称之为指针数组 (从右
10、向左解析这个表示 )。 25 【正确答案】 A 【试题解析】 从 if(i=10)break;语句了解本循环只到 10,输出 i的条件是只要1 10之间的数对 3取余为 l的输出,所以输出的 1 4 7。 26 【正确答案】 D 【试题解析】 此题中,语句 Cobj对象初始化首先调用基类的构造函数 A(),输出 “A”,其次是 C类中对象的构造函数的调用,即调用 B(),输出 “B”;最后是调用自身的构造函数 C(),输出 “C”。 27 【正确答案】 B 【试题解析】 程序中首先定义字符数组 a和 b,其值分别为 “Hello Test”和“Test”。然后利用 strcpy复制函数,将 b
11、的值复制给 a,所以输出 a的结果为 lest。 28 【正确答案】 A 【试题解析】 程序中的 “for(i=O; i2; i+)pi=stri; ”语句将 str中的值赋值给指针数组 p。在接下来的二重 for循环中,跳取 “j+=2”, p指针指向的值即 “1”,“3”, “5”, “7”。在分别对字符到整型的转换,即减去字 符 0,然后依次转换为千位,百位,十位,个位 “10*s”操作输出整型 s,即 “1357”。 29 【正确答案】 C 【试题解析】 由程序 main主函数入手,调用 fun函数,在 fun函数中执行“cout*qendl; ”语句实现程序输出。主函数中变量 cha
12、r*s为指针数组,char*p表示 p指向的字符指针数据。 *p就代表 p指向的字符指针。语句 “p=s; ”表明 p指向字符指针 s,而 *p则是 s中的第一个字符串 “HI”。主函数将变量 p传值给函数 fun(char*q)中的 q,在函数体内部 首先执行 “+q”语句,就是将 q的指针指向 s中的下一个字符串,即 “: HELLO”,所以输出语句“cout*qendl: ”输出该字符串值。 30 【正确答案】 A 【试题解析】 由程序中的主函数 main入手,调用 fun函数。其中第一个实参为数组 a的名字,数组名作为实参,传递的是数组的起始地址。所以在 fun函数中指针 p指向了数组
13、的第一个元素 a0。另外实参整型 j传递的是引用,也就是 j的地址。在 fun函数中在 for循环中,依次将当前元素 p嘲与 j指针值为标识的 p进行比较,取较大的。最后循环后的结果 就是 p存放数组中的最大值,并且指针 j为该值的标识位。可以看出数组的最:大值是 9标识位为 2。 31 【正确答案】 C 【试题解析】 主函数中在 for循环中依次调用 fun函数。其中 c为静态变量,到程序结束有效。第一次循环中 2+1+4=7,第二次循环 20+1+5=8,第三次循环2+1+6=9。即答案为 7 8 9。 32 【正确答案】 C 【试题解析】 由主函数 main入手,首先定义外部变量 a,它
14、的作用域为从变量的定义处开始,到本程序文件的末尾,赋值为 10。然后调用 fun函数,在 fun函数中 计算 10*a,其中 a的作用域为到文件结尾,所以这里的 a为 10,即 10*10。 33 【正确答案】 B 【试题解析】 静态数据成员不能在参数初始化表对静态数据成员初始化,只能在类体外进行初始化。 34 【正确答案】 B 【试题解析】 派生类中构造函数的执行顺序是:先调用基类构造函数,对基类数据成员初始化,然后调用子对象构造函数,对子对象数据成员初始化;最后执行派生类构造函数本身,对派生类数据成员初始化。由主函数 main入手,首先定义了一个 TestClass2对象 obi。其中 T
15、estClass2公共继承 TestClassl,对象 obi可以访问 TestClassl中的公有成员函数。 TestClass2中定义了一个 TestClassl的指针p,给 p分配新空间,即指向类 TestClassl,输出 “T5estClassl”。在 TestClass2的构造函数中首先输出 “TestClass2”,并在 TestClassl构造函数中输出“TestClassl”。 TestClass2析构函数中输出 “ TestClass2”,删除指针 p,输出 “TestClassl”。析构。 TestClassl输出 “ TestClassl”。 35 【正确答案】 B 【
16、试题解析】 题目中程序 TestClass为基类, TestClassl为派生类,派生类构造函数的一般形式为:派生类构造函数名 (总参数类表 ):基类构造函数名 (参数列表 )派生类中新增数据成员初始化语句 。派生类 TestClassl的基类函数名为TestClass,总参数为 int a, int b,所以选择 B)。 36 【正确答案】 B 【试题解析】 程序中的 TestClassl为 TestClass的派生类,如果不写继承方式,则默认为 private,所以 TestClassl私有继承 TestClass,对于基类中的保护成员,继承类的访问权限为 private。所以选择 B)。
17、 37 【正确答案】 D 【试题解析】 基类的公有成员和保护成员在保护派生类中都成了保护成员,其私有成员仍为基类私有。 38 【正确答案】 B 【试题解析】 此题考查的是 C+语言中对象概念的理解。所谓封装性是指将数据和算法捆绑成一个整体,这个整体就是对象。 C+语言通过建立用户定义类型 “类 ”来支持封装性和信息隐藏。 39 【正确答案】 A 【试 题解析】 此题考查的是类和对象的概念。类是用户定义的一种数据类型,可以使用这个类型来说明一个或多个变量,即对象。 40 【正确答案】 C 【试题解析】 此题考查的是有关函数的概念。内联函数是在函数定义之前加关键字 inline来声明的函数,而不是定义在另一个函数体内部的函数,故选项 A)错误;无返回值的函数在执行完最后一条语句后,会自动返回而不必加入 return语句,故选项 B)错误;如果函数只是返回值类型不同,而其他完全相同,则不能作为函数重载来使用。