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

付费下载

下载本文档

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

文档简介

1、C+练习题(附答案)(XI)下列关于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)nendlH的作用是输出回车换行C)W是一个变量D)yj称作提取运算符(17)下列字符串中,正确的C+标识符是A) foo-1 B) 2bC) new D) _256(18)已知枚举类型定义语句为: enumTokenNAME,NUMBER,PLUS=5,MINU

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

4、0,-88,0,0;(21)有如下程序: #indude void fun(int& xjnt y)int t=x;x=y;y=t;int main()int a2=23,42;fun(al,a0);std:couta0n/,alstd:endl;return 0;执行后的输出结果是A) 42, 42 B) 23, 23C) 23, 42 D) 42, 23(22) 有如下类声明:class Foo int bar; ;则Foo类的成员bar是A)公有数据成员B)公有成员函数C)私有数据成员D)私有成员函数(23) 有如下类声明:class MyBASEint k;public:void se

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

6、数这个函数所重载的运算符是一个一元运算符C)这是一个成员函数D) 这个函数不改变类的任何数据成员的值(25) 有如下函数模板定义: template T func(T x,T y) return xx+yy;在下列对func的调用中,错误的是A) func(395); B) fimc(3.0,5.5);C) func(3,5.5); D) func(3,5.5);(27)在下列函数原型中,可以作为类AA构 造函数的是A) void AA(int);B) intAA();C) AA(int)const;D) AA(int);(28)下列关于this指针的叙述中,正确的是A)任何与类相关的函数都有

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

8、 ) n=2 D ) n=3(30)有如下程序:#indude using namespace std; class A public:A()coutnAn;classB public: B () cou t dassC: public A Bb;public:C()coutnCn;int main() C obj; return 0;执行后的输出结果是A) CBAB) BACC) ACBD) ABC(3D有如下类声明: class XAint x;public:XA(int n)x=n;class XB: public XAinty;public:XB(int a9int b);在构造函数X

9、B的下列定义中,正确的是A) XB:XB(int b):x(a),y(b) B )XB:XB(int a9int b):XA(a),y(b)C ) XB:XB(int ajnt b):x(a),XB(b) D )XB:XB(int a9int b):XA(a),XB(b)(32)有如下程序: #indude using namespace std;class BASEpublic:BASE()coutvvBASE;class DERIVED:public BASEpublic:DERIVED()coutvvDERIVED;int main()DERIVED x;return 0;执

10、行后的输出结果是A) BASEB) DERIVEDC) BASEDERIVED D) DERIVEDBASE(33)在表达式x+yz中,十是作为成员函数 重载的运算符,*是作为非成员函数重载的运算 符。下列叙述中正确的是A) operator+有两个参数,operator有两个参B) operator+有两个参数,operator有一个参 数C) operator+有一个参数,operator有两个参 数D) operator+有一个参数,operator*有一个参 数(34)下面关于C+流的叙述中,正确的是A) cin是一个输入流对象B) 可以用ifstream定义一个输出流对象C)执行语句

11、序列 char 来y=PQMN; couty; 将输出字符串” PQMN”的地址D)执行语句序列charx80 ;cin.getIine(x,80);时,若键入Happy new year 则X中的字符串是Happy(35)有如下程序:#indude 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) 5

12、5 B) 57C) 75 D) 77(6) 下列函数的功能是判断字符串str是否对称,对称则返回true,否则返回falseo请在横线处填上适当内容,实现该函数。bool fun(char *str)int i=0J=0;while(strj);for(j-;ij & stri=strj;i+J-);return ij;(7)执行语句序列 int x=10,&r=x;coutx1 -frendl;输出结果为o(8)下列程序的输出结果为Object id=0Object id=I请将程序补充完整。#indude using namespace std;class Pointpublic:yy=o

13、)id =Point(intxx=0,intX=xx ;Y=yy; countP+;-Point()countP;int GetX()return X;int GetY()return Y;static void GetC()coutnObject1 f countPendI;private:int X,Y;static int countP;静态数据成员的初始化int main()Point:GetC();Point A(4,5);A.GetCQ;return 0;(9)非成员函数应声明为类的函数才能访问这个类的private成员。(10)派生类中的成员不能直接访问基类中的成员。(11)下列

14、程序的输出结果为2,请将程序补充完整。#indude using namespace std;class Basepublic:void fun()coutl; ;class Derived:public Basepublic:void fun()cout2;int main()Basep=new Derived; p-fun(); delete p;return 0;void(12)请将下列类定义补充完整。classBasefpublic:fun() cout1 B ase:funHendI;class Derived:public Basepublic:void fun()显式调用基类的f

15、un函 数cout1 Derived: fun1 v vendl;一、选择题(11)C)(12)A)(13)D)(14)B)(15)C)(16)D)(17)D)(18)A)(19)C)(20)A)(21)B)(22)C)(23)B)(24)B)(25)C)(27)D)(28)D)(29)A)(30)D)(31)B)(32)D)(33)C)(34)A)(35)B)二.填空题j+=(8) int Point:countP=0;(9) 友元(10) 私有或 private(11) virtual(12) Base:fun();6.4(ID下列关于C+函数的说明中,正确的是 A)内联函数就是定义在另一

