2009年3月 二级C++真题及参考答案 2009年3月 二级C++真题及参考答案 一、选择题(每小题2分,共70分) (11)对C++编译器区分重载函数无任何意义的信息是 A)参数类型 B)参数个数 C)返回值类型 D)常成员函数关键字coast (12)有如下类定义和变量定义: class A{ publie: A(){data=0;} ~A(){} int GetData ( ) coast { return data;} void SetData(int n) {data=n;} private: int data; }; ccnst A a; A b; 下列函数调用中错误的是 A)a .GetData(); B)a .SetData(10); C)b .GetData(); D)b .SetData(10); (13)有如下类定义和变量定义: class Parents{ public: int publicuata; private: int privateData; }; class ChildA:public Parents{/*类体略*/}; class ChildB:private Parents{/*类体略*/); ChildA a; ChildBb; 下列语句中正确的是 A)cout<
open(“file.dat”); (17)下列描述中,不属于面向对象思想主要特征的是 A)封装性 B)跨平台性 C)继承性 D)多态性 (18)有如下程序段: Tnt i=4;int j=l; int main(){ int i=8,j=i; cout< D){ } (26)当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为 A)ios_base::in B)ios_base::in|ios_base::out C)ios_base::out D)ios_base::in&ios_base::out (27)有如下程序: #include #include using namespace std; class XCD{ char* a; int b; public: XCD(char* aa, int bb){ a=new char[strlen(aa)+1]; strcpty(a,aa); b=bb; } Char* Geta (){return a;) int Getb(){ return b;} }; int main(){ char *pl=“abcd”,*p2=“weirong”; int dl=6, d2=8; XCD x(pl,dl),Y(p2,d2); cout< #include using namespace std; class XCF{ int a; public: XCF(int aa=0):a (aa){cout<<“1”;} XCF(XCF& x){a=x .a; cout<<“2”;) ~XCF(){cout<Geta(); delete pd; return 0; } 运行时的输出结果是 A)121SS88 B)12188SS C)12185 D)128512 (29)已知类MyClass声明如下: class MyClass{ int n; public; MyClass(int k):n(k){} int getValue()const{return n;} }; 在下列数组定义中正确的是 A)MyClass x1[2]; B)MyClass x2[2]={new MyClass(1),new MyClass(2)}; C)MyClass *x3[2]; D)MyClass *x4[2]={MyClass(1),MyClass(2)}; (30)有如下程序: #include using namespace std; class AA{ lilt k; protected: int n; void setK(int k){ this->k=k;} public: void setN(int n){ this->n=n;} }; class BB: public }{/*类体略*/}; int main(){ BB x_ ; //1 x .n=1; //2 x.setN (2); //3 x.k=3; //4 x .setK(4); return 0; } 在标注号码的四条语句中正确的是 A)1 B)2 C)3 D)4 (31)有如下类定义: class XX{ int xx; public: XX():xx(0){cout<<' A';} XX(int n):xx ( n){tout<<' B';} }; Class YY:public XX{ Int yy; public: YY():yy ( 0){cout+yy;} YY(int n):XX(n+1),yy(n){cout< Using namespace std; class A{ public: virtual void f(){cout+1;} void g(){cout<<2;} }; class B:public A{ public: virtual void f(){cout<<3;} void g(){ecut<<4;} }; void show(A &a){a.f();a.g( );} int main(){ B b; show(b); return 0; } 运行时的输出结果是 A)12 B)34 C)14 D)32 (33)有如下程序: #include using namespace std; class Pair{ int m; int n; public: Pair(int i,int j):m(i),n(j){} boot operator >(pair p)const; //须在类体外给出定义 }; int main(){ Pair Al(3,4),p2(4,3);p3(4,5); Cout<<(pl>p2)<<(P2>P1)<<(p2>p3)<<(p3>p2); return 0; } 运算符函数。operator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是 A)bool Pair::operator>(Pair p)const {if (m!=p.m) return m>p.m; return n>p.n;} B)bool Pair:;operator>(Pair p) {if (m!=p.m) return m>p.m; return n>p.n;} C)bool Pair::operator>(Pair p)const {if (m>p.m) return true; return n>p.n;} D)bool Pair:;operator>(Pair p) {if (m>p.m) return true; return n>p.n;} (34)假定下列语句都是程序运行后首次执行的输出语句,其中输出结果与另外三条语句不同的语句是 A)cout< using namespace std; class ONE{ int c; public: ONE():c(0){cout<<1;} ONE(int n):c (n){cout<<2;} }; class TWO{ ONE onel; ONE one2; public: TWO(int m):one2(m){cout<<3;} }; int main()t TWO t(4) return 0 } 运行时的输出结果是 A)3 B)23 C)123 D)213 二、填空题(每空2分,共30分) (6)有如下程序段: int x=1,Y=2,z=3; x=x^z; y=y^z; z=x^y; cout< using namespace std; class Monitor{ public: Monitor(char t):type (t){} void print( ) const {cout<<“The type of monitor is”< using namespace std class Animal{ public: virtual char* getType()const { return “Animal”;} virtual char* getVoice()const { return “Voice”;} }; Class Dog : public Animal { public: char* getType ( ) const {return “Dog”;} char* getVoice ( ) const {return “Woof”} }; void type(Animal& a) {cout< //Type为类型参数 class Xtwo{ //由两个Type类型的数据成员构成的模板类 Type a; Type b; public: Xtwe(Type aa=0, Type bb=0):a(aa),b(bb){} int Ccmpare (){//比较a和b的大小 if (a>b)returm 1; else if(a==b) return 0; else return -1; } Type Snm() {return a+b;} //返回a和b之和 Type Mult(); //函数声明,返回a和b之乘积 }; Template 【15】::Mult(){return a*b;} //Mult 函数的类外定义 参考 答案 一、 选择题: (11)D (12)B (13)A (14)B (15)B (16)A (17)B (18)C (19) A (20)D (21)D (22)B (23)A (24)B (25)C (26)B (27)A (28)B (29)C (30)B (31)D (32)D (33)C (34)C (35)B 二、填空题 (6)213 (7)15,30,45 (8)examination(9)10 (10)友元 (11)id(i),mom(c) (12)Dog speak Woof (13)Virtual double Area(){ return PI *r*r} (14)return *a (15)Xwo