收藏 分销(赏)

全国计算机二级C++等级考试真题及答案.doc

上传人:快乐****生活 文档编号:4298198 上传时间:2024-09-04 格式:DOC 页数:43 大小:254.52KB
下载 相关 举报
全国计算机二级C++等级考试真题及答案.doc_第1页
第1页 / 共43页
全国计算机二级C++等级考试真题及答案.doc_第2页
第2页 / 共43页
全国计算机二级C++等级考试真题及答案.doc_第3页
第3页 / 共43页
全国计算机二级C++等级考试真题及答案.doc_第4页
第4页 / 共43页
全国计算机二级C++等级考试真题及答案.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

1、2007年9全国计算机等级考试二级笔试试卷一、选择题(每小题2分,共70分)(11)在函数中,可以用auto,extem,register,和static这四个关键字中的一个来说明变量的存储类型,如果不说明存储类型,则默认的存储类型是 A A auto B extem C register D static(12)对于一个类定义,下列叙述中错误的是 B A 如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 B 如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 C 如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数 D 如果已经定义了构造函数和拷贝构造函数

2、,编译器不会生成任何构造函数(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)(

3、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

4、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 重载函数的函数体可以有所不同(

5、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+中可以重载所有的

6、运算符(25)下列关于类模板的模板参数的叙述中,错误的是 D A 模板参数可以作为数据成员的类型 B 模板参数可以作为成员函数的返回类型 C 模板参数可以作为成员函数的参数类型 D 模板函数不能作为成员函数的局部变量的类型(26)已知一程序运行后执行的第一个输出操作是 B Coutsetw(10)setfill(*)1234 则此操作的输出结构是 A 1234 B *1234 C *1234 D 1234*(27)有如下程序 #include Using namespace std; Class myclass Public: MyClass()+count; MyClass()-count;

7、 Static int getcount()return count;Private Static int count;Int MyClass:count=0;Int main() Myclass obj; Coutobj,getCount(); MyClass*ptr=new MyClass; CoutMyClass:getcount(); Delete ptr; CoutMyClass:gercount(); Return(); 程序的输出结果是 AA 121 B 232 C 221 D 122程序的输出结果是 C A val=10 const:val=20 B const:val=10

8、const:val=20 C const:val=10 val=20 D val=10 val=20(29)有如下程序 #include Using namespace std; Class part Public; Part(int x=():val(x)coutval; -part()coutval; Private; Int val; ; Class whole Public; Whole(int x,int y,int z=0):p2(x),p1(y),val(z)coutval; Whole()countval; Private; Part p1,p2; Int val; ; Int

9、 maint Whole obj(1,2,3); Resturn(); 程序输出的结果是 DA 123321 B 213312 C 213 (30) 有如下程序: #include Using namespace std; Class base Public: Base(int x=0)coutx; ; Class derived : public base Public: Derivedrin(x=y)coutx; Priblic: Base val; ; Int main() Derived d(!); Return(); 程序的输出结果是 C A 0 B 1 C 01 D 001(31)

10、若有如下类定义: 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 Using namespace sid; Class base Public; Void output()cout1; Virtual void pri

11、nt() coutB; ; Class derived:public base Public: Void output()cout2; Void print()coutoutput(); Ptr-print(); Delete ptr; Return(); 程序的输出结果是 D A 1B B 1D C 2B D 2D33.下列是重载乘法运算的函数原型声明,其中错误的是 A A myclass operator*(double,double);B myclass operator*(double,myclass);C myclass operator*(myclass,double);D myc

12、lass operator*( myclass , myclass);*是二元运算符,而且标准库里面已经有double*double的运算符定义,返回值为double,所以A的重载是错误的 34.A (35) 有如下程序: #include using namespace std; class B public: virtual void show()coutb; ; class D:public B public: void show()coutshow(); void fun2(B &ref)ref.show(); void fun3(B b)b.show(); void main() B

13、 b,*p=new D; D d; fun1(p); fun2(b); fun3(d); 程序的输出结果是 D A DBD B BBD C DBB D Dbb二、填空题(每空2分,共三十分)(6).在有定义语句:int a=3,b=2,c=1;则表达式ab?a:b的值是_(7).执行下列语句后,变量sum的值是_.Int sum =0;For (int j=I;j=I;j+) For (int j=I;j=I;j+) Sum+;(8).已知有函数f的定义如下: Int f() Static int -6; s-2; return s 则在某程序中第二次执行函数用语句f();时,函数f的返回值是

14、_.(9)已知如下程序得输出结果时23,请将划线处缺失得部分补充完整。 #include Using namespace std; Class myclass Public: Void print() coutcout23; Int main() Myclass*p=new myclass(); _print(); Return(); Class sample Public: Sample() _ (14)请将如下程序补充完整,使得输出结果为bbaa #include Using namespace std; Class A Public: _cout”aa”; ; Class B :publ

15、ic A Public: B()cout”bb”; ; Int main () B*p=new B; Delete p; Return(); (15)请将下列栈类stack补充完整 Class stack Private; Int plist100; /int 数组,用于存放栈的元素 Int top; /栈顶元素(数组下标) Public: Stack():top(0) Void push(sons int &item); /新元素item压入栈 Int pop(void); /将栈顶元素弹出栈 ; Void stack:pbsh(const int &item) If (top =99) /

16、如果栈满,程序结束 Exit(1); Top+; /栈顶指针增1 _【15】_; Int stack:pop() If (top0) /如果栈空,程序结束 Exit(1); Return plishtop-; 参考答案6.2 7.6 8.4 9.(*p) 10.ABBA 11.void Base:fun()12.virtual display()=0; 14.-A() 15.pListtop=item2008年9月计算机等级考试一、选择题(每小题2分,共70分)(11)在下列原型所示的 C+函数中,按“传值”方式传递参数的是(A)。A)void f1(int x); B)void f2(int

17、*x); C)void f3(const int*x); D)void f4(int&x);(12)在 C+中,编译系统自动为一个类生成缺省构造函数的条件是(A)。A)该类没有定义任何有参构造函数 B)该类没有定义任何无参构造函数C)该类没有定义任何构造函数 D)该类没有定义任何成员函数(13)在一个派生类的成员函数中,试图调用其基类的成员函数“void f();”,但无法通过编译。这说明(C)。A)f()是基类的私有成员 C)派生类的继承方式为私有B)f()是基类的保护成员 D)派生类的继承方式为保护(14)下列关于运算符重载的叙述中,错误的是(B)。A)有的运算符可以作为非成员函数重载B)

