[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc

上传人:outsidejudge265 文档编号:497732 上传时间:2018-11-30 格式:DOC 页数:24 大小:61.50KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc_第1页
第1页 / 共24页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc_第2页
第2页 / 共24页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc_第3页
第3页 / 共24页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc_第4页
第4页 / 共24页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷20及答案与解析.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、国家二级 C+机试(类和对象)模拟试卷 20及答案与解析 一、选择题 1 下列关于 this指针的描述中,正确的是 ( )。 ( A)类的成员函数都有 this指针 ( B)类的友元函数都有 this指针 ( C)任何与类相关的函数都有 this指针 ( D)类的非静态成员函数都有 this指针 2 有如下程序: #include iostream using namespace std; class Test public: Test() n+=2; Test()n-=3; static int getNum0return n; private: static int n; ; int Te

2、st: n=1; int main() Test*p=new“rest; delete p; tout n= Test: getNum() end1; return 0; 执行后的输出结果是 ( )。 ( A) n=0 ( B) n=1 ( C) n=2 ( D) n=3 3 有如下程序: #include iostream using namespace std; class Obj static int i; public: Obj()i+; Obj()i-; static hat getVal()return i; ; int Obj: i=0; void f()Obj ob2; cou

3、t ob2 getVal(); int main() Obj ob1; f(); Obj*ob3=new Obj; cout ob3- getVal q(); delete ob3; cout Obj: getVal(); return 0; 程序的输出结果是 ( )。 ( A) 232 ( B) 231 ( C) 222 ( D) 221 4 有如下程序: #include iostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()ret

4、urn count; private: static int count; ; int MyClass: count=0; int main() MyClass obj; cout obj getCount(); MyClass*ptr=new MyClass; cout MyClass: getCount(); delete ptr; cout MyClass: getCount(); return 0; 程序的输出结果是 ( )。 ( A) 121 ( B) 232 ( C) 221 ( D) 122 5 有如下类定义: class Point private; static int ho

5、w_many; ; _how_many=0; 要初始化 Point类的静态成员 how_many,下划线处应填入的内容是 ( )。 ( A) ing ( B) static int ( C) int Point: ( D) static int Point: 6 有如下类和对象的定义: class Constants public; static double getPl()return 3 1416; ; Constants constants; 下列各组语句中,能输出 3 1416的是 ( )。 ( A) cout constants- getPI();和 cout Constants:

6、gerPI(); ( B) cout constants getPI();和 cout Constants getPI(); ( C) cout constants- getaI();和 cout Constants- getPI(); ( D) cout constants getPI();和 cout Constants: getPI(); 7 若 AA为一个类, a为该类的非静 态数据成员,在该类的一个成员函数定义中访问 a时,其书写格式为 ( )。 ( A) a ( B) AA a ( C) a ( D) AA: a 8 有如下类定义: class Sample public; Sam

7、ple(int x): ref(x) private: Sample(): ref(0) static int val=5; const int ref; ; 上述程序段中,错误的语句是 ( )。 ( A) ( B) ( C) ( D) 9 已知类 Myclass的定义如下 class MyClass public: void function1(MyClass const Fun fun2; return 0; 若程序的输出结果是: 123 则程序中下划线处遗漏的语句是 ( )。 ( A) cout fun1 value() Fun: i fun2 value(); ( B) cout Fu

8、n: i fun1 value() fun2 value(); ( C) cout fun 1 value()fun2 value() Fun: i; ( D) cout fun2 value() Fun: i fun1 value(); 13 有如下程序: #include iostream using namespace std; class VAC public; int f() constreturn 3; int f() return 5; ; Int main() VAC v1; const VAC v2; cout v1 f() v2 f(); fetum 0; 运行时的输出结果

9、是 ( )。 ( A) 53 ( B) 35 ( C) 55 ( D) 33 14 有如下程序: #include iostream using namespace std; class MyClass public: MyClass(int x): Val(x) void Set(int x)val=x; void Print()constcout val= val t; private: int val; ; int main() const MyClass obj 1(10); MyClass obj2(20); obj1 Print(); 语句 1 obj2 Print(); 语句 2

10、 obj1 Set(20);语句 3 obj2 Set(30);语句 4 return 0; 其 主函数中错误的语句是 ( )。 ( A)语句 1 ( B)语句 2 ( C)语句 3 ( D)语句 4 15 有如下类定义和变量定义: class A public: A()data=0; A() int GetData() constreturn data; void SetData(int n) data=n; priyate: int data; ; const A a; A b; 下列函数调用中错误的是 ( )。 ( A) a GetData(); ( B) a SetData(10);

11、( C) b GetData(); ( D) b SetData(10); 16 有如下程序: #include iostream Using namespace std; class A public: A(int i): r1(i) vgid print() cout E r1 -; void print() const cout C r1*r1 -; private: int r1; ; int main() A a1(2); const A a2(4); a1 print(); a2 print(); return 0; 运行时的输出结果是 ( )。 ( A)运行时出错 ( B) E2

12、-C16- ( C) C4-C16- ( D) E2-E4- 17 有如下程序: #include iostream using namespace std; class A public: A(int i=0): r1(i) void print()cout E r1 -; void print()constcout C r1*r1 -; void print(int x)cout p r1*r1*r1 -; private: int r1; ; mt main() A a1; const A a2(4); a1 print(2); a2 print(); return 0; 运行时的输出结

13、果是 ( )。 ( A) P8-E4 ( B) P8-C16- ( C) P0-E4- ( D) P0-C16- 18 某类中有一个无参且无返回值的常成员函数 Show,则正确的 Show函数原型是( )。 ( A) const void Show(); ( B) void const Show(); ( C) void Show()const; ( D) void Show(const); 19 已知类 IMS中两个成员函数的声明为 “void listen()const; ”与 “void speak(); ”,另有两个对象的定义为 “IMS obj1; ”与 “const IMS obj

14、2; ”,则下列语句中,产生编译错误的是 ( )。 ( A) obj1 listen(); ( B) obj1 speak(); ( C) obj2 listenO; ( D) obj2 speak(); 20 已知函数 print()没有返回值, 如果在类中将之声明为常成员函数,正确的是( )。 ( A) voidprint()const; ( B) constvoidprint(); ( C) void const print(); ( D) void print(const); 21 有如下类定义: class Test char a; const char b; public: Tes

15、t(char c)a=c; b=c; 第 1行 void f(char a)constthis- a=a; 第 2行 void g(char b)this- b=b; 第 3行 char h() constreturn a; 第 4行 ; 编译时没有错误的行是 ( )。 ( A)第 1行 ( B)第 2行 ( C)第 3行 ( D)第 4行 22 有如下类定义: class AA int a; public; int getRef()constreturn&a; int getValue()constreturn a; void set(int n)consta=n; friend void

16、show(AA aa)constcout a; ; 其中的四个函数定义中正确的是 ( )。 ( A) ( B) ( C) ( D) 23 有如下程序: #include iostream using namespace std; class Sample friend long fun(Sample s); public: Sample(long a)x=a; private: long x; ; long fun(Sample s) if(s x 2) return 1: return s x*fun(Sample(s x-1): int main() int sum=0; for(int

17、i=0; i 6; i+)sum+=fun(Sample(i); cout sum; return 0; 运行时输出的结果是 ( )。 ( A) 120 ( B) 16 ( C) 154 ( D) 34 24 有如下程序: #include iostream #include cmath using std: cout; class Point public: Mend double distance(const Point&p); p距原点的距离 Point(int xx=0, int yy=0): x(xx), y(yy) private: int x, y; ; double dista

18、nce(const Point&p) return sqrt(p x*p x+p y*p y); int main() Point p1(3, 4); cout distance(p1); return 0; 下列叙述中正确的是 ( )。 ( A)程序编译正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 出错 25 有如下程序: #include iostream using namespace std; class Boat; class Car public: Car(int i): weight(i) Mend int Total(const Ca

19、r&c, const Boat&b); private: int weight; ; class Boat public: Boat(int i): weight(i) Mend int Total(const Car&c, const Boat&b); private: int weight; ; int Total(const Car&c, const Boat b) return c weight+b weight; int main() Car c(10); Boat b(8); cout The total weight is Total(c, b) endl; return 0;

20、下列关于程序的描述中,正确的是 ( )。 ( A)程序编译正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 出错 26 已知类 MyClass声明如下: class MyClass int n; public: MyClass(int k): n(k) int getValueoconst return n; ; 在下列数组定义中正确的是 ( )。 ( A) MyClass x12; ( B) MyClass x22=new MyClass(1), new MyClass(2); ( C) MyClass*x32; ( D) MyClass*x42=My

21、Class(1), MyClass(2); 27 已知类 Myclass的定义如下: class MyClass public: MyClass(int d)data=d; MyClass () private: int data; ; 下列对 Myclass类对象数组的定义和初始化语句中,正确的是 ( )。 ( A) MyClass arrays2; ( B) MyClass arrays2=MyClass(5); ( C) MyClass arrays2=MyClass(5), MyClass(6); ( D) MyClass * arrays=new MyClass2; 国家二级 C+机

22、试(类和对象)模拟试卷 20答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 this是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针可以知道自己属于哪一个对象,它隐藏于每个类的非静态成员函数中。 【知识模块】 类和对象 2 【正确答案】 A 【试题解析】 此题考查的是静态数据成员和静态成员函数。静态数据成员是类中所有对象共享的成员,而不是某个对象的成员。题目中的静态数据成员 n的 运算具有叠加性,执行 “n+=2”和 “n-=3”后 n的值为 0。 【知识模块】 类和对象 3 【正确答案】 D 【试题解析】 此题考查的是静态成员。本题中, Obj类定义了一个静态数

23、据成员i,并初始化为 0在主函数中,首先定义了 1个该类对象 ob1,所以构造函数被调用 1次, i加 1;然后调用函数 f(),该函数中又定义了一个对象 ob2,此时 i再次加 1变为 2,然后通过函数 getVal()揄出 i的值 2。 f()函数结束, ob2变量被释放,故析构函数被调用了 1次, i变成 1;回到主函数中,又动态创建了 1个对象并让ob3指向它,此后 i变成 2并输出。最后释放动态创建的对象 i变为 1,输出 1。故最终的输出结果是 221。 【知识模块】 类和对象 4 【正确答案】 A 【试题解析】 此题考查的是静态成员。静态成员的特性是不管这个类创建了多少对象,它的

24、静态成员都只有一个拷贝副本,这个副本被所有属于这个类的对象共享。题目中,首先定义了 obj对象,其构造函数使静态数据成员 cout增 1,故输出 “1”;然后通过指针动态创建了 Myclass类的对象,构造函数被再次调用, count变为 2,输出 “2”;接着删除创建的 MyClass类的对象,调用析构函数, count减 1变为 1,输出 “1”。故最终输出结果是 121。 【知识模块】 类和对象 5 【正确答案】 C 【试题解析】 此题考查的是静态数据成员的初始化。静态数据成员应在类体外进行初始化,且初始化的一般格式为:数据类型类名:静态数据成员名 =初始值。 【知识模块】 类和对象 6

25、 【正确答案】 D 【试题解析】 此题考查的是静态成员函数的引用。 getPI()是类 C0nstants的静态成员函数。引用静态成员函数可以有两种形式:一是通过类名直接进行调用, 例如类名:静态成员函数名;另一种是用类的任何对象名进行调用其作用仅是通过对象名间接的指出类名,例如 constants getPI()选项 D即是这种调用方式。 【知识模块】 类和对象 7 【正确答案】 A 【试题解析】 类 AA的成员函数直接引用类 AA的非静态数据成员。 【知识模块】 类和对象 8 【正确答案】 C 【试题解析】 静态整型数据不能定义为类的数据成员。 【知识模块】 类和对象 9 【正确答案】 D

26、 【试题解析】 funcyion4()函数作为类的静 态成员函数,不能直接访问类中说明的非静态成员,即 cout data在编译时会出错。 【知识模块】 类和对象 10 【正确答案】 C 【试题解析】 在类 XA的构造函数中,定义了用成员变量 a的值初始化变量 aa,同时静态成员变量 b值加 1。所以当在主 main函数中定义类 xA的对象 d1(4)后,变量 b的等于 1,定义对象 d2(5)后,变量 b的值等于 2,所以表达式d1 getA()+d2 getA(): b+d1 b等于 4+5+1+2+1=13。 【知识模块】 类和对象 11 【正确答案】 A 【试题解析】 此题考查的是常对

27、象与常成员函数的概念。使用 const关键字修饰的对象称为常对象,它不能被更新,所以常对象只能调用常成员函数而不能调用其它成员函数;使用 const关键字声明的成员函数是常成员函数,它也不能被更新,常成员函数只能调用常成员函数而不能调用其它函数。 【知识模块】 类和对象 12 【正确答案】 A 【试题解析】 此题考查的是常成员函数。 const关键字可以用于参与重载函数的区分,此时常对象调用常成员函数,一般对象调用一般成员函数,当类中只有一个常成员函数时,一般 对象也可以调用该常成员函数。本题中,通过 fun1调用value()函数时,是调用前一个,而通过 fun2调用 value()函数是调

28、用后一个;另外, value()函数中访问的 i是类中定义的数据成员 i,全局变量 i在类中被 “屏蔽 ”。 fun1 value()输出 i-1=2-1=1; fun2 value()调用后一个 value()函数输出i+1=2+1=3; Fun: i是通过类名直接访问类的静态数据成员 i的值,即 2;所以正确的输出顺序是 A选项。 【知识模块】 类和对象 13 【正确答案】 A 【试题解析 】 此题考查的是常成员函数的应用。 VAC类中说明了两个函数,一个是常成员函数,一个是普通函数;在主函数中说明了两个对象,通过普通对象v1调用的是普通函数,输出 5:通过常对象 V2调用的是常成员函数,

29、输出 3。 【知识模块】 类和对象 14 【正确答案】 C 【试题解析】 在创建类对象 obj1(10)时,前面有关键字 const,所以当语句 3调用 obj1的成员函数试图修改其私有成员的数值的时候,会编译出错。 【知识模块】 类和对象 15 【正确答案】 B 【试题解析】 由题意可知 a为 常对象,因为常对象不能被更新,所以通过这个常对象只能调用它的常成员函数 GetData(),而不能调用其他成员函数 SetData(10),因而选项 B为本题的正确答案。 【知识模块】 类和对象 16 【正确答案】 B 【试题解析】 类 A包括一个整型数据成员 r1,一个一般成员函数 print(),

30、一个常成员函数 print()const。在主函数中定义了对象 a1,并对 r1的值赋 2和常对象a2,并对 r1的值赋 4,在 C+中,常对象不能被更新,所以常对象只能调用类的常成员函数,而不能调用一般成员函数。而一 般的对象,既可以调用一般成员函数也可以调用常成员函数。所以在本题中,当执行 a1 print()时,输出为 E2-,执行 a2 print()时,输出为 c16-。 【知识模块】 类和对象 17 【正确答案】 D 【试题解析】 在主函数中创建 a1对象时,调用类 A的默认构造函数,其数据成员 r1的值等于 0。当执行 a1 print(2)语句时,调用带参数的 print成员函

31、数,所以输出结果为 p0-对象 a2为常成员,所以其成员变量 r1的值等于 4,因为常对象只能调用常成员函数,所以当执行语句 a2 print()语句时,输出结果为 C14。 【知识模块】 类和对象 18 【正确答案】 C 【试题解析】 常成员函数的说明格式如下:返回类型成员函数名 (参数表 )const;,所以对于本题来说无参且无返回值的常成员函数 show,其正确的函数原型是选项 C。 【知识模块】 类和对象 19 【正确答案】 D 【试题解析】 函数 listen()作为类 IMS的常成员函数,一般对象 obj1和常对象obj2都可以调用它,而函数 speak()作为 IMS的一般成员函

32、数,则只有一般对象obj1可以调 用,而常对象 obi2调用会产生编译错误。 【知识模块】 类和对象 20 【正确答案】 A 【试题解析】 const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义 const成员函数时,把 const关键字放在函数的参数表和函数体之间。 【知识模块】 类和对象 21 【正确答案】 D 【试题解析】 类 Test中的常成员函数 h()返回数据成员 a的值。 【知识模块】 类和对象 22 【正确答案】 B 【试题解析】 此题考查了常成员函数和友元函数的概念 。选项 A中, getRef()函数的返回值和函数函数类型不符,故错误; C选项中 se

33、t()常成员函数改变了数据成员的值,这是不允许的: D选项中 show()函数被同时定义成友元函数和常成员函数是错误的。 【知识模块】 类和对象 23 【正确答案】 C 【试题解析】 此题考查的是友元函数和递归函数。因为 fun函数是 Sample类的友元函数,所以 fun函数可以直接访问 Sample类对象的私有成员 x。主函数调用fun函数,构造参数为 0 5。当 n小于 2时, fun函数返回 1,其余返回值为n*fun(n-1)。 n取 0 5的值时 fun(n)依次为 1, 1, 2, 6, 24, 120,累加结果为154。 【知识模块】 类和对象 24 【正确答案】 A 【试题解

34、析】 这段程序是正确的,计算 p距离原点的距离。语句 是类 Point的构造函数,在构造函数中给变量 xx和 yy赋初值 0。语句 是计算点 p距原点的距离的函数 distance。语句 是计算点 p1距离原点的距离并输出。 【知识模块】 类和对象 25 【正确答案】 A 【试题解析】 程序中定义了类 Car和类 Boat,在两个类中分别定义他们的构造函数 和友元函数 friend。程序在 VC6 0中编译通过。 【知识模块】 类和对象 26 【正确答案】 C 【试题解析】 考查韵是对象数组。选项 A中在建立对象数组时也同样需要调用构造函数:选项 B和 D的类型不匹配, B中不能将指针传给非指针, D中是将非指针传给指针。 【知识模块】 类和对象 27 【正确答案】 C 【试题解析】 在选项 C中定义了类 MyClass对象数组 arrays2,并用对象MyClass(5)和 MyClass(6)对这个数组中的两个元素赋初值。 【知识模块】 类和对象

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1