1、国家二级( C+)笔试模拟试卷 15及答案与解析 1 数据结构中,与所使用的计算机无关的是数据的 ( )。 ( A)存储结构 ( B)物理结构 ( C)逻辑结构 ( D)物理和存储结构 2 栈通常采用的两种存储结构是 ( )。 ( A)线性存储结构和链表存储结构 ( B)散列方式和索引方式 ( C)链表存储结构和数组 ( D)线性存储结构和非线性存储结构 3 一棵二叉树中共有 70个叶子结点与 80个度为 1的结点,则该二叉树中的总结点数为 ( )。 ( A) 221 ( B) 219 ( C) 231 ( D) 229 4 为了提高测试的效率,应该 ( )。 ( A)随机选取测试数据 ( B
2、)取一切可能的输入数据作为测试数据 ( C)在完成编码以后制定软件的测试计划 ( D)集中对付那些错误群集的程序 5 下面描述中,符合结构化程序设计风格的是 ( )。 ( A)使用顺序、选择和重复 (循环 )三种基本控制结构表示程序的控制逻辑 ( B)模块只有一个入口,可以有多个出口 ( C)注重提高程序的执行效率 ( D)不使用 goto语句 6 在关系模型中, ( )。 ( A)为了建立一个 关系,首先要构造数据的逻辑关系 ( B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项 ( C)一个关系的属性名表称为关系模式 ( D)一个关系可以包括多个二维表 7 软件维护指的是 ( )
3、。 ( A)对软件的改正、适应和完善 ( B)维护正常运行 ( C)配置新软件 ( D)软件开发期的一个阶段 8 在下列几种排序方法中,要求内存量最大的是 ( )。 ( A)插入排序 ( B)选择排序 ( C)快速排序 ( D)归并排序 9 软件工程的出现是由于 ( )。 ( A)程序设 计方法学的影响 ( B)软件产业化的需要 ( C)软件危机的出现 ( D)计算机的发展 10 可行性研究要进行一次 ( )需求分析。 ( A)深入的 ( B)详尽的 ( C)彻底的 ( D)简化的、压缩了的 11 下列关于 C+函数的叙述中,正确的是 ( )。 ( A)每个函数至少要具有一个参数 ( B)每个
4、函数都必须返回一个值 ( C)函数在被调用之前必须先声明 ( D)函数不能自己调用自己 12 下列运算符不能重载为友元函数的是 ( )。 ( A) = () - ( B) + - + - ( C) = = ( D) += -= *_= /= 13 在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则 ( )。 ( A)完全相同 ( B)完全不同 ( C)部分相同,部分不同 ( D)以 上都不对 14 在下列选项中,没有构成死循环的程序是 ( )。 ( A) int i=100; while(1) i=i%100+1; if(i 100)break; ( B) for(;
5、); ( C) int k=1000; do+k while(k =1000); ( D) int s=36;while(s);-s; 15 下列对派生类的表述中,错误的是 ( )。 ( A)一个派生类可以作为另一个派生类的基类 ( B)派生类至少有一个基类 ( C)派生类的缺省继承方式是 private ( D)派生类只继承了基类的公有成员和保护成员 16 在下面叙述中,不正确的是 ( )。 ( A)一个类的所有对象都有各自的数据成员,它们共享函数成员 ( B)一个类中可以有多个同名的成 员函数 ( C)一个类中可以有多个构造函数、多个析构函数 ( D)在一个类中可以声明另一个类的对象作为它
6、的数据成员 17 下列字符串中,正确的 C抖标识符是 ( )。 ( A) foo-1 ( B) 2b ( C) new ( D) _256 18 关于在调用模板函数时模板实参的使用,下列表述正确的是 ( )。 ( A)对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略 ( B)对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略 ( C)对于虚拟类型参数所对应的模板实参,若能够省略则必须省略 ( D)对于常规参数所对应的模板实参,任何情况下都不能省略 19 一个类的友元函数或友元类能够通过成员操作符访问该类的 ( )。 ( A
7、)私有成员 ( B)保护成员 ( C)公有成员 ( D)公用成员、保护成员和私有成员 20 下列关于运算符重载的描述中,正确的是 ( )。 ( A)运算符重载可以改变运算符的操作数的个数 ( B)运算符重载可以改变优先级 ( C)运算符重载可以改变结合性 ( D)运算符重载不可以改变语法结构 21 模板是实现类属机制的一种工具,其功能非常强大,它允许用户构造类属类,即 ( )。 ( A)模板函数 ( B)函数模板 ( C)模板类 ( D)关模板 22 下面关 this指针的说法中,不正确的是 ( )。 ( A)当调用类的成员函数时,指针 this被自动传递给该成员函数 ( B)当调用类的成员函
8、数时,指针 this实际上指向了该类的一个对象 ( C)友元函数也可以被传递指针 this ( D)在缺省状态下,所有的成员函数都自动传递一个指针给激活它的对象 23 有如下函数模板定义: template class T T func (Tx, Ty) return x*x+ y*y;在下列对 func 的调用中,错误的是 ( )。 ( A) func(3,5); ( B) func(3.0,5.5); ( C) func(3,5.5); ( D) func int (3, 5.5); 24 以下关键字不能用来声明类的访问权限的是 ( )。 ( A) public ( B) static (
9、 C) protected ( D) private 25 有如下定义语句: int a=1,2,3,4,5;,则对语句 int*p=9;正确的描述是 ( )。 ( A)语句 int*p=a;定义不正确 ( B)语句 int*p=a;初始化变量 p,使其指向数组对象 a的第一个元素 ( C)语句 int*p=a;是把 a0的值赋给变量 p ( D)语句 int*p=a;是把 a1的值赋给变量 p 26 以下四种说法中,正确的一项是 ( )。 ( A) C+允许在字符串上进行整体操作 ( B)语句: char vn =“Brown“; 将 vn 定义成一个有 5个元素的数组,因为“Brown“
10、中含有 5个字符 ( C)对指针只要赋给一个地址值就可以了 ( D)一维的指针数组实际上是一个二维数组 27 下列对于虚函数和重载函数的叙述,正确的是 ( )。 ( A)虚函数要求函数名、返回值类型和参数序列完全相同 ( B)重载函数要求函数有相同的返回值类型和函数名称,并有不同的参数序列 ( C)虚函数是根据对象的不同去调用不同类的虚函数 ( D)虚函数和重载函数都是在运行时表现出多态功能 28 设有以下说明和定义: #include iostream. h Void main() typedef unionlong i; int k5; char c;DATE;struct dateiNt
11、 cat; DATE cow; double. dog;too;DATE max;则下列语句的执行结果是 ( )。 cout (sizeof(struct date)+sizeof(max) end1; ( A) 26 ( B) 52 ( C) 18 ( D) 8 29 有如下程序 :#include iostream #include iomanip using namespace std;int main() cout.fill(*); cout.width(6); cout.fill(#); cout 123 end1; return 0;执行后的输出结果是 ( )。 ( A) #123
12、 ( B) 123# ( C) *123 ( D) 123* 30 有如下程序 #include iostream #include iomanip using namespace std;int main( )cout setprecision(3) fixed setfill(*) setw(8);cout 12.345 _ 34.567;return 0;若程序的输出是: *12.345*34.567则程序中下划线处遗漏的操作符是 ( )。 ( A) setprecision(3) ( B) fixed ( C) setfill(*) ( D) setw(8) 31 下面的描述中,正确的
13、是 ( )。 ( A) virtual 可以用来声明虚函数 ( B)含有纯虚函数的类是不可以用来创建对 象的,因为它是虚基类 ( C)即使基类的构造函数没有参数,派生类也必须建立构造函数 ( D)静态数据成员可以通过成员初始化列表来初始化 32 如果类 A被说明成类 B的友元,则 ( )。 ( A)类 A的成员即类 B的成员 ( B)类 B的成员即类 A的成员 ( C)类 A的成员函数不得访问类 B的成员 ( D)类 A的成员函数可以访问类 B的成员 33 带有基类的多层派生类构造函数的成员初始化列表中都要排出虚基类的构造函数,这样将对虚基类的子对象初始 ( )。 ( A)与虚基类下面的派生类
14、个数有关 ( B)多次 ( C)二次 ( D)一次 34 下面程序的运行结果为 ( )。 #include iostream.h void swap (int temp=a+;a=b;b=temp;void main()int a=2, b=3;swap(a,b);cout a “,“ b end1; ( A) 2,3 ( B) 3,2 ( C) 2,2 ( D) 3,3 35 有如下程序 :#include iostream using namespace std;class AA int n;public: AA(int k):n(k) int get()return n; int get
15、()const return n+1; ;int main() AAa(5); const AA b(6); cout a. get() b. get(); return ();执行后的输出结果是 ( )。 ( A) 55 ( B) 57 ( C) 75 ( D) 77 36 问题处理方案的正确而完整的描述称为【 】。 37 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【 】。 38 在结构化分析方法中,用于描述系统中所用到的全部数据和文件的文档称为【 】。 39 利用继承能够实现【 】。这种实现缩短了程序的开发时间,促使开发人员复用已经测试和调试
16、好的高质量软件。 40 【 】是精确定义的一系列规则,它指出怎样从给定的输入信息经过有限步骤产生所求的输出信息。 41 含有纯虚函数的类称为【 】 。 42 下面程序的输出结果是【 】。 #include iostream.h int add(int a, int b); void main() extern int x, y; cout add(x, y) end1; int x(20),y(5); int add(int a, int b) int s=a+ b; return s; 43 在下面函数的横线处填上适当的内容,使该函数能够利用递归方法求解字符串str的长度 (不得使用系统提供
17、的字符串处理函数 )。 int GJetLen(char*str) if(【 】 ) return 0; else return 1+GetLen (str+1); 44 将以下程序写成三日运算表达式是【 】。 if(a b) max=a; else max=b; 45 下面程序的运行结果是【 】。 #include iostream using namespace std; class count static int n; public: count() n+; static int test() for(int i=0;i 4;i+) n+; return n; ; int count:
18、n = 0; int main() cout count : test() “ “; count c1, c2; cout count : test() end1; return 0; 46 下面程序的输出为【 】。 #include iostream.h void main() int a10,i, k=0; for(i=0,i 10;i+) ai=i; for(i=1;i 4;i+) k+=ai+i; cout k end1; 47 以下程序的执行结果是【 】。 #include iostream.h class B public: B() B(int i.int j); void pri
19、ntb(); private: int a,b; ; class A public: A() A(int i,int j); void printa(); private: B c; ; A: A(int i,int j):c(i, j) void A: pfinta() c. printb(); B:B(int i,int j) a=i; b=j; void B:printb() cout “a=“ a “,b=“ b end1; void main() A m(7,9); m. printa(); 48 下列程序的输出结果为【 】。 #include iostream. h void ma
20、in() char a=“abcdabcabfgacd“; int i1=0,i2=0,i=0; while (ai) if (ai=a) i1+; if (ai=q) i2+; i+; cout i1 i2 end1; 49 Staff类含有 int 型数据成员 ID,两个 Staff 对象相等是指它们的 ID相同。下面的函 数重载了运算符 =,它用来判断两个 Staff 对象是否相等,相等时返回 true,否则返回 false。 请将横线处缺失部分补充完整。 bool Staff:Staff=(const Staff 50 若有以下程序: #include iostream using n
21、amespace std; class Base public: Base() x=0; int x; ; class Derived1: virtual public Base public: Derived1() x=10; ; class Derived2: virtual public Base public: Derived2() x=20; ; class Derived: public Derived1, protected Derived2 ; int main() Derived obj; cout obj.x end1; return 0; 该程序运行后的输出结果是【 】。
22、 国家二级( C+)笔试模拟试卷 15答案与解析 1 【正确答案】 C 2 【正确答案】 A 3 【正确答案】 B 4 【正确答案】 D 5 【正确答案】 A 6 【正确答案】 C 7 【正确答案】 A 8 【正确答案】 D 9 【正确答案】 C 10 【正确答案】 D 11 【正确答案】 C 12 【正确答案】 A 13 【正确答案】 A 14 【正确答案】 C 15 【正确答案】 D 16 【正确答案】 C 17 【正确答案】 D 18 【正确答案】 D 19 【正确答案】 D 20 【正确答案】 D 21 【正确答案】 C 22 【正确答案】 C 23 【正确答案】 C 24 【正确答案
23、】 B 25 【正确答案】 B 26 【正确答案】 A 27 【正确答案】 D 28 【正确答案】 B 29 【正确答案】 A 30 【正确答案】 D 31 【正确答案】 A 32 【正确答案】 D 33 【正 确答案】 D 34 【正确答案】 D 35 【正确答案】 B 36 【正确答案】 算法 (或程序、或流程图 ) 37 【正确答案】 无歧义性 38 【正确答案】 数据字典 39 【正确答案】 软件复用 40 【正确答案】 算法 41 【正确答案】 抽象类 42 【正确答案】 25 43 【正确答案】 *str=NULL 44 【正确答案】 max=(ab)?a: b; 45 【正确答案】 4 10 46 【正确答案】 12 47 【正确答案】 a=7, b=9 48 【正确答案】 43 49 【正确答案】 ID=s. D 或 s. ID=ID 或 this- ID=s. ID 或 s. ID= this- ID 50 【正确答案】 20