C++程序设计习题与答案_第1页
C++程序设计习题与答案_第2页
C++程序设计习题与答案_第3页
C++程序设计习题与答案_第4页
C++程序设计习题与答案_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

《C++程序设计》习题与答案第一部分(第1-7、8、9章)一、单项选择题1、在C++中,有关下列设置缺省参数值的描述中,()是对的的。

A.不容许设置缺省参数值;

B.在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;C.只能在函数的定义中指定参数的缺省值;

D.设置缺省参数值时,必须所有都设置;2、有关友元函数的描述中,错误的是()。A.友元函数阐明在类体内 B.友元函数必须用对象来引用C.友元函数不是组员函数 D.友元函数可以直接访问类中的私有组员3、下列有关构造函数的特性的描述中,对的的是()。A.不可以重载B.不阐明其类型C.与类名不一样D.不可以设置默认参数4、下列关键字中,()不是类定义中使用的关键字。A.classB.switchC.publicD.private5、也许具有类型转换功能的构造函数应当是()不带参数的构造函数带一种参数的构造函数带两个参数的构造函数默认构造函数6、下列有关new运算符的描述中,错误的是()。A.new运算符构成的体现式的值是地址值B.用它创立的对象须用delete来删除C.创立对象时不调用构造函数D.可用它来创立动态的对象和对象数组7、下面选项中,不是类的组员函数为()构造函数析构造函数友元函数缺省参数的构造函数8、在类定义的外部,可以被访问的组员有()。A.所有类组员B.private或protected的类组员C.public的类组员D.public或private的类组员9、有关静态组员的描述中,()是错误的。静态组员可分为静态数据组员和静态组员函数静态数据组员初始化不使用其构造函数静态数据组员定义后必须在类体内进行初始化静态组员函数中不能直接引用非静态组员10、下列有关对象引用的描述中,错误的是()。A.对象引用不能作数组元素B.对象引用可作为函数的参数和返回值C.定义对象引用时需用同类对象的地址值进行初始化D.对象引用组员表达与对象相似二、判断题构造函数和析构函数都是系统自动调用的。运算符new可以创立变量或对象,也可以创立数组。构造函数和析构函数都可以重载,由于它们都是组员函数。友元函数是组员函数,它可以访问类中私有组员。子对象的初始化可以不放在该类的构造函数中。假定AB为一种类,则执行“AB

a[10];”语句时,系统自动调用该类的构造函数的次数为1次。类的构造函数具有与其类名相似的名字。对象数组的元素必须是同一种类的对象。用class定义的类中,默认的访问权限是公有的。假如一种类中没有定义任何构造函数,则该类的对象便无法初始化。三、写出下列程序的输出成果:1、#include<iostream.h>#include<string.h>classA{public: A(inti=0) {a=i+b;} voidPrint(); ~A() {cout<<"Destructor\n";}private: inta; staticintb;};voidA::Print(){cout<<'('<<a<<','<<b<<')'<<endl;}intA::b=5;voidmain(){ Aarray[3]; array[0]=A(1); array[1]=A(3); A*parr[3]; for(inti=0;i<3;i++) parr[i]=&array[i]; for(i=0;i<3;i++) parr[i]->Print();}2、#include<iostream.h>classStudent{public: Student(inti=0,doublej=0) {num=i;score=j;} voidprint() {cout<<num<<’,’<<score<<endl;} friendvoidfun(Student&rs);private: intnum; doublescore;};voidfun(Student&rs){rs.num=1100; rs.score=80; rs.print();}voidmain(){Students1(1000,90),s2;s1.print();fun(s2);}3、#include<iostrem.h>classTdate{public: Tdate(inti=,intj=11,intk=15); voidPrint(); ~Tdate() { cout<<“Destructor”<<day<<endl;}private: intyear,month,day;};Tdate::Tdate(inti,intj,intk){ year=i; month=j; day=k; cout<<“Cosntructor”<<day<<endl;}voidTdate::Print(){ cout<<year<<‘/’<<month<<‘/’<<day<<endl;}voidmain(){ Tdated1(,2,1); d1.Print(); Tdated2(d1); d2.Print();}4、#include<iostream.h>classA{public:A(inti=0){m=i;cout<<”Constructorcalled.”<<m<<endl;}voidSet(inti){m=i;}voidPrint()const{cout<<m<<endl;}~A(){cout<<”Destructorcalled.”<<m<<endl;}private:intm;}voidmain(){constintN=5;Amy;my=N;my.Print();}第二部分(第10、11、13章)一、单项选择题1、下列对派生类的描述中,()是错误的。基类中组员访问权限继承到派生类中都保持不变。派生类至少应有一种基类。一种派生类可以作为另一种派生类的基类。派生类的组员除了自己定义的组员外,还包括了它的基类组员。2、假定要对类AB定义加号操作符重载组员函数,实现两个AB类对象的加法,并返回相加成果,则该组员函数的申明语句为()。A.

