




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+练习题(摘自全国计算机等级考试二级真题)一、选择题(1)对C+编译器区分重载函数无任何意义的信息是 A)参数类型 B)参数个数 C)返回值类型 D)常成员函数关键字coast (2)有如下类定义和变量定义: class A publie: A()data=0; A() int GetData() const return data; void SetData(int n) data=n; private: int data; ; const A a; A b; 下列函数调用中错误的是 A)a .GetData(); B)a .SetData(10); C)b .GetData(); D)b .SetData(10); (3)有如下类定义和变量定义: class Parents public: int publicuata; private: int privateData; ; class ChildA: public Parents/*类体略*/; class ChildB: private Parents/*类体略*/); ChildA a; ChildB b; 下列语句中正确的是 A)couta. publicuata; B)couta. privateData; C)coutb. publicuata; D)coutb. privateData;(4)运算符重载时不需要保持的性质是 A)操作数个数 B)操作数类型 C)优先级D)结合性 (5)下列描述中, 不属于面向对象思想主要特征的是A)封装性 B)跨平台性 C)继承性 D)多态性(6)有如下程序段: int i=4, j=1; int main() int i=8, j=i; couti“, ”jendl; 运行时的输出结果是 A)4, 4 B)4, 1 C)8, 8 D)8, 1 (7)已知函数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);(8)建立一个类对象时, 系统自动调用 A)析构函数 B)构造函数 C)静态函数 D)友元函数 (9)通过派生类的对象可直接访问其 A)公有继承基类的公有成员 B)公有继承基类的私有成员 C)私有继承基类的公有成员 D)私有继承基类的私有成员 (10)己知表达式+a中的“+”是作为成员函数重载的运算符, 则与+a等效的运算符函数调用形式为 A)a .orerator+(1) B)operator+(a) C)operator+(a, l) D)a.operator+( ) (11)在定义一个类模板时, 模板形参表是用一对括号括起来的, 所采用的括号是 A)( ) B) C) D) (12)有如下程序: #include #include using namespace std; class XCD char* a; int b; public: XCD(char* aa, int bb) a=new charstrlen(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); coutstrlen(x.Geta() + y.Getb() endl; return 0; 运行时的输出结果是 A)12 B)16 C)14 D)11 (13)有如下程序: #include #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() couta; int Geta() return a; ; int main() XCF dl(5), d2 (dl); XCF *pd=new XCF(8); coutGeta(); delete pd; return 0; 运行时的输出结果是 A)1 2 1 5 5 8 8 B)1 2 1 8 8 5 5 C)1 2 1 8 5 D)1 2 8 5 1 2 (14)已知类MyClass声明如下: class MyClass int n; public; MyClass(int k):n(k) int getValue()const return n; ; 在下列数组定义中正确的是 A)MyClass x12; B)MyClass x22=new MyClass(1), new MyClass(2); C)MyClass *x32; D)MyClass *x42=MyClass(1), MyClass(2); (15)有如下程序: #include using namespace std; class AA int k; protected: int n; void setK(int k) this-k=k; public: void setN(int n) this-n=n; ; class BB: public AA /*类体略*/; int main() BB x ; x .n=1; /1 x.setN (2); /2 x.k=3; /3 x .setK(4); /4 return 0; 在标注号码的四条语句中正确的是 A)1 B)2 C)3 D)4 (16)有如下类定义: 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) coutyy;YY(int n): XX(n+1), yy(n) coutyy; YY (int m, int n): XX (m), yy(n) coutyy; ; 下列选项中, 输出结果为A 0的语句是 A)YY y1(0,0); B)YY y2(1); C)YY y3(0); D)YY y4; (17)有如下程序: #include using namespace std; class A public: virtual void f() cout1; void g() cout2; ; class B: public A public: virtual void f() cout3; void g() cout4; ;void show(A &a) a.f(); a.g( ); int main() B b; show(b); return 0; 运行时的输出结果是 A)1 2 B)3 4 C)1 4 D)3 2 (18)有如下程序: #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); coutp2)P1)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 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; return np.n; D) bool Pair:;operator(Pair p) if (mp.m) return true; return np.n; (19)有如下程序: #include using namespace std; class ONE int c; public: ONE(): c(0)cout1; ONE(int n): c(n)cout2; ; class TWO ONE onel; ONE one2; public: TWO(int m): one2(m) cout3; ; void main() TWO t(4); return 0; 运行时的输出结果是 A)3 B)2 3 C) 1 2 3 D)2 1 3-(20)有如下两个类定义class AA;class BBAA v1, *v2;BB v3, *v4;其中有一个成员变量的定义是错误的, 这个变量是A)v1B)v2C)v3D)v4(21)有如下类定义:class XXint xdata;public:XX(int n=0) : xdata (n) ;class YY : public XXint ydata;public:YY(int m=0, int n=0) : XX(m), ydata(n) ;YY类的对象包含的数据成员的个数是A)1B)2C)3D)4(22)下列有关运算符函数的描述中, 错误的是A)运算符函数的名称总是以operator为前缀B)运算符函数的参数可以是对象C)运算符函数只能定义为类的成员函数D)在表达式中使用重载的运算符相当于调用运算符重载函数(23)下列关于模板形参的描述中, 错误的是A)模板形参表必须在关键字template之后B)模板形参表必须用括弧( )括起来C)可以用class修饰模板形参D)可以用typename修饰模板形参(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 *arr endl;(21)Sample是一个类, 执行下面语句后, 调用Sample类的构造函数的次数是Sample a2, *p = new Sample;A)0B)1C)2D)3(22)下列关于虚基类的描述中, 错误的是A)使用虚基类可以消除由多继承产生的二义性B)构造派生类对象时, 虚基类的构造函数只被调用一次C)声明“class B : virtual public A”说明类B为虚基类D)建立派生类对象时, 首先调用虚基类的构造函数(23)将运算符重载为类成员函数时, 其参数表中没有参数, 说明该运算是A)不合法的运算符B)一元运算符C)无操作数的运算符D)二元运算符(24)有如下模板声明:template classA;下列声明中, 与上述声明不等价的是A)template classA;B)template classA;C)template classA;D)template class A;(25)有如下程序:#include using namespace std;class Toypublic:Toy(char* cn) strcpy (name, cn); count+;Toy() count-; char* GetName() return name; static int getCount() return count; private:char name10;static int count;int Toy:count=0;int main()Toy t1(“Snoopy”), t2(“Mickey”), t3(“Barbie”);coutt1.getCount()endl;return 0;运行时的输出结果是A)1B)2C)3D)运行时出错(26)有如下程序#include using namespace std;class A public:A(int i): r1(i) void print() coutEr1 -;void print() const coutCr1*r1-;private:int r1;int main()A a1(2); const A a2(4);a1.print(); a2.print();return 0;运行时的输出结果是A)运行时出错B)E2-C16-C)C4-C16-D)E2-E4-(27)有如下程序:#includeusing 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;运行此程序输出符号?的个数是A)0B)1C)2D)3 来源:考试大-计算(28)有如下程序:#includeusing namespace std;class AApublic:AA() cout1; ;class BB: public AAint k;public:BB(): k(0) cout2; BB(int n): k(n) cout3;int main()BB b(4), c;return 0;运行时的输出结果是A)1 3 1 2D)1 3 2C)3 2D)1 4 1 2 (29)有如下程序:#includeusing namespace std;class C1public:C1() cout1; ;Class C2: public C1public:C2() cout2; ;int main()C2 cb2;C1 *cb1;return 0;运行时的输出结果是A)1 2 1B)2 1C)2 1 1D)1 2(30)有如下程序#includeusing namespace std;class Publication /出版物类char name30;public:Publication(char *name=”未知名称”) strcpy(this-name, name);const char * getName()const return name; 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; void main()Book book(“精彩人生”);showPublication(book);运行时的输出结果是A)未知类型:未知名称B)未知类型:精彩人生C)书:未知名称D)书:精彩人生(31)有如下类定义class A char *a;public:A(): a(0)A(char *aa) /把aa所指字符串拷贝到a所指向的存储空间a= ;strcpy(a, aa);strcpy(a, aa);A() delete a;横线处应填写的表达式是A)new charstrlen(aa)+1B)charstrlen(aa)+1C)charstrlen(aa)D)new charsizeof(aa)-1-(32)下列关于函数的描述中, 错误的是A)函数可以没有返回值B)函数可以没有参数C)函数可以是一个类的成员D)函数不能被定义为模板(33)若MyClass是一个类名, 且有如下语句序列MyClass c1, *c2;MyClass *c3=new MyClass;MyClass &c4=c1;上面的语句序列所定义的类对象的个数是A)1B)2C)3D)4(34)下列关于继承方式的描述中, 错误的是A)如果不显式地指定继承方式, 缺省的继承方式是私有(private)B)采用公有继承方式时, 基类中的公有成员在派生类中仍然是公有成员C)采用保护继承方式时, 基类中的保护成员在派生类中仍然是保护成员D)采用私有继承方式时, 基类中的私有成员在派生类中仍然是私有成员(35)将前缀运算符“-”重载为非成员函数, 下列原型中, 能正确用于类中说明的是A)Decr& operator -(int); B)Decr operator -( Decr&, int);C)friend Decr& operator -(Decr&);D)friend Decr operator -(Decr&, int);(36)在C+中, cin是个A)类B)对象C)模板D)函数(37)下列叙述中, 错误的是A)false是一个逻辑型常量B)b是一个字符型常量C)365是一个int常量D)3.1415926是一个double常量(38)关于函数中的, 下列表述中错误的是A)中有可能包含关键字intB)中有可能包含自定义标识符C)中有可能包含字符* D)中可能包含(39)要定义一个引用变量p, 使之引用类MyClass的一个对象, 正确的定义语句是A)MyClass p=MyClass; B)MyClass p=new MyClass;C)MyClass &p=new MyClass;D) MyClass a, &p=a;(40)有如下两个类定义class XXprivate:double x1;protected:double x2;public:double x3;class YY: protected XXprivate:double y1;protected:double y2;public:double y3;在类YY中保护成员变量的个数是A)1B)2C)3D)4(41)下列关于运算符重载的描述中, 正确的是A)可以通过运算符重载在C+中创建新的运算符B)赋值运算符只能重载为成员函数C)运算符函数重载为类的成员函数时, 第一操作数是该类对象D)重载类型转换运算符时不需要声明返回类型(42)下列关于类模板的描述中, 错误的是A)类模板的成员函数都是模板函数B)可以为类模板参数设置默认值(template )C)类模板描述了一组类D)类模板中只允许有一个类型参数(43)下列程序段中包含4个函数, 其中具有隐含this指针的是int fun1();class Testpublic:int fun2();friend int fun3();static int fun4();A)fun1B)fun2C)fun3D)fun4(44)有如下程序#include using namespace std;class Testpublic:Test() Test(const Test &t) cout1;Test fun(Test &u) Test t=u; return t; int main() Test x, y; x=fun(y); return 0; 运行这个程序的输出结果是A)无输出B)1C)1 1D)1 1 1(45)有如下程序#include using namespace std;class Apublic:A(int i=0): r1(i) void print() coutEr1-; void print() const coutCr1*r1-; void print(int x) cout Pr1*r1*r1-; private:int r1;int main() A a1;const A a2(4);a1.print(2);a2.print();return 0;运行时的输出结果是A)P8-E4B)P8-C16-C)P0-E4-D)P0-C16-(46)下列代码声明了3个类class Person;class Student: public Person;class Undergraduate: Student;下列关于这些类之间关系的描述中, 错误的是A)类Person是类Undergraduate的基类B)类Undergraduate从类Student公有继承C)类Student是类Person的派生类 D)类Undergraduate是类Person的派生类(47)有如下程序#include using namespace std;Class Basepublic:Base(int x=0): valB(x) cout valB;Base() cout valB;private:int valB;class Derived: public Base public:Derived(int x=0,int y=0): Base(x), valD(y) cout valD;Derived() cout valD;private:int valD;void main()Derived obj12(2, 3);运行时的输出结果是A)2 3 3 2B)2 3 2 3C)3 2 3 2D)3 2 2 3(48)下面是类Shape的定义:class Shapepublic:virtual void Draw()=0;下列关于Shape类的描述中, 正确的是A)类Shape是虚基类B)类Shape是抽象类C)类Shape中的Draw函数声明有误D)语句“Shape s;”能够建立Shape的一个对象s(49)将运算符“+”重载为非成员函数, 下列原型声明中, 错误的是A)MyClock operator + (MyClock, long);B)MyClock operator + (MyClock, MyClock);C)MyClock operator + (long, long);D)MyClock operator + (long, MyClock);(50)有如下程序:#include using namespace std;class Bpublic:B(int xx): x(xx) + count; x+=10;virtual void show() constcout count _xendl;protected:static int count;private:int x;class D: public B public:D(int xx, int yy): B(xx), y(yy)+count; y+=100;virtual void show() constcout count _yshow();delete ptr;return 0;运行时的输出结果是A)1_120B)2_120C)1_20D)2_20-(51)下列关于函数参数的叙述中, 正确的是A)在函数原型中不必声明形参类型B)函数的实参和形参共享内存空间C)函数形参的生存期与整个程序的运行期相同D)函数的形参在函数被调用时获得初始值(52)下列关于对象初始化的叙述中, 正确的是A)定义对象的时候不能对对象进行初始化B)定义对象之后可以显式地调用构造函数进行初始化C)定义对象时将自动调用构造函数进行初始化D)在一个类中必须显式地定义构造函数实现初始化(53)下列关于基类和派生类关系的叙述中, 正确的是A)每个类最多只能有一个直接基类B)派生类中的成员可以访问基类中的任何成员C)基类的构造函数必须在派生类的构造函数体中调用D)派生类除了继承基类的成员, 还可以定义新的成员(54)下列关于模板的叙述中, 正确的是A)如果一个类中存在纯虚函数, 这个类就是类模板B)函数模板不能有形式参数表C)类模板是一种参数化类型的类, 是类的生成器D)类模板中不能包含构造函数(55)下列关于C+预定义流对象的叙述中, 正确的是A)cin是C+预定义的标准输入流对象B)cin是C+预定义的标准输入流类C)cout是C+预定义的标准输入流对象D)cout是C+预定义的标准输入流类(56)下列函数原型声明中, 错误的是A)int fnction(int m, int n);B)int function(int, int);C)int function(int m=3, int n);D)int function(int &m, int&n);(57)若MyClass为一个类, 执行“MyClass a4, *p5;”时会自动调用该类构造函数的次数是A)2 B)5 C)4 D)9(58)若在表达式y/x中, “”是作为成员函数重载的运算符, 则该表达式还可以表示为A)x.Operator/(y)B)operator/(x, y)C)y.operator/(x)D)operator/(y, x)(59)有函数模板声明和一些变量定义如下:template class Tl, class T2, class T3T1 sum(T2 a, T3 b) return T1(a+b); double d1, d2;则下列调用中, 错误的是A)sum(d1, d2);B)sum(d1, d2);C)sum(d1, d2);D)sum(d1, d2);(因为无法推导T1的类型)(60)有如下语句序列:char str10;cinstr;当从键盘输入“I love this game”时, str中的字符串是A)I love this gameB)I love thiC)I love thD)I(61)有如下程序:#include#includeusing std:cout;class Pointpublic:friend double distance(const Point &p); /p距原点的距离Point(int xx=0, int yy=0): x (xx), y(yy) /private:int x, y;double distance(const Point &p) /return sqrt(double(p.x*p.x+p.y*p.y);void main()Point p1(3, 4);coutdistance(p1); /下列叙述中正确的是A)程序编译正确 B)程序编译时语句出错C)程序编译时语句出错D)程序编译时语句出错(62)有如下程序:#includeusing namespace std;class CDpublic:CD()coutC;private:char name80;int main()CD a, *b, d2;return 0;运行时的输出结果是A) C C C C B) C C C C) C C D) C-(63)某类中有一个无参且无返回值的常成员函数Show, 则正确的Show函数原型是A)const void Show(); B)void const Show();C)void Show()const; D)void Show(const);(64)若已定义了类Vehicle, 则下列派生类定义中, 错误的是A)class Car:Vehicle*类体略*;B)class Car:public Car*类体略*;C)class Car:public Vehicle*类体略*;D)class Car:virtual public Vehicle*类体略*;(65)有如下程序:#includeusing namespace std;class Musicpublic:void setTitle(char*str)strcpy(title, str);protected:char type10;private:char title20;class Jazz:public Musicpublic:void set(char* str)strcpy(type, Jazz); /strcpy(title, str); /;下列叙述中正确的是A)程序编译正确一 B)程序编译时语句出错C)程序编译时语句出错 D)程序编译时语句和都出错(66)有如下程序:#includeusing namespace std;class Instrumentpublic:virtual void Display()=0;class Piano:public Instrumentpublic:void Display()*函数体程序略*;int main()Instrument s;Instrument * p=0;/;return 0;下列叙述中正确的是A)语句“Insturment *p=0;”编译时出错 B)语句“Instrument s;”编译时出错C)类Piano中的Display函数不是虚函数D)类Instrumen不是一个虚基类(67)有类定义如下:class Type public:Type (int i=0) ;Type operator -(int);friend Type operator + (Type, Type );private:int val;若有对象定义Type c1; 则下列语句序列中, 错误的是A)Type(3)+c1; B)cl+Type(3);C)3-cl; D)c1-3;-(68)为了提高函数调用的实际运行速度, 可以将较简单的函数定义为A)内联函数 B)重载函数 C)递归函数D)函数模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025网络安全行业劳动合同模板
- 2025采购销售货物合同书
- 租赁园区大棚合同范本
- 2025携手共进合作开发土地合同模板
- 2025风电场EMC合同模板
- 民间抵押汽车合同范本
- 车辆采购合同范本
- 爷孙房屋购买合同范本
- 道闸租赁合同范本
- 定制车库维修合同范本
- 福建省福州市联盟校2023-2024学年高一下学期期末考试英语试题(解析版)
- 2025文化和旅游部直属事业单位招聘社会人员29人模拟试卷附答案详解
- 2024-2025学年重庆市万州区八年级(下)期末语文试卷
- 2025年乒乓球二级裁判考试题及答案
- 血标本采集考试试题附有答案
- 2025年公共安全生产试题及答案
- 员工工资及考勤管理制度
- 浙江省温州市龙湾区2024-2025学年七年级下学期学业水平期末检测数学试题
- 废料出售管理办法
- 企业干部退出管理办法
- 河南选调生管理暂行办法
评论
0/150
提交评论