16、个函数体内部的函 数B)函数体的最后一条语句必须是return语句C)标准C+要求在调用一个函数之前,必须先 声明其原型D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式(13)下列关于虚函数的说明中,正确的是A)从虚基类继承的函数都是虚函数B)虚函数不得是静态成员函数C)只能通过指针或引用调用虚函数D)抽象类中的成员函数都是虚函数(14)运算符重载是对已有的运算符赋予多重含义,A)可以对基本类型(如int类型)的数据,重 新定义“十”运算符的含义B)可以改变一个已有运算符的优先级和操作数 个数C)只能重载C+中已经有的运算符,不能定义 新运算符D)C+中已经有的所有运算符都可以

17、重载(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);(20)有如下程序: #indude using namespace std;int main()int 来p;來 p = 9;cout The valu

18、e at p: n 來p;return 0;编译运行程序将出现的情况是A) 编译时出现语法错误,不能生成可执行文件B) 运行时一定输出:The value at p:9C) 运行时一定输出:The value at p:9D) 运行时有可能出错(21)有如下程序: #indude using namespace std;int main()void function(double val); double val;function(val);coutval;return 0;void function(double val)val = 3;编译运行这个程序将出现的情况是A)编译出错,无法运行B

19、)输出:3C)输出:3.0 D)输出一个不确定的数(22)有如下类定义:class AAint a;public:intgetRef()constreturn&a;intgetValue()const return a;IIvoid set(int n)const a=n; friend void show(AA aa)const couta; ;其中的四个函数定义中正确的是A)B)C)D)(23)有如下程序: #include using namespace std;class Basepublic:void fun() coutMBase:funnendI; ;class Derived

20、: public Basepublic:void fun()cout1 Derived: fun1 v vendl; ;int main()Derived d;d.fun();return 0;已知其执行后的输出结果为:Base:funDerived: :fun则程序中下划线处应填入的语句是A) Base.funQ; B) Base:fun();C) Base-fun(); D) fun();(24)下面是重载为非成员函数的运算符函数原型,其中错误的是A) Fraction operator + (Fraction, Fraction);B) Fraction operator - (Frac

21、tion);C) Fraction& operator = (Fraction&, Fraction); D ) Fraction& operator += (Fraction&9Fraction);(25)有如下函数模板:template T cast(U u) return u; 其功能是将U类型数据转换为T类型数据。 已知i为int型变量,下列对模板函数cast的 调用中正确的是A) cast(i); B) casto(i);C) castvchar笃 int(i); D) cast;(26) 若磁盘上已存在某个文本文件,其全路径 文件名为d:ncretesttxt,下列语句中不能打开

22、该文件的是A) ifstream file(1 *d:ncretest.txt1 ; B) ifstream flle(! d:WncreWtest.txtM);C) ifstream file; flle.open(1 *d:ncretest.txt!*); D ) ifstream pFile = new ifstream(f d:WncreWtest.txtM);(27)有如下类定义:class Foopublic:Foo (in t v) : value(v) / Foo() / private:Foo() / int value = 0;;其中存在语法错误的行是 A) B)C)D)(

23、28)有如下类定义:class Pointint x_, y_;public:Point(): x_(0), y_(0) Point(int x, 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; ;/

24、private:int a;static int b; const int c;int Test:b = 0;在标注号码的行中,能被正确编译的是A)B)C)D)(30)有如下程序:#indude using namespace std; class Apublic:A() cout nAn; -A()coutn-An; ;class B : public AA* p;public:B() cout MBn; p = newA(); B() cout B; delete p; ;int main()B obj;return 0;执行这个程序的输出结果是A) BAAABAB) ABABAAC) B

25、AABAAD) ABA ABA(32)有如下程序: #indude using namespace std;class Basepublic:void funl() cout HBasenf,; virtual void fun2() cout nBasenn;class Derived : public Basepublic:void funl() cout MDerivednn; void fun2() cout MDerivednn; ;void f(Base& b) b.funl(); b.fun2(); int main()Derived obj;f(obj);return 0;执行