18、所有的运算符都可以通过重载而被赋予新的含义C)不得为重载的运算符函数的参数设置默认值D)有的运算符只能作为成员函数重载(15)下列关于模板的叙述中,错误的是(D)。A)调用模版函数时,在一定条件下可以省略模板实参B)可以用 int、double 这样的类型修饰符来声明模版参数C)模板声明中的关键字 class 都可以用关键字 typename 替代D)模板的形参表中可以有多个参数(16)要利用 C+流进行文件操作,必须在程序中包含的头文件是(B)。A)iostreamB)fstream C)strstreamD)iomanip(17)下列字符串中不能作为 C+标识符使用的是(B)。A)WHIL

19、E B)user C)_lvar D)9stars(18)下列语句中错误的是(D)。A)const int a; B)const int a=10; C)const int*point=0; D)const int*point=new int(10);(19)有如下程序:#includeusing namespace std;int main()int sum;for(int i=0; i6; i+=3)sum=i; for(int j = i; j6; j+)sum+=j; coutsumend1; return 0;运行时的输出结果是(A)。A)3B)10 C)12 D)15(20)下列语

20、句中,正确的是(D)。A)char*myString=Hello-World!; B)char myString=Hello-World!;C)char myString11=Hello-World!; D)char myString12=Hello-World!;(21)若已经声明了函数原型“void fun(int a, double b=0.0);”,则下列重载函数声明中正确的是(C)。A)void fun(int a=90, double b=0.0); B)int fun(int a, double B); C)void fun(double a, int B); D)bool fu

21、n(int a, double b = 0.0);(22)有如下程序:#includeusing namespace std;class Samplepublic:Sample() Sample()cout*;int main()Sample temp2, *pTemp2; return 0;执行这个程序输出星号(*)的个数为(B)。A)1B)2C)3D)4(23)下列选项中,与实现运行时多态性无关的是(A)。A)重载函数B)虚函数 C)指针D)引用(24)下列运算符函数中,肯定不属于类 Value 的成员函数的是(B)。A)Value operator+(Value); B)Value op

22、erator-(Value, Value);C)Value operator*(int); D)Value operator/(Value); (25)下列模板声明中,有语法错误的是(D)。A)templateT fun(T x)return x;B)templateT fun(T x, int n)return x*n;C)templateT fun(T *p)return *p;D)templateT classAT n;(26)在语句“coutA;”中,cout 是(B)。A)类名B)对象名 C)函数名D)C+的关键字(27)有如下程序:#includeusing namespace s

23、td;class MyClass public:MyClass(int i=0)cout1;MyClass(const MyClass&x)cout2;MyClass& operator=(const MyClass&x)cout3; return*this; MyClass()cout4;int main()MyClass obj1(1),obj2(2),obj3(obj1); return 0:运行时的输出结果是(A)。A)112444 B)11114444 C)121444D)11314444(28)有如下程序:#includeusing namespace std;class MyCl

24、ass public:MyClass(int x):val(x)void Set(int x)val=x; void Print()constcoutval=val=b 中的“=”是作为非成员函数重载的运算符,则可以等效地表示为(A)。A)a.operator=(b) B)b.operatotr=(a) C)operator=(a,b))operator=(b,a)(34)当使用 ofstream 流类定义一个流对象并打开一个磁盘文件时,文件的默认打开方式为(B)。A)ios base:in B)ios_base:binary C)ios_base:in|ios_base:out D)ios_

