2011年9月全国计算机等级考试二级C++笔试试卷
C++语言程序设计
(考试时间90分钟,满分100分)
一、选择题(每小题2分,共70分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是(D )。 A)算法就是程序
B)设计算法时只需要考虑数据结构的设计 C)设计算法时只需要考虑结果的可靠性 D)以上三种说法都不对
(2)下列关于线性链表的叙述中,正确的是(C )。
A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致 B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续 C)进行插入与删除时,不需要移动表中的元素 D)以上三种说法都不对
(3)下列关于二叉树的叙述中,正确的是(B )。 A)叶子结点总是比度为2的结点少一个 B)叶子结点总是比度为2的结点多一个 C)叶子结点数是度为2的结点数的两倍
D)度为2的结点数是度为1的结点数的两倍
(4)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是( A )。
A)学生成绩管理系统 B)C语言编译程序 C)UNIX操作系统 D)数据库管理系统
(5)某系统总体结构图如下图所示:
该系统总体结构图的深度是(C )。
A)7 B)6 C)3 D)2
(6)程序调试的任务是(D )。
A)设计测试用例 B)验证程序的正确性
C)发现程序中的错误 D)诊断和改正程序中的错误
(7)下列关于数据库设计的叙述中,正确的是( A )。
A)在需求分析阶段建立数据字典 B)在概念设计阶段建立数据字典 C)在逻辑设计阶段建立数据字典 D)在物理设计阶段建立数据字典
(8)数据库系统的三级模式不包括(D )。
A)概念模式 B)内模式 C)外模式 D)数据模式
(9)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是(B )。
A)自然连接 B)差 C)交 D)并
(10)下列选项中属于面向对象设计方法主要特征的是( A )。
A)继承 B)自项向下 C)模块化 D)逐步求精 (11)在对函数进行原型声明时,下列语法成分中,不需要的是( D )。 A)函数返回类型 B)函数参数列表 C)函数名 D)函数体
(12)下列关于this指针的描述中,正确的是( D )。
A)类的成员函数都有this指针 B)类的友元函数都有this指针
C)任何与类相关的函数都有this指针 D)类的非静态成员函数都有this指针
(13)有如下类定义:
class AA{ public:
AA(int n=0):a(n){} };
Class BB::public AA{ public:
BB(int n)__________
其中横线处缺失部分是(B )。
A) :a(n){} B) :AA(n){} C) {a(n);} D) {a=n;}
(14)为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是(B )。 A)+ B)= C)<< D)++
(15)下列关于模板的描述中,错误的是( D )。
A)类模板的成员函数都是模板函数 B)函数模板是一种参数化类型的函数 C)满足一定条件时可以省略模板实参 D)模板形参只能由关键字typename声明
(16)要利用C++流实现输入输出的各种格式控制,必须在程序中包含的头文件是(D )。 A)fstream B)istreara C)ostream D)iomanip
(17)下列选项中,不是C++关键字的是(B )。
A)class B)functi013 C)friend D)virtual
(18)若有定义语句“int i=2,j=3;”,则表达式i/j的结果是(A )。
A)0 B)0.7 C)0.66667 D)0.66666667
(19)下列语句中,与语句“n=(a>b?(b>c?1:0):0);”的功能等价的是(C )。 A)if(a<=b) n=0;
B)if((a>b)||(b>c)) n=1; else n=0;
C)if(a>b)if(b>c) n=1; else n=0; else n=0;
D)if(a>b) n=1;else if(b<=c) n=1; else if(b>c) n=1;else n=0;
(20)有如下语句序列: int x=100,&r=x;
cout< 已知其中变量x的地址为0012FF7C,则执行该语句序列的输出结果为(A )。 A)100-100 B)100-0012FF7C C) 0012FF7C-100 D) 0012FF7C-0012FF7C (21)已知函数f的原型是“void f(int *x,int &y);”,变量v1、v2的定义是“int v1,v2;”,下列调用语句中,正确的是(C )。 A) f(v1,v2) B) f(v1,&v2) C) f(&v1,v2) D) f(&v1,&v2) (22)有如下类定义: class Sample { public: Sample(int x):ref(x){} //① Private: Sample():ref(0){} //② Static int val=5; //③ Const int ref; //④ } 上述程序段中,错误的语句是(C )。 A) ① B) ② C) ③ D) ④ (23)有如下类定义: class B{ public:void fun1(){} private: void fun2(){} protected:void fun3(){} }; class D:public B{ protected:void fun4(){} }; 若obj是类D的对象,则下列语句中不违反访问控制权限的是(A )。 A) obj.fun1( ) B) obj.fun2( ) C) obj.fun3( ) D) obj.fun4( ) (24)有如下类定义: class MyClass { public: __________ private: int data; }; 若要为MyClass类重载流输入运算符>>,使得程序中可以“cin>>obj;”形式输入MyClass类的对象obj,则横线处的声明语句应为(A )。 A) friend istream& operator>>(istream& is,MyClass& a); B) friend istream& operator>>(istream& is,MyClass a); C) istream& operator>>(istream& is,MyClass& a); D) istream& operator>>(istream& is,MyClass a); (25)已知主函数中通过如下语句序列实现对函数模版swap的调用: int a[10,b[10]; swap(a,b,10); 下列对函数模版swap的声明中,会导致上述语句序列发生编译错误的是( B )。 A) template void swap(T a[],T b[],int size); B) template void swap(int size ,T a[],T b[]); C) template (26)若目前D盘根目录下并不存在test.txt文件,则下列打开文件方式不会自动创建test.txt文件的是(A )。 A) ifstream fin; fin.open(“d:\\\\test.txt”,ios_base::in); B) fstream fio; fio.open(“d:\\\\test.txt”,ios_base::out); C) ofstream fout; fout.open(“d:\\\\test.txt”, ios_base::out); D) ofstream fout; fout.open(“d:\\\\test.txt”, ios_base::app); (27)已知类MyClass的定义如下: class MyClass { public: void function1(MyClass& c){ cout< static void function2(MyClass& c){ cout< static void function4(){cout< private: int data; }; 其中有编译错误的函数是(D )。 A) function1 B) function2 C) function3 D) function4 (28)有如下程序:C A) *@#@ B) #@*@ C) *#@@ (29)已知类MyClass的定义如下: class MyClass { public: MyClass(int d) {data=d;} ~MyClass() {} private: int data; }; 下列对MyClass类对象数组的定义和初始化语句中,正确的是(C A) MyClass array[2]; B) MyClass array[2]={MyClass (5)}; C) MyClass array[2]={MyClass (5), MyClass (6),}; D) MyClass* arrays=new MyClass[2]; (30)有如下程序: D) #*@@ )。