1、国家二级 C+机试(选择题)模拟试卷 99及答案与解析 一、选择题 1 算法的时间复杂度是指 ( )。 ( A)算法的长度 ( B)执行算法所需要的时间 ( C)算法中的指令条数 ( D)算法执行过程中所需要的基本运算次数 2 以下数据结构中,属于非线性数据结构的是 ( )。 ( A)栈 ( B)线性表 ( C)队列 ( D)二叉树 3 数据结构中,与所使用的计算机无关的是数据的 ( )。 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)线性结构 4 内聚性是对模块 功能强度的衡量,下列选项中,内聚性较弱的是 ( )。 ( A)顺序内聚 ( B)偶然内聚 ( C)时间内聚 ( D
2、)逻辑内聚 5 在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的 ( )。 ( A)连接码 ( B)关系码 ( C)外码 ( D)候选码 6 检查软件产品是否符合需求定义的过程称为 ( )。 ( A)确认测试 ( B)需求测试 ( C)验证测试 ( D)路径测试 7 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构 成。下列图符名标识的图符不属于数据流图合法图符的是 ( )。 ( A)控制流 ( B)加工 ( C)存储文件 ( D)源和潭 8 待排序的关键码序列为 (15, 20, 9, 30, 67, 65, 45, 90),要按
3、关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码 15被放到第 ( )个位置。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 9 对关系 S和关系 R进行集合运算,结果中既包含关系 S中的所有元组也包含关系 R中的所有元组,这样的集合运算称为 ( )。 ( A)并运算 ( B)交运算 ( C)差运算 ( D)除运算 10 下列选项中,不属于数据管理员 (DBA)职责的是 ( )。 ( A)数据库维护 ( B)数据库设计 ( C)改善系统性能,提高系统效率 ( D)数据类型转换 11 假定 MyClass为一个类,则该类的拷贝构造函数的声明语句为 ( )。 ( A) My
4、Class(MyClass x); ( B) MyClass(Myaassj”的值为 15,所以 “k-MAX(ij)*10; ”答案为: 150。 15 【正确答案】 B 【试题解析】 enum;其中:关键词 “enum”表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。本题中的枚举类型中的数据值 Wednesday为 2,而 Friday的值赋值为2,所以判断 Wednesday等于 Friday的表达式值为真,即 true。 16 【正确答案】 D 【试题解析】 程序中首先定义字符数组 a,然后在 while循环中统计字符 a和 b的个数。其中 j记录
5、a的个数, k记录 b的个数。第一个 if语句是当第 i个字符为a时, j加 1;第二个 if语句是当第 i个字符为 b时, k加 1。 17 【正确答案】 C 【试题解析】 由程序 main主函数入手,调用 fun函数获得返回值 result输出。题目中假定 a=3,即调用语句 fun(a)中的输入参数为 a,进入 fun函数,在 for循环中当 i小于等于 n,即输入参数 3时,循环 3次执行 “p*=i; result+=p; ”语句。即执行三次 p=p*i, result=result+p, result的结果为 9。返回的 fun函数结果为9,即 “eoutresultendl: ”
6、输出 9。 18 【正确答案】 D 【试题解析】 指针变量如果指向同一个数组的元素,则可以进行比较,所以 A)是正确的。指针变量的赋值就是将一个变量地址赋给一个指针变量。并且指针变量可以是空值,即该指针不指向任何变 量。 B)同样也是正确的。指针变量加减一个整数是将该指针变量的原值 (是一个地址 )和它指向的变量所占用的内存单元字节数相加或相减。即 C)也是正确的。如果两个指针指向同一个数组元素,两个指针是可以相减的,标识两个指针之间的元素个数。但是它们是不可相加的。 19 【正确答案】 A 【试题解析】 程序中的 “int&y=x; ”语句中的 “&”引用运算符。 &y=x语句可以理解为 y
7、具有 x的地址,所以 y的值 99, x的值也是 99,所以答案是 x=99。 20 【正确答案】 A 【试题解析】 函数 fun中定 义的参数 a和 b为形式参数,它们并不是实际存在的数据,只有在发生函数调用时才被分配内存空间,结束后,形参所占有的内存单元也被释放。并且函数 fun没有返回值,它做的交换操作,并不能影响实际参数m和 n。所以输出值保持不变,仍然是 1和 2,即输出: 12。 21 【正确答案】 A 【试题解析】 选项 B)、 C)、 D)都是获取 a(1)元素,而选项 A)是获取 a(O)的元素。 22 【正确答案】 B 【试题解析】 数组作为参数实参传递的是数组的首地址。所
8、以主调函数和被调函数共用一段存储单元。 23 【正确答案】 C 【试题解析】 可以在类的构造函数中对静态数据成员进行初始化。 24 【正确答案】 D 【试题解析】 在一个类中可以定义多个构造函数,以便对类对象提供不同的初始化的方法,供用户选用。这些构造函数具有相同的名字,而参数的个数或参数的类型不相同。 25 【正确答案】 A 【试题解析】 本题 b是一个 33的二维数组:利用指针表示数组: *(*(数组名+i)+j), *b表示 b00元素,值是 1, *(b+1)表示是 b01的元素,值是 4。*(*b+1)+2)表示 b12的元素,值是 18, b02+b12+b22之和是 30。 26
9、 【正确答案】 D 【试题解析】 题中主程序中首先定义整型变量 n=50,然后调用函数 fun,实际参数为 n。函数 fun中参数为引用,为地址。即函数中形参的改变会影响实参的值,函数的功能是参数乘以 2。 27 【正确答案】 B 【试题解析】 此题考查的是继承时基类成员属性改变。选项 B)中,公有继承时基类中的 private成员在派生类中不是 private的,而是不可访问的。所以选项 B)错误; 其他选项叙述均正确。 28 【正确答案】 C 【试题解析】 多继承派生类的构造顺序是:首先调用虚基类的构造函数,然后调用非虚基类的构造函数按照它们被继承的顺序构造,其次调用子对象的构造函数,最后
10、是派生类构造函数中的内容。 29 【正确答案】 D 【试题解析】 析构函数可以声明为虚函数,但是构造函数不能声明为虚函数;类的虚函数仅对派生类中重定义的函数起作用,对其他函数没有影响。 30 【正确答案】 C 【试题解析】 由于 class A3: protectedA2,所以类 A3的 对象 obj3不能直接访问基类 A1的成员函数 showl(),所以选项 C)是错误的;其他选项均有访问的权限,正确。 31 【正确答案】 D 【试题解析】 重载的运算符仍要保持其原来的操作数、优先级和结合性不变。 32 【正确答案】 B 【试题解析】 分析题目,此题最终要实现的结果是 sqrt(a xb x
11、)*(a x一b x)+(a yb y)*(a y-b y),其中的 a x和 a y分别指 p1(1, 2)中的 1和2。这样容易得到结果是 (1-5)*(1-5)+(22)*(22)=16,再开方得到结果为 4。 33 【正确答案】 C 【试题解析】 此题中,语句 R a(5,4)调用构造函数 R(int r1, int r2)但未有输出结果; b print();调用常成员函数 (因为 b是常对象 )voidprint()const,输出结果是20, 52。 34 【正确答案】 B 【试题解析】 此函数模板的功能是输出 a、 b两数中较小的那个数。 (3, 6)输出3, (3 14F,6
12、 28F)输出 3 14。 35 【正确答案】 B 【试题解析】 类模板不是一个实实在在的类 ,本身在编译中不会生成任何代码;用类模板定义一个对象时,不能省略实参;类模板的成员函数都是模板函数。 C+中可以为类模板的参数设置默认值,所以选项 B)错误。 36 【正确答案】 D 【试题解析】 如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都必须使用 class关键字来修饰。 37 【正确答案】 D 【试题解析】 this指针是成员函数所属对象的指针,它指向类对象的地址;它隐含于每个类的非静态成员函数中; this指针只能在类的成员函数中使用,它指向该成员函数 被调用的对
13、象;静态成员函数没有 this指针,因为类中只有一个静态成员函数实例,使用 this指针无意义。 38 【正确答案】 C 【试题解析】 此题考查的是函数重载的概念。在 C+语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。故选项 C)错误。 39 【正确答案】 B 【试题解析】 此题考查的是构造函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但 只要定义了一个任意的构造函数,就不会生成缺省构造函数了。 40 【正确答案】 D 【试题解析】 此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。