25、base:out(35)在一个抽象类中,一定包含有(C)。A)虚函数 B)纯虚函数 C)模板函数D)重载函数二、填空题(每空2分,共30分) (6)当使用关键字_void_作为函数返回类型时,该函数不返回任何值。(7)已知数组 a 中有 n 个元素,下列语句将数组 a 中从下标 x1 开始的 k 个元素移动到从下标 x2 开始的 k 个元素中,其中 0=x1x2n,x2+k=x1; i-)a_x2+k-1_=ai; (8)有如下程序:#includeusing namespace std;int fun1(int x)return+x; int fun2(int &x) return+x;in

26、t main()int x=1,y=2; y=fun 1(fun2(x);coutx,y; return 0: 程序的输出结果是_2,3_。(9)有如下程序:#includeusing namespace std;class pumpkin public:pumpkin()+count;pumpkin()-count;static void total_count()coutcountpumpkin(s)endl; private: static int count; ;int pumpkin:count=0;int main()pumpkin pl10;pumpkin:total_count

27、();return 0; 这个程序的输出结果是_10pumpkin(s)_。(10)有如下递归函数:int Fun(int n) if(n=1)return 1;_else return n*Fun(n-1);_请补充完整,使得函数 Fun 能够正确计算形参 n 的阶乘。(11)请在下列程序中的空格处填写正确的语句:class Samplepublic:Sample() Sample() void SetData(int data) /将 Sample 类成员变量 data 设置成形参的值_Sample:data=data_ /注意形参与成员同名 private: int data;(12)有

28、如下类定义,请将Sample类的拷贝构造函数补充完整。class Samplepublic:Sample()Sample() if(p) delete p;)Sample (const Sample& s)_p=new int;*p=s.*p_ void SetData(int data)p=new int(data);private: int*p; ;(13)重载加法运算符“+”,其函数名是_operator +_。(14)有如下程序:#include using namespace std;class Wages /工资类double base; /基本工资double bonus; /奖

29、金double tax; /税金public: Wages(double CBase, double CBonus, double CTax):base(CBase), bonus(CBonus), tax(CTax)double getPay()const; /返回应付工资额Wages operator+(Wages w)const; /重载加法;double Wages:getPay()constreturn base+bonus-tax;Wages Wages:operator+(Wages w)const return Wages(base+w.base, bonus+w.bonus,

30、 tax+w.tax);int main()Wages wl(2000,500,100),w2(5000,1000,300);cout(wl+w2).getPay()endl; return 0;(15)有如下程序:#includeusing namespace std;class Petchar name10;public:Pet(char*name)strcpy(this-name, name);const char*getName()const return name;virtual void call()const=0; class Dog: public Petpublic:Dog(

31、char*name):Pet(name)void call()constcout汪汪叫;class Cat:public Petpublic:Cat(char*name):Pet(name)void call()constcout喵喵叫;int main()Pet *pet1=new Dog(哈克), *pet2=new Cat(吉米);coutgetName();pet1-call();coutend1;coutgetName();pet2-call();coutend1;return 0;程序的输出结果是_哈克汪汪叫_吉米喵喵叫_2008年9月二级 C+笔试试卷参考答案二、填空题(6)vo

32、id (7)X2+k-1 (8)2,3 (9)10pumpkin(s) (10)else return n*Fun(n-1);(11)Sample:data (12)p=new int; *p=s.*p; (13)operator + (14)81002009年9月全国计算机二级笔试C+一、 选择题(1-10,21-40每题2分,11-20每题1分)(11) 已知函数FA调用FB,若要把这两个函数定义在同一个文件中,则 DA)FA必须定义在FB之前 B)FB必须定义在FA之前C)若FA定义在FB之后,则FA的原型必须出现在FB的定义之前D)若FB定义在FA之后,则FB的原型必须出现在FA的定义

33、之前(12)有如下两个类定义 Cclass AA;class BB AA v1,*v2; BB v3; int *v4;其中有一个成员变量的定义是错误的,这个变量是A)v1 B)v2 C)v3 D)v4由于AA和BB都是类的定义,在类定义中无法声明一个自己的对象,所以在BB的类定义中,企图声明一个BB类的对象,是非法的。(13)有如下类定义: Bclass 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类的对象包含的数据成员的个数是A)1 B)2 C)3 D)4(14) 下列有关运算符函数的描述中,错误的是 CA)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数(友元函数)D)在表达式中使用重载的运算符相当于调用运算符重载函数(15)下列关于模板形参的描述中,错误的是 BA)模板形参表必须在关键字template之后B)模板形参表必须用括弧( )括起来C)可以用class修饰模板形参

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 考试专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服