C++练习题(附答案)_第1页
C++练习题(附答案)_第2页
C++练习题(附答案)_第3页
C++练习题(附答案)_第4页
C++练习题(附答案)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.911以下关于 C+ 函数的表达中,正确的选项是A 每个函数至少要具有一个参数B 每个函数都必须返回一个值C函数在被调用之前必须先声明D 丨函数不能自己调用自己12 以下关于类和对象的表达中,错误的选项是A 一个类只能有一个对象B对象是类的具体实例C类是对某一类对象的抽象D类和对象的关系是一种数据类型与变量的关系13在 C+ 中,用于实现运行时多态性的是A 丨内联函数 B重载函数C模板函数 D虚函数 14以下关于运算符重载的表达中,正确的选项是A 通过运算符重载,可以定义新的运算符B有的运算符只能作为成员函数重载C假设重载运算符+,则相应的运算符函数名是+D重载一个二元运算符时,必须声明两

2、个形参 15以下关于模板的表达中,错误的选项是A 丨模板声明中的第一个符号总是关键字templateB在模板声明中用 括起来的部分是模板的形参表C类模板不能有数据成员D在一定条件下函数模板的实参可以省略16对于语句 coutendlx ;中的各个组成部分,以下表达中错误的选项是 A cout 是一个输出流对象B endl 的作用是输出回车换行C x 是一个变量D 称作提取运算符17以下字符串中,正确的C+标识符是A foo-1 B 2bC new D _256 18已知枚举类型定义语句为:enum TokenNAME,NUMBER,PLUS=5,MINUS,PRINT=10; 则以下表达中错误

3、的选项是A 丨枚举常量 NAME 的值为 1 B 丨枚举常量 NUMBER 的值为 1C枚举常量 MINUS 的值为 6 D枚举常量 PRINT 的值为 10 19 执行语句序列int i=0;while(i25)i+=3;couti; 输出结果是A 24 B 25C 27 D 2820要定义一个具有 5 个元素的一维数组 vect ,并使其各元素的初值依次是 0 和 0,则以下定义语句中错误的选项是A int vect=30,50,-88; B int vect=30,50,-88,0,0;30 , 50 ,-88,Cint vect5=30,50,-88;Dint vect5=30,50,

4、-88,0,0;21有如下程序:#include void fun(int& x,int y)int t=x;x=y;y=t;int main()int a2=23,42; fun(a1,a0);std:couta0,a1std:endl;return 0;执行后的输出结果是A42,42 B23,23C23,42 D42,23 22有如下类声明: class Foo int bar; ;则 Foo 类的成员 bar 是A 公有数据成员 B 公有成员函数C私有数据成员D私有成员函数23 有如下类声明:class MyBASEint k;public:void set(int n)k=n;

5、int get()constreturn k;class MyDERIVED:protected MyBASEprotected:int j;public:void set(int m,int n)MyBASE:set(m);j=n;int get()constreturn MyBASE:get()+j;则类 MyDERIVED 中保护的数据成员和成员函数的个数是A 4 B 3C 2 D 124已知在一个类体中包含如下函数原型: VOLUME operator-(VOLUME)const; 于这个函数的表达中,错误的是A 丨这是运算符-的重载运算符函数B这个函数所重载的运算符是一个一元运算符C

6、这是一个成员函数,以下关D这个函数不改变类的任何数据成员的值 25有如下函数模板定义: template T func(T x,T y) return x*x+y*y; 在以下对 func 的调用中,错误的选项是A func(3,5); B func(3.0,5.5);C func(3,5.5); D func(3,5.5);27在以下函数原型中,可以作为类AA 构造函数的是A void AA(int);B int AA();C AA(int)const;D AA(int); 28以下关于 this 指针的表达中,正确的选项是A 丨任何与类相关的函数都有this 指针B类的成员函数都有this

7、 指针C类的友元函数都有this 指针D类的非静态成员函数才有this 指针29 有如下程序:#include using namespace std; class Testpublic:Test() n+=2; Test() n-=3; static int getNum() return n; private:static int n;int Test:n=1;int main()Test* p=new Test; delete p; coutn=Test:getNum()endl; return 0;执行后的输出结果是 A n=0 B n=l C n=2 D n=3 30有如下程序: #

8、include using namespace std; class A public:A()coutA; classBpublic:B()coutB; classC:public AB b; public:C()coutC; int main() C obj; return 0; 执行后的输出结果是A CBA B BAC CACB D ABC 31有如下类声明: class XAint x;public:XA(int n)x=n; class XB:public XAint y;public:XB(int a,int b); 在构造函数 XB 的以下定义中,正确的选项是A) XB:XB(in

9、t a,int b):x(a),y(b)BXB:XB(int a,int b):XA(a),y(b)C XB:XB(int a,int b):x(a),XB(b)D XB:XB(int a,int b):XA(a),XB(b) 32 有如下程序: #include using namespace std;class BASE public:BASE()coutBASE;class DERIVED:public BASE public:DERIVED()coutDERIVED; int main()DERIVED x;return 0; 执行后的输出结果是A BASE B DERIVEDC BA

