1、国家二级( C+)笔试模拟试卷 21及答案与解析 1 下列选项中不符合良好程序设计风格的是 ( )。 ( A)源程序要文档化 ( B)数据说明的次序要规范化 ( C)避免滥用 goto语句 ( D)模块设计要保证高耦合、高内聚 2 希尔排序属于 ( )。 ( A)交换排序 ( B)归并排序 ( C)选择排序 ( D)插入排序 3 程序设计语言的工程特性之一为 ( )。 ( A)软件的可重用性 ( B)数据结构的描述性 ( C)抽象类型的描述性 ( D)数据库的易操作性 4 对下列二叉树 进行中序遍历的结果是 ( )。 ( A) ACBDFEG ( B) ACBDFGE ( C) ABDCGEF
2、 ( D) FCADBEG 5 下列叙述中,不属于数据库系统的是 ( )。 ( A)数据库 ( B)数据库管理系统 ( C)数据库管理员 ( D)数据库应用系统 6 数据的逻辑结构是指 ( )。 ( A)存储在外存中的数据 ( B)数据所占的存储空间量 ( C)数据元素之间的逻辑关系 ( D)数据的逻辑结构在计算机中的表示 7 在数据库系统中,用户所见的数据模式为 ( )。 ( A)概 念模式 ( B)外模式 ( C)内模式 ( D)物理模式 8 在关系数据库中,用来组织索引结构联系的是 ( )。 ( A)树形结构 ( B)网状结构 ( C)线性表 ( D)二维表 9 检查模块是否正确的组合在
3、一起的过程称为 ( )。 ( A)确认测试 ( B)集成测试 ( C)验证测试 ( D)验收测试 10 下列数据结构中不属于线性存储结构的是 ( )。 ( A)顺序表 ( B)栈 ( C)队列 ( D)链表 11 for(int x=0,y=0;!xy+)语 句执行循环的次数是 ( )。 ( A) 0 ( B) 5 ( C) 6 ( D)无数次 12 若要把函数 void f()定义为 aClass的友元函数,则应该在类 aClass的定义中加入的语句是 ( )。 ( A) void f(); ( B) static voidf(); ( C) friend f(); ( D) friend
4、void f(); 13 对下列语句正确的描述是 ( )。 const int*x; /(1) int*const X; /(2) ( A)语句 (1)的 含义是指针变量 x不能更改 ( B)语句 (2)的含义是指针变量 x所指向的不能更改 ( C)语句 (2)的含义是指针变量 x不能更改 ( D)语句 (1)和 (2)是相同含义的不同定义方式 14 若有函数 fun(x, y),并且已经使函数指针变量 p指向函数 fun,则使用 p调用函数 fun的正确方法是 ( )。 ( A) (*p)fun(x,y); ( B) *pfun(x,y); ( C) (*p)(x,y) ( D) *p(x,
5、y) 15 下述静态数据成员的特性中, ( )是错误的。 ( A)说明静态数据成员时前 边要加修饰符 static ( B)静态数据成员要在类体外进行初始化 ( C)引用静态数据成员时,要在静态数据成员名前加类名和作用域运算符 ( D)静态数据成员不是所有对象所共用的 16 在 C+程序中,使用基本输入输出流需要包含的头文件是 ( )。 ( A) stdio.h ( B) stdafx.h ( C) iostream.h ( D) stream.h 17 下列程序的输出结果是 ( )。 #include iostream using namespace std; int main() char
6、 a=“Hello,World“; char*ptr = a; while(*ptr) if(*ptr = a else cout *ptr; ptr+; retur 0; ( A) HELLO, WORLD ( B) Hello, World ( C) HELLO, world ( D) hello, world 18 定义如下枚举类型: enumMonday,Tuesday,Wednesday,Thmsday,Friday=2);则下列语句正确的是 ( )。 ( A)表达式 Wednesday=Friday的值是 true ( B) Day day; day=3; ( C) Day day
7、; day=Monday+3; ( D) Day day; day=Tuesday+10; 19 下面对静态数据成员的描述中,正确的是 ( )。 ( A)静态数据成员是类的所有对象共享的数据 ( B)类的每个对象都有自己的静态数据成员 ( C)类的不同对象有不同的静态数据成员值 ( D)静态数据成员不能通过类的对象调用 20 下列各个选项中对字符数组赋字符串的语句中,错误的是 ( )。 ( A) char s10;s=“program“; ( B) char s=“program“; ( C) char s10=“program“; ( D) char s10; strcpy(s,“progr
8、am“); 21 以下程序的输出结果是 ( )。 #include iostream.h main() int b33=0,1,2,0,1,2,0,1,2,ij,t=1; for(i=0; i 3;i+) for(j=i; j =i;j+) t=t+bibjj; cout t; ( A) 3 ( B) 4 ( C) 1 ( D) 9 22 命题 “10 m 15或 m 20”的 C+语言表达式是 ( )。 ( A) (m 10) ( B) operator/( operator-(x),y); ( C) x.oper, ator - ().operator/(y); ( D) y. opera
9、tor/( operator-(x); 25 包容类 Contain和内嵌类 Embed定义如下: #include iostream.h class Contain private: int x; protected: int z; public: class Embed private: int y; public: Embed()y=100; int Embed_Fun(); MyEmbed; int Contain_Fun(); ; 对上面的定义,正确的描述是 ( )。 ( A)定义类 Embed对象的语句是 :Contain:Embed embed; ( B)类 Contain的成员
10、函数 Contain_Fun()中可以用 MyEmbed.y的方式访问类Embed的私有成员 y ( C)类 Embed的成员函数 Embed_Fun()中可以直接访问类 Contain和的私有成员x ( D)类 Embed的成员函数 Embed_Fun()中可以直接访问类 Contain的保护成员 z 26 在说明一个结构体变量时,系统分配给它的存储空间是 ( )。 ( A)该结构体中第一个成员所需的存储空间 ( B)该结构体中最后一个成员所需的存储空间 ( C)该结构体中占用最大存储空间的成员所需的存储空间 ( D)该结构 体中所有成员所需存储空间的总和 27 类模板的模板参数 ( )。
11、( A)只可作为数据成员的类型 ( B)只可作为成员的返回类型 ( C)只可作为成员函数的参数类型 ( D)以上三者皆可 28 下列关于多继承二义性的描述中,错误的是 ( )。 ( A)一个派生类的两个基类中都有某个同名成员,派生类中这个成员的访问可能出现二义性 ( B)解决二义性的最常用的方法是对成员名的限定法 ( C)基类和派生类中同时出现的同名函数,也存在二义性问题 ( D)一个派生类是从两个基类派生出来的,而这两个基类 又有一个共同的基类,对该基类成员进行访问时,可能出现二义性 29 有如下程序: #include iostream.h using namespace std; cla
12、ss Demo public: Demo() cout “defautt constmctorn“; Demo(const Demo ; Demo userCode (Demo b)Demo c(b);return c; int main() Demo a,d; cout “calling userCode()n“; d=userCode(a); return 0; 执行上面程序的过程中,构造函数 Demo()和 Demo(const Demo class A private: int a; public: A(im i) a=i; void disp() cout a “,“; ; clas
13、s B private: int b; public: B(int j) b=j; void disp0 cout b “,“; ; class C: public B,public A private: int c; public: C(int k):A(k-2),B(k+2) c=k; void disp0 A:disp(); B:disp(); cout c endl; ; int main() C obj(10); obj.disp(); return 0; 程序执行后的输出结果是 ( )。 ( A) 10,10,10 ( B) 10,12,14 ( C) 8,10,12 ( D) 8
14、,12,10 31 下面关于构造函数和析构函数的描述,错误的是 ( )。 ( A)析构函数中调用虚函数采用静态联编 ( B)对虚析构函数的调用可以采用动态联编 ( C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数 ( D)构造函数可以声明为虚函数 32 以下程序的执行结果为 ( )。 #include iostream.h class Sample int n; public: Sample(int i) n=i; operator+() n+; /前缀重载运算符 operator+(int) n+=2; /后缀重载运算符 void disp() cout “n=“ n end
15、l; ; void main() Sample A(2),B(2); A+; +B; A disp(); A disp(); ( A) n=4 ( B) n=1 ( C) n=3 ( D) n=5 n=3 n=2 n=4 n=6 33 一个 ( )允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能 取任意类型。 ( A)函数模板 ( B)模板甲数 ( C)类模板 ( D)模板类 34 下面叙述错误的是 ( )。 ( A)对基类成员的访问能力在 private派生类中和 public派生类中是相同的 ( B)基类的 private成员在 public派生类中不可访问 ( C
16、)基类中的 public成员在 protected派生类中是 protected的 ( D)基类中的 public成员在 protected派生类中仍然是 public的 35 关于关键字 class和 typename,下列表述正确的是 ( )。 ( A)程序中所有的 typename都可以替换为 class ( B)程序中所有的 class都可以替换为 typename ( C) A和 B都正确 ( D) A和 B都不正确 36 编译过程一般分成 5个阶段【 】、语法分析、错误检查、代码优化和目标代码生成。 37 数据的逻辑结构在计算机存储空间中的存放形式称为数据的【 】。 38 一个关系
17、表的行称为【 】。 39 常用的黑箱测试有等价分类法、【 】、因果图法和错误推测法 4种。 40 数据库系统阶段的数据具有较高独立性,数据独立性包 括物理独立性和【 】两个含义。 41 求 1 100的和,可写成 for(s=0,i=1;【 】; i+)s+=i;的形式。 42 表达式 x.operator+(y.operator+(0)还可以写成【 】。 43 耦合和内聚是评价模块独立性的两个主要标准,其中【 】反映了模块内各成分之间的联系。 44 类中数据成员和成员函数的默认访问级别为【 】。 45 已知: double A(double A)return+a; 和 int A(int a
18、)return +a; )是一 个函数模板的两个实例,则该函数模板定义为【 】。 46 下列程序的输出结果是【 】。 #include iostream using namespace std; class Test public: Test()cnt+; ) Test()cnt-; ) static int Count()retum cnt; private: static int cnt; ; int Test:cnt=0; int main() cout Test:Count() ; Test t1,t2; Test*pT3=new Test; Test*p T4=new Test; c
19、out Test:Count() ; delete pT4; delete pT3; cout Test:Count() endl; return0; 47 创建对象数组时,对数组的每一个元素都将调用一次构造函数,如果没有显式给出数组元素的初值,则调用缺省构造函数。下列程序涉及对象数组的 创建和单个对象的创建,其输出结果是【 】。 #include iostream using namespace std; class Foo public: Foo(int x)cout A; ) Foo() ; int main() Foo f3, g(3); return0; 48 下列程序的输出结果是【
20、 】。 #include iostream.h void main() int i(1),j(2),k(3),a(10); if(!i) a-; else if(j) if(k)a=5; else a=6; a+; cout a endl; if(i j) if(i!=3) if(!k) a=1; else if(k) a=5; 6+=2; cout a endl; 49 下列程序的输出结果是【 】。 #include iostream.h void main() inta(5), b(6), i(0)1j(0); switch(a) case 5:switch(b) case 5:i+; b
21、reak; case 6:j+; break; defaun:i+;j+; case 6:i+; j+; break; default:i+;j+; cout i “, “ j endl; 50 以下程序的执行结果 是【 】。 #include iostream #define PI_3.14159 const int R=10; void main() double a, b; ac2*R*PI; b=R*R*PI; cout “a=“ a “, “ “b=“ b endl; “ 国家二级( C+)笔试模拟试卷 21答案与解析 1 【正确答案】 D 2 【正确答案】 D 3 【正确答案】 A
22、 4 【正确答案】 A 5 【正确答案】 D 6 【正确答案】 C 7 【正确答案】 B 8 【正确答案】 D 9 【正确答案】 B 10 【正确答案】 D 11 【正确答案】 C 12 【正确答案】 D 13 【正确答案】 C 14 【正确答案】 C 15 【正确答案】 B 16 【正确答案】 C 17 【正确答案】 A 18 【正确答案】 A 19 【正确答案】 A 20 【正确答案】 A 21 【正确答案】 B 22 【正确答案】 A 23 【正确答案 】 D 24 【正确答案】 B 25 【正确答案】 A 26 【正确答案】 D 27 【正确答案】 D 28 【正确答案】 C 29 【
23、正确答案】 C 30 【正确答案】 D 31 【正确答案】 D 32 【正确答案】 A 33 【正确答案】 C 34 【正确答案】 D 35 【正确答案】 A 36 【正确答案】 代码生成 37 【正确答案】 存储结构 或 物理结构 或 物理存储结构 38 【正确答案】 记录或元组 39 【正确答案】 边值分析法 40 【正确答案】 逻辑独立性 41 【正确答案】 i =100或 i 101 42 【正确答案】 x+y+或 x+(y+) 43 【正确答案】 内聚 44 【正确答案】 私有或 private 45 【正确答案】 template typename T TA(T a)retum a+; ) 46 【正确答案】 42 47 【正确答案】 A 48 【正确答案】 6 7 49 【正确答案】 1,2 50 【正确答案】 a=62.8318,b=314.159