2007年9全国计算机等级考试二级笔试试卷
一、选择题(每小题2分,共70分)
(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 A
A auto B extem C register D static (12)对于一个类定义,下列叙述中错误的是 B
A 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数
B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数 D 如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数 (13)如果派生类以public方式继承基类,则原基类的protected成员和public成员在派生类中的访问类型分别是 D
A public和 public B public和protected
C protected 和 public D protected 和 protected (14)下列运算符函数中肯定不属于类FunNumber的成员函数的是 D A int operator-(FunNumber) B FunNumber operator-() C FunNumber operator-(int) D int operator – (FunNumber) (15)C++中的模板包括 C
A 对象模板和函数模板 B 对象模板和类模板 C 函数模板和类模板 D 变量模板和对象模板 (16)如果调用C++流进行输入输出,下面的叙述中正确的是 A
A 只能借助于流对象进行输入输出 B 只能进行格式化输入输出
C 只能借助于cin和cout进行输入输出 D 只能使用运算符 》和《 进行输入输出 (17)下列符号中不属于C++关键字的是 D
A friend B namespace C continue D byte (18)下列各组的量申明中,含义相同的一组是 B
A unsigned long int 和 long B signed short int 和 short B unsigned short 和 short D short int 和int (19) 必须用一对打括号括起来的程序段是 D
A switch 语句中的case标号语句 B if 语句的分支 C 循环语句的循环体 D 函数的函数体
(20)语句的int*p=&k定义于指针P,于这个语句等效的语句序列是 A A int*p;p=&k B int*p;p=k C int*p;*p=&k D int*p;*p=k (21)关于函数重载,下列叙述中错误的是 C A 重载函数的函数名必须相同
B 重载函数必须在函数个数或类型上有所不同 C 重载函数的返回值类型必须相同 D 重载函数的函数体可以有所不同 (22)有如下头文件
Int f1();
Static int f2(); Class MA{ Public
Int f3();
Static int f4();(静态函数) };
在所描述的函数中,具有隐含的this指针的是 C
A f1 B f2 C f3 D f4 (23)派生类的成员函数不能访问基类的 C
A 共有成员和保护成员 B 共有成员 C 私有成员 D 保护成员 (24)下列关于运算符重载的描述中,正确的是 A
A 运算符重载为成员函数时,若参数表中五参数,重载的是一元运算符 B 一元运算符只能作为成员函数重载
C 二元运算符重载为非成员函数时,参数表中有一个参数 D C++中可以重载所有的运算符
(25)下列关于类模板的模板参数的叙述中,错误的是 D A 模板参数可以作为数据成员的类型 B 模板参数可以作为成员函数的返回类型 C 模板参数可以作为成员函数的参数类型
D 模板函数不能作为成员函数的局部变量的类型 (26)已知一程序运行后执行的第一个输出操作是 B Cout< A 1234 B ******1234 C **********1234 D 1234****** (27)有如下程序 #include MyClass(){++count;} ~MyClass(){--count;} Static int getcount(){return count;} Private Static int count; }; Int MyClass::count=0; Int main(){ Myclass obj; Cout< MyClass*ptr=new MyClass; Cout< Delete ptr; Cout< 程序的输出结果是 A A 121 B 232 C 221 D 122 程序的输出结果是 C A val=10 const:val=20 B const:val=10 const:val=20 C const:val=10 val=20 D val=10 val=20 (29)有如下程序 #include Part(int x=(\\):val(x){cout< Class whole{ Public; Whole(int x,int y,int z=0):p2(x),p1(y),val(z){cout< Part p1,p2; Int val; }; Int maint{ Whole obj(1,2,3); Resturn(); } 程序输出的结果是 D A 123321 B 213312 C 213 (30) 有如下程序: #include Base(int x=0){cout< Class derived : public base{ Public: Derivedrin(x=y){cout< Base val; }; Int main(){ Derived d(!); Return(); } 程序的输出结果是 C A 0 B 1 C 01 D 001 (31)若有如下类定义: Classs B { Void fun1(){} Protected; Double varl; Public: Void fun2(){} }; Class D:public B{ Protected; Void fun3(){} }; 已知obj是类D的对象,下列语句中不违反成员访问控制的权限的是 C A obj.fun1(); B obj.var1; C obj.fun2(); D obj.fun3(); (32)有如下程序: #include Void output(){cout<<1;} Virtual void print() {cout< }; Class derived:public base{ Public: Void output(){cout<<2;} Void print(){cout<<’D’;} }; Int main() Base * passnew derived; Ptr->output(); Ptr->print(); Delete ptr; Return(); } 程序的输出结果是 D A 1B B 1D C 2B D 2D 33.下列是重载乘法运算的函数原型声明,其中错误的是 A A myclass operator*(double,double); B myclass operator*(double,myclass); C myclass operator*(myclass,double); D myclass operator*( myclass , myclass); *是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的 34.A (35) 有如下程序: #include virtual void show(){cout<<\ }; class D:public B { public: void show(){cout<<\ };
全国计算机二级C++等级考试真题及答案