10、SEDERIVED D DERIVEDBASE 33在表达式 x+y*z 中, +是作为成员函数重载的运算符, 运算符。以下表达中正确的*是作为非成员函数重载的A operator+ 有两个参数,Boperator*有两个参数,Coperator* 有一个参数, D operator+ 有一个参数,34下面关于 C* *流的表达中,正确的选项是A cin 是一个输入流对象B 可以用 ifstream 定义一个输出流对象C执行语句序列char *y=PQMN; couty; 将输出字符串PQMN的地址D执行语句序列char x80;ci n.getl in e(x,80);时,假设键入Happy

11、 new year则 x 中的字符串是 Happy 35有如下程序: #include using namespace std;class AAint n;public:AA(int k):n(k)int get()return n;int get()constreturn n*1;int main()AA a(5);const AA b(6);couta.get()b.get();return 0;执行后的输出结果是A 55 B 57C 75 D 776以下函数的功能是判断字符串str 是否对称,对称则返回true,否则返回false。请在横线处填上适当内容,实现该函数。bool fun(c

12、har *str)int i=0,j=0;while(strj) _ ;for(j-;ij & stri=strj;i*,j-);return i _ j; 7执行语句序列 int x=l0,&r=x; coutx-rendl;输出结果为 _。 8以下程序的输出结果为Object id=0Object id=l请将程序补充完整。#include using namespace std;class Pointoperator* 有两个参数operator* 有一个参数operator*有两个参数operator*有一个参数public:Point(int xx=0,int yy=

13、0) X=xx;Y=yy;countP+;Point()countP-;int GetX()return X;int GetY()return Y;static void GetC()coutObject id = cou ntPe ndl;private:int X,Y;static int countP;_ /静态数据成员的初始化int main()Point:GetC();Point A(4,5);A.GetC();return 0; 9非成员函数应声明为类的 _ 函数才能访问这个类的 private 成员。 10派生类中的成员不能直接访问基类中的 _ 成员。 11以下程序的输出结果为2

14、,请将程序补充完整。#include using namespace std;class Basepublic:_void fun()cout1;class Derived:public Basepublic:void fun()coutfun();delete p;return 0; 12 请将以下类定义补充完整。class Basepublic: void fun()coutBase:funendl;class Derived:public Basepublic:void fun()_ /显式调用基类的 fun 函数 coutDerived:fun= 8 int Point:countP=

15、0 ; 9友元 10 私有或 private 11 virtual 12 Base:fun( );6.411以下关于 C+ 函数的说明中,正确的选项是A 丨内联函数就是定义在另一个函数体内部的函数B 函数体的最后一条语句必须是 return 语句C标准 C+要求在调用一个函数之前,必须先声明其原型D编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式13 以下关于虚函数的说明中,正确的选项是A 丨从虚基类继承的函数都是虚函数B虚函数不得是静态成员函数C只能通过指针或引用调用虚函数D抽象类中的成员函数都是虚函数 14运算符重载是对已有的运算符赋予多重含义,因此A 丨可以对基本类型如 in

16、t 类型的数据,重新定义“ +”运算符的含义 B可以改变一个已有运算符的优先级和操作数个数C只能重载 C+中已经有的运算符,不能定义新运算符DC+中已经有的所有运算符都可以重载15模板对类型的参数化提供了很好的支持,因此A 丨类模板的主要作用是生成抽象类B类模板实例化时,编译器将根据给出的模板实参生成一个类C在类模板中的数据成员都具有同样类型D类模板中的成员函数都没有返回值18以下语句中,错误的选项是A const int buffer=256; B const int temp;C const double *point; D const double *rt=new double(5.5)

17、; 20 有如下程序:#include using namespace std;int main()int *p;*p = 9;cout The value at p: *p;return 0;编译运行程序将出现的情况是A)编译时出现语法错误,不能生成可执行文件B)运行时一定输出:The value at p:9C运行时一定输出:The value at p:*9D运行时有可能出错21 有如下程序:#includeusing namespace std;int main()void function(double val);double val;function(val);coutval;re

18、turn 0;void function(double val)val = 3;编译运行这个程序将出现的情况是A 丨编译出错,无法运行B输出:3C输出:3.0 D输出一个不确定的数22 有如下类定义:class AAint a;public:int getRef()const return &a; /int getValue()const return a; / void set(int n)const a=n; /friend void show(AA aa)const couta; / ; 其中的四个函数定义中正确的选项是A 丨B 丨CD 丨23 有如下程序: #include u

