2011年9月全国计算机等级考试二级笔试C++语言程序设计 一、选择题
(1)下列叙述中正确的是( )。
A) 算法就是程序 B) 设计算法时只需要考虑数据结构的设计 C) 设计算法时只需要考虑结果的可靠性 D) 以上三种说法都不对 (2)下列关于线性链表的叙述中正确的是( )。
A) 各数据结点的存储空间可以不连续但它们的存储顺序与逻辑顺序必须一致 B) 各数据结点的存储顺序与逻辑顺序可以不一致但它们的存储空间必须连续 C) 进行插入与删除时不需要移动表中的元素 D) 以上三种说法都不对
(3)下列关于二叉树的叙述中正确的是( )。
A) 叶子结点总是比度为2的结点少一个 B) 叶子结点总是比度为2的结点多一个 C) 叶子结点数是度为2的结点数的两倍
D) 度为2的结点数是度为1的结点数的两倍 (6)程序调试的任务是( )。
A) 设计测试用例 B) 验证程序的正确性
C) 发现程序中的错误 D) 诊断和改正程序中的错误
(11)在对函数进行原型声明时下列语法成分中不需要的是( )。 A) 函数返回类型 B) 函数参数列表 C) 函数名 D) 函数体 (12)下列关于this指针的描述中正确的是( )。
A) 类的成员函数都有this指针 B) 类的友元函数都有this指针
C) 任何与类相关的函数都有this指针 D) 类的非静态成员函数都有this指针 (13)有如下类定义 class AA{ int a; public:
AA(int n=0):a(n){} }
class BB:public AA{ public:
BB(intn)______ };
其中横线处缺失部分是( )。
A) :a(n){} B) :AA(n){} C) {a(n);} D) {a=n;)
(14)为类Matrix重载下列运算符时只能作为Matrix类成员函数重载的运算符是( )。 A) + B) = C) << D) ++ (15)下列关于模板的描述中错误的是( )。
A) 类模板的成员函数都是模板函数 B) 函数模板是一种参数化类型的函数
C) 满足一定条件时可以省略模板实参 D) 模板形参只能由关键字typename声明 (16)要利用C++流实现输入输出的各种格式控制必须在程序中包含的头文件是( )。 A) fstream B) istreara C) ostream D) iomanip (17)下列选项中不是C++关键字的是( )。
1
A) class B) function C) friend D) virtual
(18)若有定义语句“int i=2, j=3;”则表达式i/j的结果是( )。 A) 0 B) 0.7 C) 0.66667 D) 0.66666667
(19)下列语句中与语句“n=(ab?(bc?1:0):0);”的功能等价的是( )。 A) if(a=B) n=0
B) if((aB) ||(bC) )n=1; else n=0
C) if(aB) if(bC) n=h else n=0; else n=0;
D) if(aB) n=1; else if(b=C) n=1; else if(bC) n=1; else n=0; (20)有如下语句序列 int x=100, &r=x;
cout< 己知其中变量x的地址为0012FF7C则执行该语句序列的输出结果为( )。 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;”下列调用语句中正确的是( )。 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 va1=5; //③ const int ref; //④ }; 上述程序段中错误的语句是( )。 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) obj. fun1(); B) obj. fun2(); C) obj. fun3(); D) obj. fun4(); (24)有如下类定义 class MyClass public: Private: int data; 2 }; 若要为MyClass类重载流输入运算符使得程序中可以“cinobj;”形 式输入MyClass类的对象obj则横线处的声明语句应为( )。 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的声明中会导致上述语句序列发生编译错误的是( )。 A) template void swap(T a[], T b[], int size); B) template void swap(T1 a[], T2 b[], int size); (26)若目前D盘根目录下并不存在test. txt文件则下列打开文件方式不会 自动创建test.txt文件的是( )。 A) ifstream fin; fin. open(\ B) fstream fio; fio. open(\test. txt”, ios_base::out); C) ofstream fout; fout. open(\test. txt”, ios_base::out); D) ofstream fout; fout. open(\test. txt”, ios_base::app); (27)已知类Myclass的定义如下 class MyClass{ public: void function1(MyClass& C) {coutc. data) static void function2(MyClass& C) {cout< static void function4(){cout< private: int data; }; 其中有编译错误的函数是( )。 A) function1 B) function2 C) function3 D) function4 (28)有如下程序 #includeiostream using namespace std; class MyClass{ public: MyClass() {cout<<'*';) MyClass(MyClass& A) {cout<<'#';) ~MyClass() {cout<<'@';) 3 }; int main(); MyClass a; Myclass b(A) ; return 0; } 运行时的输出结果是( )。 A) *@#@ B) #@*@ C) *#@@ D) #*@@ (29)已知类Myclass的定义如下 class MyClass{ public: MyClass(int D) {data=d;} ~MyClass (){} int data; }; 下列对Myclass类对象数组的定义和初始化语句中正确的是( )。 A) MyClass arrays[2]; B) MyClass arrays[2]={MyClass(5)}; C) MyClass arrays[2]={MyClass(5), MyClass(6)}; D) MyClass*arrays=new MyClass[2]; (30)有如下程序 class Base{ public: int data; }; class Derived1:public Base{}; class Derived2:protected Base{}; int main(){ Derived1 d1; Derived2 d2; d1. data=0; //① d2. data=0; //② return 0; } 下列关于程序编译结果的描述中正确的是( )。 A) ①②皆无编译错误 B) ①有编译错误②无编译错误 C) ①无编译错误②有编译错误 D) ①②皆有编译错误 (31)有如下程序 #includeiostream using namespace std; class Base1{ public: Base1(int D) {coutd;} 4 ~Base1(){} }; class Base2{ public: Base2(int D) {coutd;} ~Base2 (){} }; class Derived:public Base1, Base2{ public: Derived(int a, int b, int c, int D) ; Base1(B) , Base2(A) , b1(D) , b2(C) {} Private: int b1; www.docin.comint b2; }; int main(){ Derived d(1, 2, 3, 4); return 0; } 运行时的输出结果是( )。 A) 1234 B) 2134 C) 12 D) 21 (32)有如下程序 #includeiostream using namespace std; class Base{ public: virtual void function1(){cout<<'0';} void function2(){cout<<'1';} }; class Derived:public Base{ public: void function1(){cout<<'2';} void function2(){cout<<'3';} }; int main(){ Base*P=new Derived(); p ->function1() p->function2() return 0; }; 运行时的输出结果是( )。 A) O1 B) 21 C) 03 D) 23 (33)若为Fraction类重载前增1运算符++A) Fraction& operator++(); B) Fraction& operator++(int) 应在类体中将其声明为( )。5
2011年9月及2012年3月全国计算机等级考试二级C++真题