26、这个程序的输出结果是Base BaseBase DerivedC) D)Derived DerivedBase Derived(33)有如下程序:#include using namespace std;class Complexdouble re, im;public:Complex(double r, double i) : re(r)9 im(i) double real() const return re; double image() const return im; Complex& operator += (Complex a)re += a.re;im += a.im;retu

27、rn 叫his;ostream& operator (ostream& s,constComplex& z)returnsl(,z.real(),/z.image()l)f;int main()Complex x(l2), y(2,3); cout (x+=y) endl; return 0;执行这个程序的输出结果是A) (12)B) (2,3)C) (3,5) D) (3,1) (35)有如下类声明: class SAMPLEint n;public:SAMPLE(int i=0):n(i) void set Value (int nO);下列关于getValue成员函数的实现中,正确的 是

28、A) SAMPLE:setValue(int n0) n=n0;B) void SAMPLE:setValue(int n0) n=n0;C) void setVa!ue(int n0) n=nO;D) (int n0) n=nO;(6)有一种只在循环语句或switch语句中使用的流程控制语句,表示该语句的关键字是(7) 程序中有如下语句 for(int i=0; i5; i+) cout*(p+i)1 H;能够依次输出int型一维数组DATA的前5 个元素。由此可知,变量p的定义及初始化语 句是(8) 若下面程序运行时输出结果为1AJ0.1 2,B,35请将程序补充完整。#indude us

29、ing namespace std;int main()void test(int, char, double);test(l, fA 10.1);testB);return 0;void test(int a9 char b9 double c)couta1,1 b1,1 cendl;(9) 有如下类声明:class MyCIassprivate: int j; protected: int k; public: int m,n;;其中,私有成员的数量为(10)有如下程序: #include using namespace std;class Conchar ID;public:Con():

30、 ID( A ) coutl; Con(char ID): ID(ID) cout2;Con(Con& c): ID(c.getID() cout3; char getID()const return ID;void show(Con c) coutc.getID(); int main()Con cl;show(cl);Con c2(,Bt);show(c2);return 0;执行上面程序的输出是(11)有如下程序: #indude using namespace std;class ONEpublic:virtual void f() cout T; class TWO : public

31、 ONEpublic:TWO() cout n2n; ;class THREE : public TWOpublic:virtual void f() TWO:f(); cout 3;;int main()ONE aa9 來p;TWO bb;THREE cc;p = &cc;p-f();return 0;执行上面程序的输出是(12)有如下程序:#indude using namespace std; class PARENTpublic:PARENTO cout ”PARENT”; ;class SON : public PARENTpublic:SON() cout nSONn; ;int

32、main()SON son;PARENT 來p;p = & son;return 0;执行上面程序的输出是(14)下面是复数类complex的定义,其中重 载的运算符“十”的功能是返回一个新的复数对象,其实部等于两个操作对象实部之和,其虚部等于两个操作对象虚部之和;请补充完整:class complexdouble real; double imag;public:实部虚部complex(doubler,doublei):real(r)4mag(i)complex operator + (complex a)return complex();(15)已知一个函数模板定义为 templateT1

33、 FUN(T2 n) return n5.0;若要求以int型数据7为函数实参调用该模板函数,并返回一个double型数据,则该调用应表示为一、选择题(11) c)(13)B)(14)C)(15)B)(18) B)(20) D)(21) D)(22) B)(23) B)(24) C)(25) D)(26) A)(27) D)(28) C)(29) D)(30) B)(32) B)(33) D)(35) B)二. 填空题(6) break(7) int p=DATA(8) =3.5(9) 2(10) 13A23B(11) 2213(12) PARENTSON(14)【14】 real+a.rea

34、imag+a.imag(15 ) 15 FUN(7)FUN(7)三、完善程序1.用指针和数组来显示Fibonacci数列。include using namespace std;int mainOint i, fibon10=0,1,1,2, 3,5,8,12,21,34,*pfibl, *pfib2;pf ib l=pf ib2=;cout使用数组显示Fibonacci数列*endl;for(i=0;i10;i+)coutfiboni* t endl;cout使用指针显示Fibonacci数列zrendl; for(i=0;i10;i+)cout* (fibon+i) t endl;cout

35、*显示指针相减,应为数组长度:”;coutpf ib2-pf iblendl;return 0;2.定义一个矩形类Rectangle,数据成员有:长a,宽b,均为整 型,私有访问权限。对其操作有:输入操作、计算周长perimeter.计算面积和输出操作。class Rectangleint a, b;public:void input ();void perimeter();void area();void out put ();sl; input () 成员函数中访问类中的数据成员cout请输入矩形的长和宽:;cinab;void Rectangle::perimeter()/注意类名不可省

