1、国家二级( C+)笔试模拟试卷 88及答案与解析 1 假定 MyClass为一个类,则执行 MyClass a3, *p2;语句时, 自动调用该类构造函数 ( )次。 ( A) 2 ( B) 3 ( C) 4 ( D) 5 2 cin是 ( )的一个对象,处理标准输入。 ( A) istream ( B) ostream ( C) fstream ( D) iostream 3 this指针是 C+语言实现什么的一种机制 ? ( ) ( A)抽象 ( B)封装 ( C)继承 ( D)重载 4 下列引用的定义中, ( )是错误的。 ( A) int i; int int ( C) float i
2、; float ( D) chard; char sub2(char*a,char b) char c: c=*a; ”a=b; b=c; sub3(char*a, char*b) char c; c=*a; ”a=*b; *b=c; void main() char a,b; a=A; b=B:sub1(a, b); putchar(a): putchar(b): a=A;b=B; sub2( sub3(&a, &b);putchar(a); putchar(b); putchar(n); ( A) ABABAB ( B) ABBBBA ( C) ABBABA ( D) ABABBA 16
3、对于语句 const int x=10;的描述正确的 是 ( )。 ( A)该语句不允许定义为 int const x=10; ( B)在程序中可以重新对 X赋值 ( C)变量 X不能使用 +运算符 ( D) const关键字只能用来修饰常量 17 以下程序的输出结果是 ( )。 #include iostream.h main() in(b33=0, 1, 2, 0, 1, 2, 0, 1, 2, i,j,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 18 用链表
4、表示线性表的优点是 ( )。 ( A)便于随机存取 ( B)花费的存储空间较顺序存储少 ( C)便于插入和删除操作 ( D)数据元素的物理顺序与逻辑顺序相同 19 若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需 “要使用的存储类别是 ( )。 ( A) extern ( B) register ( C) auto ( D) static 20 在 C+语言中, main函数默认返回一个 ( )类型的值。 ( A) int ( B) float ( C) char ( D) void 21 以下程序的输出是 ( )。 struct st int x; int*y; *p; int
5、 dt4=10,20,30,40; struct st aa4=50,&dt0,60,&dt0, 60,&dt0, 60,&dt0, ; main() p=aa; cout + +(p- x); ( A) 10 ( B) 11 ( C) 51 ( D) 60 22 C+语言类体系中,不能被派生类继承的有 ( )。 ( A)转换函数 ( B)构造函数 ( C)虚函数 ( D)静态成员函数 23 下列的各类函数中, ( )不是类的成员函数。 ( A)构造函数 ( B)析构函数 ( C)发元函数 ( D)拷贝初始化构造函数 24 假定 MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为
6、( )。 ( A) MyClass&(MyClass x); ( B) MyClass(MyClass x) ( C) MyClass(MyClass &x); ( D) MyClass(MyClass *x) 25 在类中定义和实现的函数称为 ( )。 ( A)静态成员函数 ( B)内联函数 ( C)常成员函数 ( D)虚函数 26 关于静态数据成员的描述中正确的是 ( )。 ( A)类的静态数据成员不是类的所有对象共享的数据 ( B)类的静态数据成员不能被类的成员函数调用 ( C)类的静态数据成员不能被类的构造函数调用 ( D)类的静态数据成员必须进行初始化 27 下列运算符中, ( )运
7、算符在 C+中不能重载。 ( A) & ( B) ( C) : ( D) new 28 两个变量定义不能同名,是因为 ( )。 ( A)这两个变量定义在同一文件中 ( B)这两个变量定义在同一作用域中 ( C)一个定义在 main函数中,一个定义在子函数中 ( D)以上说法均不正确 29 类模板的模板参数 ( )。 ( A)只可作为数据成员的类型 ( B)只可作为成员的返回类型 ( C)只可作为成员函数的参数类型 ( D)以上三者皆可 30 以下程序的输出结果是 #include iostream.h long fun(int n) long s; if(n=1|n=2) s=2; else
8、s=n-fun(n-1): return s; void main() cout fun(3); = ( A) 1 ( B) 2 ( C) 3 ( D) 4 31 以下对模板的说明,正确的是 ( )。 ( A) template T ( B) template classT1, T2 ( C) template class T1, class T2 ( D) template class T1; class T2 32 下面对于友元函数描述正确的是 ( )。 ( A)友元 函数的实现必须在类的内部定义 ( B)友元函数是类的成员函数 ( C)友元函数破坏了类的封闭性和隐藏性 ( D)友元函数不
9、能访问类的私有成员 33 下列表达式中,错误的是 ( )。 ( A) cout setw(5); ( B) cout fill(#); ( C) cout.setf(ios:uppercase); ( D) cin.fill(#); 34 下述关于数据库系统的叙述中正确的是 ( )。 ( A)数据库系统减少了数据冗余 ( B)数据库系统避免了一切冗余 ( C)数据库系统中数据的一致性是指数据类型一致 ( D)数据库系统比文件系统能管理更多的数据 35 在 C+中,关于下列设置参数默认值的描述中,正确的是 ( )。 ( A)不允许设置参数的默认值 ( B)设置参数默认值只能在定义函数时设置 (
10、C)设置参数默认值时,应该是先设置右边的再设置左边的 ( D)设置参数默认值时,应该全部参数都设置 36 栈和队列通常采用的存储结构是【 】。 37 在程序设计阶段应该采取【 】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进 而用某种程序设计语言写成程序。 38 软件结构是以【 】为基础而组成的一种控制层次结构。 39 数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【 】两个含义。 40 数据库保护分为安全性控制、【 】、并发性控制和数据的恢复。 41 C+语言中关键字运算符有 new, delete和【 】。 42 将以下程序写成三目运算表达式是【 】
11、。 if(aB) max=a; else max=b; 43 以下程序的输出结果是【 】。 #include iostream.h class object private: int val; public: object( ); object(int i); object( ); ; object:object( ) val=0; cout “Default constructor for object“ endl; object:object(int i) val=i; cout “Constructor for object“ val endl; object: object( ) co
12、ut “Destructor for object“ val endl; class container private: object one; object two; int data; public: container( ); container(int i, int j, int k); container( ); ; container:container( ) data=0; cout “Default constructor for container“ endl; container:container(int i, int j, int k): two(i), one(j)
13、 data=k; cout “Constructor for container“ endl; container: container( ) cout “Destructor for container“ endl; void main( ) container anObj(5, 6, 10); 44 请定义一个函数名为 A,返回值为 int,没有参数的纯虚函数的定义是【 】。 45 表达式 x.operator+(y.operator+(0)还可以写成【 】。 46 假设 fin是一个文件流对象,则关闭文件的语句是【 】。 47 C+语言中的友元函数为在类外访问类中的私有成员和保护成员提供
14、了方便,但破坏了类的 _和 _。 48 派生类对基类的继承有三种方式: _、 _,保护继承。 49 动态联编中直到 _时才能确定调用哪个函数;而静态联编则是在 _时进行的。 国家二级( C+)笔试模拟试卷 88答案与解析 1 【正确答案】 B 2 【正确答案】 A 3 【正确答案】 B 4 【正确答案】 B 5 【正确答案】 D 6 【正确答案】 A 7 【正确答案】 D 8 【正确答案】 A 9 【正确答案】 D 10 【正确答案】 A 11 【 正确答案】 C 12 【正确答案】 D 13 【正确答案】 D 14 【正确答案】 C 15 【正确答案】 B 16 【正确答案】 C 17 【正
15、确答案】 B 18 【正确答案】 C 19 【正确答案】 D 20 【正确答案】 A 21 【正确答案】 C 22 【正确答案】 B 23 【正确答案】 C 24 【正确答案】 C 25 【正确答案】 B 26 【正确答案】 D 27 【正确答案】 C 28 【正确答案】 B 29 【正确答案 】 D 30 【正确答案】 A 31 【正确答案】 C 32 【正确答案】 C 33 【正确答案】 B 34 【正确答案】 B 35 【正确答案】 C 36 【正确答案】 链式存储和顺序存储 【试题解析】 栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。注意:栈、数组、表采
16、用的存储结构,各种存储结构的定义和区别。 37 【正确答案】 自顶而下 38 【正确答案】 模块 【试题解析】 采用模块化原理可以使软件结构清晰,不仅容易设计也 容易阅读和理解,模块化使得软件容易测试和调试,因而有利于提高软件的可靠性,也有利于软件的组织管理,大型程序可由不同的程序员编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的部分。注意:软件结构的定义,模块操作其他的所有特点。 39 【正确答案】 逻辑独立性 【试题解析】 数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。注意:在人工管理阶段
17、,文件系统阶段和数据库管理阶段中数据独立性的特点。 40 【 正确答案】 完整性控制 【试题解析】 安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。注意:数据库的其他用途,如数据定义、数据操作和数据管理等。 41 【正确答案】 sizeof 【试题解析】 C+语言中关键字运算符有 3个分别 new, delete和 sizeof。 new是申请内
18、存, delete是释放内存, sizeof 是求字节数。 42 【正确答案】 max=(a B?a: b; 【试题解析】 条件运算符要求有三个操作对象,称三目 (元 )运算符,它是 C+语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式 1?表达式 2:表达式 3。所以我们可以写成 (a B?a: b,它是一个 “条件表达式 ”。执行顺序是如果(a B 条件为真,则条件表达式取值 a作为整个表达式的值,否则取值 b 作为整个表达式的值。 43 【正确答案】 Constructor for object6 Constructor for obiect5 Constructor for
19、container Destructor for container Destructor for object5 Destructor for obiect6 【试题解析】 C+语言中的构造函数和析构函数分别是在声明对象时和对象调用完毕后调用,本题中的调用就是这样成对出现的。 44 【正确答案】 virtual int A()=0; 【试题解析】 C+语言中的纯虚函数是一种特殊的函 数,它没有自己的定义,只有声明,纯虚函数与虚函数声明的不同就在于在函数后面加上了 “=0”。 45 【正确答案】 x+y+或 x+(y+) 【试题解析】 因为 y.operator+(0)是对成员 y重载运算符,所以是成员重载,在参数表中又有一个参数,是重载后缀 +,即是 x+(y+)。 46 【正确答案】 fin 【试题解析】 如果程序没有用 close()主动关闭文件,则在文件流对象退出作用域时,被调用的析构函数会关闭对象所联系的文件。但应及时关闭,以便尽早释放占用的系统资源并将文件置于 更安全的状态。 47 【正确答案】 隐藏性、封装性 48 【正确答案】 公有继承 私有继承 49 【正确答案】 程序运行 程序编译