版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2009 年全国计算机等级考试二 级 C+笔试试题2009年3月 二级C+真题及参考答案一、选择题(每小题2分, 共70分)(11) 对C+编译器区分重载函数无任何 意义的信息是A) 参数类型B) 参数个数C) 返回值类型D) 常成员函数关键字coast(12) 有如下类定义和变量定义:class Apublic:A () data=0;A () int GetData ( ) coast return data; void SetData (int n) data=n; private:int data;;ccnst Aa;A b;下列函数调用中错误的是A) a .GetData ();B)
2、 a .SetData (10);C) b .GetData ();D) b .SetData (10);(13) 有如下类定义和变量定义:class Parentspublic:int publicuata;private:int privateData;class ChildA:public Parents/*类体略*/;class ChildB:private Parents/*类体略*/);ChildAa;ChildBb;下列语句中正确的是A) couta.publicData endl;B) couta.privateData endl;C) coutb.publicData end
3、l;D) coutb.privateData endl;(14) 运算符重载时不需要保持的性质是A) 操作数个数B) 操作数类型C) 优先级D) 结合性(15) 下列关于函数模板的描述中,错误 的是A) 从模板实参表和从模板函数实参表 获得信息矛盾时,以模板实参的信息为准B) 对于常规参数所对应的模板实参, 任何情况下都不能省略C) 虚拟类型参数没有出现在模板函数 的形参表中时,不能省略模板实参D) 模板参数表不能为空(16) 要建立文件流并打开当前目录下的 文件file.dat用于输入,下列语句中错误 的是A ) ifstream fin=ifstream.open (“file.dat);
4、B ) ifstream*fir.=new ifstream(“file.dat);C) ifstream fin; fin.open (“file.dat);D) ifstream *fin=new ifstream ( ); fin 一open (“file.dat);(17) 下列描述中,不属于面向对象思想 主要特征的是A) 封装性B) 跨平台性C) 继承性D) 多态性(18) 有如下程序段:Tnt i=4;int j=l;int main ( ) int i=8, j=i;coutijendl;运行时的输出结果是A) 44B) 41C) 88D) 81(19) 有如下程序段:int i
5、=5;while (int i=0) cout运行时输出“好的个数是A) 0B) 1C) 5D) 无穷(20) 己知有数组定义char a|3|4|;下列表达式中错误的是A) a2=“WINB) slrcpy (a|2|, “WIN”)C) a|2H3=WD) a|01|ll=a|0|l|(21) 已知函数fun的原型为int fun (int,int,int);下列重载函数原型中错误的是A) char fun (int,int);B) double fun (int,int,double);C) int fun (int,char*);D) float fun (int, int, int)
6、;(22) 建立一个类对象时,系统自动调用A) 析构函数B) 构造函数C) 静态函数D) 友元函数(23) 通过派生类的对象可直接访问其A) 公有继承基类的公有成员B) 公有继承基类的私有成员C) 私有继承基类的公有成员D) 私有继承基类的私有成员(24) 己知表达式+a中的“+是作为成 员函数重载的运算符,则与十+a等效的运 算符函数调用形式为A) a .orerator-H- (1)B) operator+ (a)C) operator+ (a, I)D) a.operator+ ()(25) 在定义一个类模板时,模板形参表 是用一对括号括起来的,所采用的括号是A) ()B) IIC) D
7、) (26) 当使用ifstream流类定义一个流对 象并打开一个磁盘文件时,文件的默认打 开方式为A) ios_base:inB) ios_base:in|ios_base:outC) ios_base:outD) ios_base:in&io_bae:out(27) 有血下程序:# include# include using namespace std;class XCDchar* a;int b;public:XCD (char* aa, int bb) a=new char|strlen (aa) +1|; strcpty (a,aa); b=bb;Char* Geta ( ) re
8、turn a;)int Getb ( ) return b;;int main ( ) char *pl=abcd”,*p2=uweirongM; int dl=6, d2=8;XCDx (pl,dl), Y (p2, d2); coutstrien (x .Geta ( ) +y Getb ()+endl;return 0;运行时的输出结果是A) 12B) 16C) 14D) 11(28) 有如下程序:# include# include using namespace std;class XCFint a;public:XCF (int aa=0): a (aa) coutwlw;XCF(
9、 XCF& x )a=x .a; cout “ 2;”) XCF () couta; int Geta() return a;int main() XCF dl (5),d7 (dl);XCF *pd=new XCF (8);coutGeta();delete pd;return 0;运行时的输出结果是A)121SS88B)12188SSC)12185D)128512(29)已知类 MyClass 声明如下:class MyClassint n;public;MyClass( int k): n( k) int getValue() constreturn n; ;在下列数组定义中正确的是A)
10、MyClass x12;B)MyClass x22=new MyClass(1), new MyClass( 2);C)MyClass *x32;D ) MyClass *x42=MyClass (1), MyClass(2);(30)有如下程序:#includeusing namespace std;class AAlilt 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_ ; /1x .n=1;/2x
11、.setN (2);/3x.k=3;/4x .setK( 4);return 0; 在标注号码的四条语句中正确的是A)1B)2C)3D)4( 31)有如下类定义:class XXint xx;public:XX ():xx( 0) cout A;XX ( int n):xx ( n)tout B; ;Class YY:public XXInt yy;public:YY ():yy ( 0)cout+yy;YY (int n):XX ( n+1 ), yy( n) coutyy;YY ( int m, int n):XX (m),yy (n)coutyy;下列选项中,输出结果为 A0 的语句是A
12、)YY y1( 0,0);B)YY y2( 1);C)YY y3( 0);D)YY y4;( 32)有如下程序: #include Using namespace std; class A public:virtual void f() cout+1;void g() cout2;class B:public A public: virtual void f() cout3; void g() ecut4;void show( A &a )a.f();a.g( ); int main() B b;show( b);return 0;运行时的输出结果是A)12B)34C)14D)32(33)有如
13、下程序:#includeusing namespace std;class Pairint 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);Coutp2)P1)p3) p2);return 0;运算符函数。 operator的功能是比较 两个 Pair 对象的大小,当左边对象大时, 返回 true,否则返回 false。比较规则是首 先比较两对象的 m 成员,m大者为大;当 m 相等时比较 n
14、, n 大者为大。程序输出 0101,下列对运算符重载函数的正确定义 是A)bool Pair:operator(Pair p)constif ( m!=p.m) return mp.m; return np.n;B)bool Pair:;operator(Pair p)if ( m!=p.m) return mp.m; return np.n;C)bool Pair:operator(Pair p)const if ( mp.m ) return true; returnnp.n;D)bool Pair:;operator( Pair p)if ( mp.m ) return true; r
15、eturn np.n; (34)假定下列语句都是程序运行后首次 执行的输出语句,其中输出结果与另外三 条语句不同的语句是A)coutsetfil(l * )123setw(9) 321;B) coutsetfill( *)setw( 6) left123setw(6)right321;C)cout123setfil(l *)setw(6) 321;D)coutsetfill(*)SetW(9) left123321;( 35)有如下程序:#includeusing namespace std;class ONEint c;public:ONE():c(0)cout1;ONE (int n):c
16、 (n) cout2;class TWOONE onel;ONE one2;public:TWO (int m):one2( m) cout3;int main() tTWO t (4)return 0运行时的输出结果是A)3B)23C)123D)213二、填空题(每空 2 分, 共 30 分)( 6)有如下程序段:int x=1,Y=2,z=3;x=xz;y=yz;z=xy;coutxyz;执行这个程序段的输出是【 6】。(7)有如下程序段:fer( int i=1; i=50;i+ )if(i%3 != 0)continue;elseif (i%5!=0 )continue;touti “
17、,”;执行这个程序段的输出是【 7】。(8)有如下程序段:Char c 20= “ examinatio;n ” c4=0;coutcendl;执行这个程序段的输出是【 8】。(9)下面的函数利用递归实现了求 1+2+3+ +n 的功能:int sum(int n)if(n=0)return 0;elsereturn n+sum(n-1);在执行 sum(10)的过程中,递归调用 sum函数的次数是【 9】。(10)非成员函数应该声明为类【 10】函 数才能访问该类的私有成员。(11)有如下程序:#includeusing namespace std;class Monitorpublic:M
18、onitor ( char t):type (t)void print( ) constcout “The type of monitor is ” typeendl;private:char type;class Computerpublic:Computer( int i,char c): 【11】 void Print() constcout “Thecomputeris ” idendl;mon.Prin(t ); private:int id;Monitor mon;const Computer myComputer (101,B );myComputer .Print();retu
19、rn 0;请将程序补充完整,使程序在运行时输 出:The computer is 101The type of monitor i.s 8( 12)有如下程序:#include using namespace stdclass Animalpublic:virtual char* getType()const return “Animal;”virtual char* getVoice()const return “Voice;”;Class Dog : public Animal public:char* getType () const returnDog”;char* getVoice
20、() const returnWoof”void type ( Animal& a )couta.getType();void speak ( Animal a ) couta.getVoice(); int main( ) Dog d; type ( d);cout “s peak”; speak( d);coutendi;return 0;运行时的输出结果是【 12】。 (13)补充完整下面的类定义:const double PI=3 .14;class Circle /圆形物体的抽象基类 protected:double r; / 半径public:Circle( double radi
21、us=0): r( radius) 【13】;/计算圆形物体表面积的纯虚函 数声明;class Cylinder:public Circle /圆柱 体类double h; /高度public:Cylindr ( double radius=0, doubli height=0):Circle( radius),h ( height) Virtual double Area() /计算圆柱体 的表面积return 2*PI*r* ( r+h);;(14)补充完整下面的类定义:class XCHchar* a;public:XCH ( char* as) /构造函数 a=new charstrl
22、en(aa) +1; strcpy( a,aa);XCH& operator= ( const XCH& x) /重载赋值函数Delele a;A=new charstrlen( x.a) +l; strcpy( a, x .a)【14】;XCH () delete a;( 15)补充完整下面的模板定义:template / /Type 为类型参 数class Xtwo /由两个 Type 类型的数 据成员构成的模板类Type a;Type b;public:Xtwe( Type aa=0, Type bb=0):a(aa), b(bb)int Ccmpare ()/ 比较 a 和 b 的大小
23、if ( ab)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
24、)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)Xwo2009 年 9 月二级 C+笔试试卷 ( 11)已知函数 FA 调用 FB,若要把这两个函 数定义在同一个文件中,则( )。 A)FA 必须定义在 FB 之前 B)FB 必须定义在 FA 之前C)若 FA 定义在 FB 之后,则 FA 的原型必须
25、出 现在 FB 的定义之前D)若 FB 定义在 FA 之后,则 FB 的原型必须出 现在 FA 的定义之前 (12)有如下两个类定义:class AA;class BB AA v1,*v2;BB v3;int *v4;其中有一个成员变量的定义是错误的, 这个变量 是( )。A)v1 B)v2 C)v3 D)v4(13)有如下类定义:class XX int xdata;public:XX(int n=0) : xdata(n);class YY : public XX int ydata;public:YY(int m=0, int n=0) : XX(m), ydata(n);YY 类的对象
26、包含的数据成员的个数是( )。A)1 B)2 C)3 D)4( 14)下列关于运算符函数的描述中, 错误的是 ( )。A)运算符函数的名称总是以 operator 为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运 算符重载函数(15)下列关于模板形参的描述中,错误的是 ( )。A)模板形参表必须在关键字 template 之后B)模板形参表必须用括弧 ()括起来C) 可以用 class修饰模板形参D)可以用 typename 修饰模板形参(16)在下列枚举符号中,用来表示“相对于当 前位置”文件定位方式的是( )。A)ios_b
27、ase:curios_base:begC)ios_base:out D) ios_base:end(17)下列字符串中可以用作 C+ 标识符的是 ( )。A)2009var B) gotoC)test-2009 D)_123(18)下列枚举类型的定义中, 包含枚举值 3 的 是( )。A ) enum test RED, YELLOW, BLUE, BLACK;B ) enum test RED, YELLOW=4, BLUE, BLACK;C ) enum test RED=-1 , YELLOW, BLUE, BLACK;D ) enum test RED, YELLOW=6, BLUE,
28、 BLACK;(19) 有如下程序段:int i=1; while(1) i+;if(i=10) break; if(i%2=0) cout*;执行这个程序段输出字符 * 的个数是( )。A) 10 B)3 C)4 D)5( 20)已知数组 arr 的定义如下:int arr5=1,2,3,4,5; 下列语句中输出结果不是 2 的是( )。A) cout *arr+1 endl; B )cout * (arr+1) endl;C) cout arr1 endl; D )cout *art endl;( 21)计算斐波那契数列第 n 项的函数定义如 下: int fib(int n) if(n=
29、0) return 1; else if(n=1) return 2;else return fib(n-1)+fib(n-2);若执行函数调用表达式 fib(2),函数 fib 被调用 的次数是( )。A)1 B)2 C)3 D)422)Sample 是一个类,执行下面语句后,调用Sample 类的构造函数的次数是( )。Sample a2, *P = new Sample;A)0 B)1 C)2 D)3( 23)下列关于虚基类的描述中, 错误的是( )。 A)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时,虚基类的构造函数只被 调用一次C)声明“ class B : virtu
30、al public A ”说明类 B 为虚基类D)建立派生类对象时,首先调用虚基类的构造 函数( 24)将运算符重载为类成员函数时, 其参数表 中没有参数,说明该运算符是( )。A)不合法的运算符 B)一元运算符 C)无操作数的运算符 D)二元运算符(25)有如下模板声明:template class A;下列声明中,与上述声明不等价的是( )。 A) template class A;B) template class A;C) template class A;D) template class A;(26) 下列关于 C+ 流的描述中,错误的是( )。 A) coutA表达式可输出字符
31、AB) eof()函数可以检测是否到达文件尾C) 对磁盘文件进行流操作时,必须包含头文件 fstreamD)以 ios_base:out模式打开的文件不存在时, 将自动建立一个新文件(27) 有如下程序:# include using namespace std; class Toy public:Toy(char* _n) strcpy(name, _n); count+;Toy() count-;char* GetName() return name; static int getCount() return count; private:char name10; static int c
32、ount;int Toy:count=0;int main()Toy t1(Snoopy), t2(Mickey), t3(Barbie); coutt1.getCount()endl;return 0; 运行时的输出结果是( )。A)1 B)2 C)3 D)运行时出错(28) 有如下程序:# include using namespace std; class A public:A(int i) : r1(i) void print() coutEr1-;void print() const coutCr1*r1-;pivate:int r1;int main() 日A a1(2); con
33、st A a2(4);a1.print(); a2.print(); return 0;运行时的输出结果是( )。A)运行时出错 B) E2-C16- C)C4-C16- D) E2-E4-(29) 有如下程序:# include using namespace std; class Namechar name20;public:Name()strcpy(name, ); cout?;Name(char *fname)strcpy(name,fname); cout?; ; int main()Name names3=Name(张三 ), Name(李四 );return 0; 运行此程序输出
34、符号 ?的个数是( )。A)0 B)1 C)2 D)3(30) 有如下程序: # include using namespace std; class AA public:AA() cout1; ; class BB: public AA int k;public:BB() : k(0) cout2; BB(int n) : k(n) cout3; ;int main()BB b(4), c;return 0; 运行时的输出结果是( )。A)1312 B)132 C)32 D) 1412(31) 有如下程序:# include using namespace std;class C1publi
35、c:C1() cout1; ;class C2: public C1public:C2() cout2; ;int main()C2 cb2;C1 *cb1; return 0;运行时的输出结果是( )。 A)121 B)21 C)211 D)12(32) 有如下程序:# include using namespace std; class Publication /出/ 版物类char name30; public:Publication(char *name=未知名称 ) strcpy(this-name,name);const char * getName()const return n
36、ame; virtual const char * getType()const return 未 知类型 ;class Book: public Publication 书/ 类 public:Book(char *name): Publication(name)virtual const char * getType()const return 书 ; void showPublication( Publication &p)coutp.getType():p.getName()endl;int main()Book book(精彩人生 );showPublication(book);re
37、turn 0;运行时的输出结果是( )。A)未知类型:未知名称 B)未知类型:精彩人 生C)书:未知名称 D)书:精彩人生( 33)下列关于运算符重载的描述中, 错误的是 ( )。A):运算符不能重载B)类型转换运算符只能作为成员函数重载C)将运算符作为非成员函数重载时必须定义为 友元D)重载 运算符应完成“下标访问”操作(34)有如下程序:# include # include using namespace std;int main()int s=123, 234; coutrightsetfill(*)setw(6); for(int i=0; i2; i+) coutsi20; i-=
38、2) couti,; 运行时循环体的执行次数是 【 7】 次。 (8)利用表达式 ai可以访问 int 型数组 a 中下 标为 i 的元素。在执行了语句 int *p=a; 后,利用 指针 p 也可 访问该元素,相应的表达式是 【8】 。 (9)下面是一个递归函数,其功能是使数组中 的元素反序排列。请将函数补充完整。void reverse(int *a, int size)if(size2) return;int k=a0;a0=asize-1; asize-1=k;reverse(a+l, 【 9】 );( 10)类 Sample 的构造函数将形参 data 赋值给 数据成员 data。请
39、将类定义补充完整。 class Sample public:Sample(int data=0); private:int data;Sample:Sample(int data) 【10】(11)有如下类定义: class Sample public:Sample();Sample();private:static int data;将静态数据成员 data 初始化为 0 的语句是 【 11】 。( 12)“图形”类 Shape 中定义了纯虚函数CalArea() ,“三角形”类 Triangle 继承了类Shape,请将 Triangle 类中的 CalArea 函数补充完整。 class Shape public:virtual int CalArea()=0;class Triangle: public Shape public:Triangle(int s, int h) : side(s), height(h) 【 12】 。 return side * height/2; private:int side;int height; ;(13)有如下程序:# include using namespace std; class GrandChild public:GrandChild() strcpy(name,U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于毕业学生实习报告四篇
- 经股肱桡尺动脉介入治疗对比-袁晋青
- 北京小学科学教师学年工作总结大全
- 儿童临时监护协议书(2篇)
- 办公场地出租合同模板
- 深圳商铺租赁合同书
- 赠送别克商务轿车协议书
- 厂房租赁协议合同书范本
- 扬州地下停车位出租协议
- 八年级道德与法治下册第二单元理解权利义务第四课公民义务第2框依法履行义务教案新人教版
- 急停急起运球教学设计
- 2024年江西省三校生高职英语高考试卷
- 中国古代文学智慧树知到期末考试答案章节答案2024年广州大学
- 重庆市南岸区2022-2023学年五年级上学期期末语文试卷
- 现浇钢筋混凝土整体式肋梁楼盖结构-课程设计
- 挂篮施工及安全控制连续梁施工安全培训课件
- 学生学习概览StudentLearningProfile
- 小班数学《认识1到10的数字》课件
- 手工花项目策划书
- 服务器维保应急预案
- 循环系统病症的临床思维
评论
0/150
提交评论