AB

operator+(AB

&a)

B.

AB

operator+(AB

&a,AB

&b)C.

operator+(AB

a)

D.

AB

&operator+()3、派生类的对象对它的哪一类基类组员是可以访问的()公有继承的基类的公有组员公有继承的基类的保护组员公有继承的基类的私有组员保护继承的基类的公有组员4、下列对运算符重载的描述中,对的的是()。A.运算符重载可以变化结合性运算符重载可以变化优先级运算符重载可以变化操作数的个数运算符重载不变化优先级和结合性5、下列函数中,()不能重载。A.组员函数B.非组员函数C.构造函数D.析构函数6、有关动态联编的下列描述中,()是错误的。A.动态联编是在编译时确定操作函数的B.动态联编是以虚函数为基础的C.动态联编是在继承的前提下的一种多态性D.动态联编时规定类的继承是公有的7、有关纯虚函数和抽象类的描述中,错误的是()。A.抽象类的派生类一定不会再有纯虚函数。抽象类中一定具有至少有一种纯虚函数。纯虚函数没有详细实现。抽象类一般作为基类使用,其纯虚函数的实现由其派生类给出。8、在下列打开磁盘文献的访问方式常量中,以读方式打开文献时应选用()。A.inB.outC.ateD.app9、在创立派生类对象时,构造函数的执行次序是()。对象组员构造函数、基类造函数、派生类自身的构造函数。派生类自身的构造函数、基类造函数、对象组员构造函数。基类造函数、派生类自身的构造函数、对象组员构造函数。基类造函数、对象组员构造函数、派生类自身的构造函数。10、控制输出格式的控制符中,()是设置输出宽度的。A.wsB.endsC.setfill()D.setw()二、判断题1.基类中私有组员派生类不可直接访问。T2.公有继承方式下,基类中公有组员和保护组员在派生类中仍然是公有的和保护的。F3.私有继承方式下,基类中公有组员和保护组员在派生类中都是私有的。T4.派生类的构造函数中显式或隐含的包括着直接基类的构造函数。T5.派生类的对象不可以给基类对象赋值。F6.静态联编是在运行时进行的,动态联编是在编译时进行的。F7.派生类的构造函数中应包括直接基类的构造函数。F8.基类中的保护组员在其派生类中可以访问,而派生类对象不可访问。F9.抽象类不能定义对象,可以定义对象引用和对象指针。T10.一种对象在创立时,总是要被初始化的。F三、写出下面程序的输出成果。1、#include<iostream.h>classA{public:A(inti,intj){a=i;b=j;}voidMove(intx,inty){a+=x;b+=y;}voidShow(){cout<<”(”<<a<<”,”<<b<<”)”<<endl;}private:inta,b;}classB:privateA{public:B(inti,intj,intk,intl):A(i,j){x=k;y=l;}voidShow(){cout<<x<<”,”<<y<<endl;}voidf1(){A::Show();}voidfun(){Move(7,8);}private:intx,y;}voidmain(){Aa(1,2);a.Show();Bb(3,4,5,6);b.fun();b.Show();b.f1();}2、#include<iostream.h>classB{public:B(){}B(inti){b=i;}virtualvoidvirfun(){cout<<”B::virfun()called.\n”;}private:intb;}classD:publicB{public:D(){}D(inti,intj):B(i){d=j;}private:intd;voidvirfun(){cout<<”D::virfun()called.\n”;}}voidfun(B*obj){obj->virfun();}voidmain(){B*pb=newB;fun(pb);D*pd=newD;fun(pd);}3、#include<iostream.h>classA{public:A(inti,intj){a1=i;a2=j;}virtualvoidPrint(){cout<<a1+a2<<endl;}protected:inta1,a2;};classB:publicA{public:B(inti,intj):A(i,j){}voidPrint(){cout<<a1*a2<<endl;}};voidfun(A&a){a.Print();}voidmain(){intm=5,n=2;Bb(m,n);fun(b);}4、#include<iostream.h>#include<fstream.h>#include<stdlib.h>voidmain(){ fstreamf; f.open("my1.dat",ios::out|ios::in); charch[]="ILoveBeijing\n"; for(inti=0;i<sizeof(ch);i++) f.put(ch[i]); f.seekg(0); charc; while(c=f.get()) cout<<c; f.close();}第一部分(第1-7、8、9章)BBBBB DCCCC二、题号12345678910成果╳╳╳╳∨╳∨∨╳╳三、1、DestructorDestructor(6,5)(8

温馨提示

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

评论

0/150

提交评论