36、 cout using namespace std class studentprivate:char m_num5;float m_score;public:student(char num5) float score); void output ();student:student(char num5) float score)void student:output()coutm num, ,m name, ,m scoreendl;OMBOMBvoid main() 创建类对象,学号330105002,分数80 si. output ();4. 完成商品类对象的应用实例。# includ

37、eiomanip#includeusing namespace std;class CGoodsprivate:char Name 21;int Amount;float Price;float Total_value;public:CGoods ():无参构造函数CGoods (char , int, float) ;/*有参构造函数,参数个数为3*/void CountTotal(void);/*函数声明时,形参中可以只有返回类型*/ float GetTotal_value(void):; CGoods: CGoods ()Name0=,0 ;Price=0. 0;Amount=0:To

38、tal_value=0. 0;CGoods:CGoods(char name int amount, float price)Price=price;Amount二amoun t;Total_value=pri ce*amount;void CGoods:CountTotal()Total_value= float CGoods:GetTotal_value()int mainOCGoods Carl (夏利,30,98000. 0);coutsetw(10) Carl. GetPrice () setw(20) Carl. GetTotal_value () endl;return 0;5.

39、 打印杨辉三角形,要求使用类及多文件结构实现。/*头文件:yang, h*/class yangint a 20 20;int n;public:yang(int 1=10);void show ();;/*源文件:yang, cpp*/ttinclude iostreamttinclude using namespace std;yang:yang(int 1)int i, j; n=l=10?l:10; for(i=0;in;i+)for(j=0; j=i; j+)辻)ai j=l;elsevoid yang: show()int i, j, k; for(i=0;i=0;k) cout*

40、 ”; for(j=0;j=i;j+) coutsetw(6) ai j;cout endl;/*源文件:test. cpp*/#inc lude#includeyang, h using namespace std;void main()int i; yang s4; for(i=0;i show();6.(1)使用指针作为函数参数交换两个变量的值。#i ncludeios tream using namespace std;void change (int *pl, int *p2) /以指针作为形参*/t=*pl;p2=t;void main()int x=100, y=40;cout*

41、交换前的值为*endl; coutx J yendl;cout交换后的值为/endl;coutx, yendl;(2)使用引用作为形参交换两个变量的值。# includeios traamusing namespace std;void change (int &b, int &d)t=s;s=d;d=t;void main()int x=100, y=40;cout*交换前的值为*endl;coutx J yendl;cout交换后的值为endl; coutx, 1 yendl;7.从键盘上输入字符,写入文件fl.txt中,o表示输入结束。void main()ofstream ofile;

42、 char ch;int i=0;ofile. open(*e:fl. txt);doch=cin. get ();of 订 esetw (3) ch;i卄;if (i=10)ofil6endl;i=0;while (ch!=,O);ofile. close ();打开文件fl. txt,读出其内容,在屏幕上输出。void main()ifstream ifile;char ch;ifile. open(e:fl. txt);while(ifile. get(ch)coutch;cout endl;ifile close ();&构造CPU类与Computer类,具体成员如右图所示:class

43、 CPUchar cputype20;float cpuprice;public:CPU (char a_cputype =* 惠普 ”,floa t a_cpuprice=234);CPU (const CPU &a);void show ();CPU();class ComputerCPU k;char Manufacturer20;float Price;public:Computer (char k_Manuf acturer =达利园 floatk_Price=123, char k_cputype =/z联 floatk_cpuprice=7788):strcpy( Manufac

44、turer, k_Manufacturer); Price=k_Price;void print ()coutcpuprice CPU k man u fact urer pricecpuprice=a cpuprice+100;CPU()Co mput er(CPU(CPU()print()void CPU: show()showQ-Co mput er()cout*CPU 的类型:* cputypeendl;cout*CPU 的价格:/zcpupriceendl;CPU:CPU()coutcputype * 被析构 了endl;void mainOComputer s;s. print (

45、);9.定义复数类,通过重载+运算符进行复数类对象间的算术运算。class complexdouble real image;public:complex(double r=0, double i=0);complex operator+(const complex &a);void show();complex:: complex (double r, double i)real=r;complex complex:operator+(const complex &a) complex temp;temp. real=;temp. image=image+a. image;return ;void complex::show()coutreal/r+/rrendl;return s;complex & complex: : opera to r+ (complex &a)return complex ();complex &operator+(double &a, complex &b)turn co

温馨提示

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

评论

0/150

提交评论