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 void swap(T1 a[],T2 b[],int size); D) template void swap(T1 a[],T2 b[],int size); (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< void function3(){cout< static void function4(){cout< private: int data; }; 其中有编译错误的函数是(D )。 A) function1 B) function2 C) function3 D) function4 (28)有如下程序:C A) *@#@ B) #@*@ C) *#@@ D) #*@@ (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)有如下程序: 下列关于程序编译结果的描述中,正确的是(C )。 A) ①②皆无编译错误B)①有编译错误,②无编译错误C) ①无编译错误,②有编译错误D)①②皆有编译错误 (31)有如下程序: 运行时的输出结果是(D )。 A) 1234 B) 2134 C) 12 D) 21 (32)有如下程序: 运行时的输出结果是(B )。 A) 01 B) 21 C) 03 D) 23 (33)若为Fraction类重载前增1运算符++,应在类体中将其声明为(A )。 A) Fraction& operator ++( ); B) Fraction& operator ++(int ); C) friend Fraction& operator ++( ); D) friend Fraction& operator ++(int ); (34)有如下程序: #include #include using namespace std; int main(){ cout< return 0; } 运行时的输出结果是(C )。 A) ***123***456 B) ***123456*** C) ***123456 D) 123456 (35)有如下程序: 下列关于程序运行情况的描述中,正确的是(D )。 A) function1运行1次,function2运行2次 B) function1运行2次,function2运行1次 C) function1运行2次,function2运行3次 D) function1运行2次,function2运行2次 二、填空题(每空2分,共30分) 请将每一个空的正确答案写在答题卡【1】~【15】序号的横线上,答在试卷上不得分。 (1)数据结构分为线性结构与非线性结构,带链的栈属于【线性结构1】。 (2)在长度为n 的顺序存储的线性表中插入一个元素,最坏情况下需要移动表中【n】个元素。 (3)常见的软件开发方法有结构化方法和面向对象方法。对某应用系统经过需求分析建立数据流图(DFD),则应采用【3结构化】方法。 (4)数据库系统的核心是【4数据库管理系统】。 (5)在进行关系数据库的逻辑设计时,E-R图中的属性常被转换为关系中的属性,联系通常被转换为【5关系】。 (6)若有“int x=15,y=20”,则执行表达式y-=x++后,表达式x+y的值为【21】。 (7)执行语句序列“int k=0;do k++;while(k*k<20);”后,k的值为【5】, (8)下列程序运行时的输出结果是【23】。 (9)下列程序运行时的输出结果是【19】。 (10)若Xcs是一个类,该类中具有一个函数体为空的不带参数的构造函数,此构造函数的类外定义为【Xcs::Xcs(){}】。 (11)有如下程序:运行时的输出结果是【4382】。 (12)有如下两个类声明 calss AA { public: int m; }; class BB:protected AA{ int n; }; 在类中,数据成员m的访问属性是【保护】,数据成员n的访问属性是【13公有】。 (13) 已知类Ben中将二元运算符“/”重载为友元函数,若c1、c2是Ben的两个对象,当使用运算符函数进行显示调用时,与表达式c1/c2等价的表示为【14 operator /(c1,c2)】。 (14) C++中模板分为函数模板和【15类模板】。