19、sing namespace std;class Basepublic:void fun() coutBase:funendl; ;class Derived : public Basepublic: void fun()coutDerived:funfun(); D fun();24 下面是重载为非成员函数的运算符函数原型,其中错误的选项是A Fraction operator + (Fraction, Fraction); B Fraction operator - (Fraction);CFraction& operator = (Fraction&, Fraction)

20、;D Fraction& operator += (Fraction&, Fraction);25有如下函数模板: template T cast(U u) return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,以下对模板函数 cast 的调用中正确的选项是A cast(i); B cast(i);C cast(i); D cast(i); 26假设磁盘上已存在某个文本文件,其全路径文件名为d:ncretest.txt ,以下语句中不能打开该文件的是A ifstream file(d:ncretest.txt);B ifstream f

21、ile(d:ncretest.txt);C ifstream file; file.open(d:ncretest.txt); D ifstream* pFile = new ifstream(d:ncretest.txt);27有如下类定义: class Foopublic:Foo(int v) : value(v) / Foo() / private:Foo() / int value = 0; / ;其中存在语法错误的行是A 丨B 丨CD 丨28 有如下类定义:class Pointint x_, y_;public:Point(): x_(0), y_(0) Point(int x,

22、int y =0): x_(x), y_(y) ;假设执行语句Point a(2), b3, *c4;则 Point 类的构造函数被调用的次数是A 2 次 B 3 次C 4 次 D 5 次29 有如下类定义:class Testpublic:Test() a = 0; c = 0; / int f(int a) const this-a = a; / static int g () return a; / void h(int b) Test:b = b; ;/ private:int a;static int b;const int c;int Test:b = 0;在标注号码的行中,能被正

23、确编译的是A 丨B 丨CD 丨30 有如下程序:#include using namespace std;class Apublic:A() cout A; A() cout A; ;class B : public AA* p;public:B() cout B; p = new A(); B() cout B; delete p; ;int main()B obj;return 0;执行这个程序的输出结果是A BAAABA B ABABAA C BAABAA D ABA ABA32 有如下程序:#include using namespace std;class Basepublic:vo

24、id fun1() cout Basen; virtual void fun2() cout Basen; ;class Derived : public Basepublic:void fun1() cout Derivedn; void fun2() cout Derivedn; ;void f(Base& b) b.fun1(); b.fun2(); int main()Derived obj;f(obj);return 0;执行这个程序的输出结果是A BBase BaseBase DerivedC DDerived DerivedBase Derived33有如下程序:#inc

25、lude using namespace std;class Complexdouble re, im;public:Complex(double r, double i) : re(r), im(i) double real() const return re; double image()const return im; Complex& operator += (Complex a)re += a.re;im += a.im;return *this;ostream& operator (ostream& s, const Complex& z)retur

26、n s(z.real(),z.image();int main()Complex x(1,-2), y(2,3);cout (x+=y) endl; return 0;执行这个程序的输出结果是A(1,-2) B (2,3)C(3,5) D (3,1) 35有如下类声明: class SAMPLEint n;public:SAMPLE(int i=0):n(i)void setValue(int n0);以下关于 getValue 成员函数的实现中,正确的选项是A ) SAMPLE:setValue(int n0) n=n0;B void SAMPLE:setValue(int n0) n=n0

27、;C void setValue(int n0) n=n0;D (int n0) n=n0; 6有一种只在循环语句或 switch 语句中使用的流程控制语句,表示该语句的关键字是 7程序中有如下语句for(int i=0; i5; i+) cout*(p+i),;能够依次输出 int 型一维数组 DATA 的前 5 个元素。由此可知,变量 p 的定义及初始化 语句是 。8假设下面程序运行时输出结果为1,A,10.12,B,3.5请将程序补充完整。#include using namespace std;int main()void test(int, char, double _ );test

28、(1, A, 10.1 );test(2, B);return 0;void test(int a, char b, double c)couta,b,cendl;9有如下类声明: class MyClassint i;private: int j;protected: int k;public: int m, n; ;其中,私有成员的数量为 _。10有如下程序:#include using namespace std;class Conchar ID;public:Con(): ID(A) cout1; Con(char ID): ID(ID) cout2;Con(Con& c):

29、ID(c.getID() cout3; char getID()const return ID;void show(Con c) coutc.getID(); int main()Con c1;show(c1);Con c2(B);show(c2);return 0;执行上面程序的输出是 _。11有如下程序:#include using namespace std; class ONEpublic:virtual void f() cout 1; ;class TWO : public ONEpublic:TWO() cout 2; ;class THREE : public TWOpublic:virtual void f() TWO:f(); cout f(); return 0;执行上面程序的输出是 _ 。12有如下程序:#include using namespace std;class PARENT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论