在c语言程序设计作业,《C语言程序设计》作业题.doc

《《C语言程序设计》作业题.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计》作业题.doc(36页珍藏版)》请在人人文库网上搜索。

1、C+语言程序设计作业题一、判断题( )1、写在类体内的函数都是内联函数。( )2、通常的拷贝初始化构造函数的参数是某个对象的指针名。( )3、重载运算符可改变原运算符的优先级和结合性。( )4、在设置了默认参数值后,调用函数的对应实参就必须省略。( )5、析构函数是一种函数体为空的成员函数。( )6、某类的友元类的所有成员函数可以存取或修改该类中的私有成员。( )7、对象数组的元素可以是不同类的对象。( )8、函数的参数个数、类型及位置都相同,只是函数返回值类型不同,这不是重载函数。( )9、派生类是从基类派生出来的,但它不能再生成新的派生类。( )10、构造函数和析构函数都不能重载。( )1。

2、1、在公有继承中,基类中只有公有成员对派生类的对象是可见的。( )12、this指针是一个指向正在被某个成员函数操作的对象的指针。( )13、一维对象指针数组的每个元素应该是某个类的对象的地址值。( )14、在C+中,定义函数时必须给出函数的类型。( )15、析构函数是一种函数参数表为空的成员函数。( )16、派生类的继承方式有两种:公有继承和私有继承。( )17、自身类对象的引用不可以作为该类的成员。( )18、多重继承情况下,派生类中对基类成员的访问不会出现二义性。( )19、可以在类的构造函数中对静态数据成员进行初始化。( )20、多重继承情况下,派生类的构造函数的执行顺序取决于定义派生。

3、类时所指定的各基类的顺序。( )21、在单继承情况下,派生类中对基类成员的访问不会出现二义性。( )22、转换函数不是成员函数,它是用来进行强制类型转换的。( )23、在公有继承中,基类中的保护成员对派生类对象是可见的。( )24、虚基类是用来解决多继承中公共基类在派生类中只产生一个基类子对象的问题。( )25、在保护继承中,基类中的公有成员对派生类对象是可见的。( )26、抽象类是指一些不能定义对象的类。( )27、虚函数是用virtual关键字说明的成员函数。( )28、动态联编是在运行时选定所要调用的成员函数的。( )29、声明派生类时,在派生类的头部都要明确列出其直接基类和间接基类。(。

4、 )30、在C+中对于运算符重载,只能重载已有的运算符。( )31、在程序中可以直接调用构造函数。( )32、解决多继承情况下出现的二义性的方法之一是使用作用域运算符。( )33、函数重载是一种多态现象,它属于动态联编。( )34、友元函数、友元类的声明可以放在类定义中的任何地方。( )35、抽象类是一些不能实例化的类,即不能定义对象的类。( )36、const对象不能随意被修改,但const成员函数可以修改const对象。( )37、拷贝初始化构造函数的参数只能是对某个对象的引用。( )38、类的公有静态成员既可以用类的对象访问,也可以用作用域运算符通过类名访问。( )39、拷贝初始化构造函。

5、数的参数可以是某类的对象名。( )40、在类体外定义的函数若没有关健字inline说明,则都是外联函数。( )41、C+中的所有函数调用都是传引用调用。( )42、析构函数说明为虚函数是没有意义的。( )43、派生类的构造函数的成员初始化列表中,可以包含基类的子对象初始化。( )44、构造函数说明为虚函数是没有意义的。( )45、对每个可重载的运算符来说,它既可以重载为友元函数,又可以重载为成员函数,还可以重载为非成员函数。( )46、C+中的所有函数调用都是传值调用。( )47、使用关键字class定义的类中,缺省的访问权限是公有(public)的。( )48、使用关键字class定义的类中。

6、,缺省的访问权限是私有(private)的。( )49、如果一个成员函数只存取类的静态数据成员,则可将该成员函数说明为静态成员函数。 ( )50、说明和定义类的对象时,类名前面不需要加class关键字。二、填空1、如果一个函数没有返回值,定义时需用类型说明符______说明。2、通常的拷贝初始化构造函数的参数是___________。3、对象成员的表示与结构体成员的表示相同,使用运算符____或____。4、已知:p是一个指向类A数据成员m的指针,a1是类A的一个对象,如果要给对象a1的数据成员m赋值为5,应____________赋值。5、C+中,继承分为单继承和_____,而继承方式可分为。

7、_____、______、______。6、任何类中允许有三种类型的成员,它们分别是______、_______、_______。7、________能够用来访问当前作用域内与局部变量同名的全局变量。8、在类内部定义的_____和_____成员不能被不属于该类的成员函数来存取,定义为______的成员则可以在类外部进行存取。9、静态数据成员的赋初值是在________进行。10、C+的函数如果在返回类型、参数类型、参数个数、_______上有所不同,则认为是不同的函数(注:对于同名函数而言)。11、如果不能成功地分配所需要的内存时,new返回____。12、在编译时将所用函数的代码嵌入到主调函。

8、数中,这种函数称为________。13、如果静态成员函数中要引用非静态成员时,可通过_____来引用。14、当使用delete运算符释放一个对象时,delete会自动调用_______。15、从一个基类派生的继承为单继承,从多个基类派生的继承为_______。16、多继承下,可能造成对基类中某个成员访问的________。17、如果想要使公共基类在派生类中只产生一个基类子对象,则必须将这个基类设为______。18、面向对象程序设计的三大特征是封装性、继承性和________。19、多态从实现的角度来讲可以划分为两类,编译时的多态和_______。20、将运算符+重载为类的友元函数时,定义前。

9、置+有____个参数,而定义后置+有___个参数。21、抽象类不能实例化,即不能定义一个抽象类的_______。22、关键字______、______、______ 和 _______在C+中用来建立新的数据类型。23、定义在类内部的函数为________,编译器会在调用该函数处,将函数代码的拷贝在调用函数处展开。24、在类定义时如果没有定义构造函数,编译系统会自动生成一个_______。25、类的______成员只能被该类的成员函数或友元访问。26、使关键字class定义的类中缺省的访问权限是________。27、一个类中只可能定义_____个析构函数。28、当一个类的成员是另一个类的对象。

10、时,该对象称为_______。29、静态数据成员在定义或说明时前面要加上关键字_______。30、C+程序必须包含头文件_________后,才能使用输入输出流。31、在说明const变量时,必须对该变量_______。32、在需要基类对象的任何地方都可以使用________的对象来代替。33、带有纯虚函数的类是________。34、动态联编可以通过_____或引用所标识的对象来操作虚函数。35、_____限定符用来声明只读变量。36、公有成员函数的集合称为类的_______。37、重载不能改变运算符的_________和_______。38、运算符______动态分配一个对象。39、__。

11、_______能够定义一个在不同数据类型基础上完成同一任务的函数。40、每个对象都维护了一个指向自身的指针,这个指针称为______指针。41、处于同一层次的各基类构造函数的执行顺序取决于________所指定的各基类的顺序。42、_______是用来初始化类的数据成员的一种特殊的成员函数。43、受保护的成员不能被外界引用,但它可以被派生类的________引用。44、静态联编工作是在________阶段完成的。45、在C+中,对虚函数来说,不能声明_______,但可以声明虚析构函数46、______成员函数的实现中不能直接引用类中说明的非静态成员。47、const char *p说明了p是。

12、指向_______的指针。48、通常,类的成员函数的访问模式是________,数据成员的访问模式是_______。49、当用受保护的继承从基类派生一个类时,基类的公有成员成为派生类的______成员,基类的受保护成员成为派生类的_______成员。50、如果一个类包含一个或多个纯虚函数,则该类为________。三、选择题1、下列有关类的说法不正确的是________。 类是一种用户自定义的数据类型; 只有类中的成员函数或友元函数才能存取类中的私有成员; 在类中,如果不作特别说明,所有的数据均为私有类型; 在类中,如果不作特别说明,所有的成员函数均为公有类型;2、局部变量可以隐藏全局变量,那。

13、么在有同名全局变量和局部变量的情形时,可以用_______提供对全局变量的访问。 作用域运算符 指针运算符 提取运算符 插入运算符3、类模板的使用实际上是将类模板实例化成一个具体的________。 函数 对象 类 类的成员4、下列输出字符d的方法中,______是错误的。 cout和作用域运算符; 静态数据成员是个别对象所共用的;16、具有转换函数功能的构造函数,应该是______。 不带参数的构造函数; 带有一个参数的构造函数; 带有两个以上参数的构造函数; 缺省构造函数;17、下列继承方式中,_____种继承方式是错的。公有继承;私有继承;完全继承;保护继承;18、下列对继承关系的描述中。

14、,______是对的。 在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的; 在公有继承中,基类中只有公有成员对派生类的对象是可见的; 在私有继承中,基类中只有公有成员对派生类是可见的; 在私有继承中,基类中的保护成员对派生类的对象是可见的;19、对定义重载函数的下列要求中,______是错误的。 要求参数的个数不同; 要求参数中至少有一个类型不同; 要求参数个数相同时,参数类型不同; 参数个数和类型相同时,要求函数的返回值不同;20、当一个函数无返回值时,定义它时函数的类型应是_______。 void 任意 int 无21、重载函数在调用时选择的依据中,错误的是________。。

15、参数个数参数的类型参数的位置 函数的返回值类型22、有关构造函数的说法不正确的是_______。 构造函数的名字和类的名字一样; 构造函数在说明类的对象时自动执行; 构造函数无任何函数类型; 构造函数有且仅有一个;23、下列的____是函数的引用调用。 形参是指针,实参是地址值; 形参是变量,实参是引用; 形参是指针,实参是数组名; 形参是引用,实参是变量;24、在一个被调用函数中,关于return语句使用的描述,_____是错误的。 被调用函数中可以不用return语句; 被调用函数中可以使用多个return语句; 被调用函数中,如果有返回值,就一定要有return语句; 被调用函数中,一个。

16、return语句可返回多个值给调用函数;25、在C+中,关于下列设置参数默认值的描述中,______是正确的。 不允许设置参数的默认值; 设置参数默认值只能在定义函数时设置; 设置参数默认值时,应该是先设置右边的再设置左边的; 设置参数默认值时,应该全部参数都设置;26、关于new运算符的下列描述中,______是错误的。 它可以用来动态创建对象和对象数组; 使用它创建的对象和对象数组可以使用运算符delete删除; 使用它创建对象时要调用构造函数; 使用它创建对象数组时必须指定初始值;27、运算符*的功能是______。 用来表示指向对象指针对指向类成员指针的操作; 用来表示对象对指向类成员。

17、指针的操作; 用来表示指向对象指针对类成员的操作; 用来表示对象对类成员的操作;28、在一个函数中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用_____合适。 内联函数 重载函数 递归函数 嵌套调用29、采用函数重载的目的在于______。 实现共享 减少空间 提高速度 使用方便,提高可读性30、下列函数中,_____不能重载。成员函数非成员函数析构函数构造函数31、在下列关键字中,用以说明类中公有成员的是_____。 public private protected friend32、有关类和对象的说法下列不正确的有_______。 对象是类的一个实例; 任何一个对象只。

18、能属于一个具体的类; 一个类只能有一个对象; 类与对象的关系和数据类型与变量的关系相似;33、在下列关于标准输入流的描述中,正确的是______。 流提取运算符不能自动识别变量的类型,所以要用输入格式控制串; 变量和流提取运算符一起使用时,要象scanf函数那样在变量前加上&; cin与流提取运算符”一起,将从键盘输入的数送到变量中保存起来; 使用标准输入流,必须包含头文件”stdlib.h”;34、_____是构造函数的特征。 构造函数的函数名与类名不同; 一个类中只能定义一个构造函数; 构造函数可以设置缺省参数; 构造函数必须指定类型说明;35、+语言中规定函数的返回值的类型是由_____。

19、__。 return语句中的表达式类型所决定; 调用该函数的主调用函数类型决定; 调用该函数时系统临时决定; 在定义该函数时所指定的函数类型所决定;36、下列对派生类的描述中,______是错的。 一个派生类可以作为另一个派生类的基类; 派生类中继承的基类成员的访问权限到派生类保持不变; 派生类的成员除了它自己的成员外,还包含了它的基类的成员; 派生类至少有一个基类;37、带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化_____。与虚基类下面的派生类个数有关;多次;二次;一次;38、关于继承中出现的二义性的描述中,______是错的。 一。

20、个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性; 解决二义性的最常用的方法是对成员名的限定法; 在单继承情况下,派生类中对基类成员的访问也会出现二义性; 一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性;39、已知f1( )是类A的公有成员函数,p是指向成员函数f1( )的指针,采用_____是正确的。p=f1; p=A:f1; p=A:f1( ); p=f1( );40、关于动态联编的下列描述中,______是错误的。 动态联编是以虚函数为基础的; 动态联编是在运行时确定所调用的函数代码的; 动态联编调。

21、用函数操作是用指向对象的指针或对象引用; 动态联编是在编译时确定操作函数的;41、下面是面向对象程序设计的特点,而______不是的。 多态性 封装性 隐藏性 继承性42、关于成员函数特征的下述描述中,_____是错误的。 成员函数一定是内联函数; 成员函数可以重载; 成员函数可以设置参数的缺省值; 成员函数可以是静态的。43、关于delete运算符的下列描述中,_____是错的。 它必须用于new返回的指针; 它也适用于空指针; 对一个指针可以使用多次该运算符; 指针名前只用一对方括号,不管所删除数组的维数。44、设置虚基类的目的是_____。简化程序;消除二义性;提高运行效率;减少目标代码。

22、;45、下列运算符中,_____运算符在C+中不能重载。?: + new 是重载的运算符?5、什么是动态联编?在什么情况下可以实现动态联编?6、拷贝初始化构造函数是一特殊的成员函数,在什么情况下系统会自动调用它?7、多继承下,可能造成对基类中某个成员访问的不唯一性,称为对基类成员访问的二义性问题。试举例说明,多继承时,在什么情况下会产生二义性? 8、如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生多少个相应的静态变量?9、派生类的对象可以赋给基类对象,反过来行吗?为什么?10、构造函数可以是虚函数吗?试说明。五、写出下列程序的运行结果1、 #include iostream.hcl。

23、ass A public:A(int i=0) m=i;cout class A int a,b; public : A() a=b=0; A(int aa,int bb) a=aa; b=bb; cout class FOO public: FOO(int i) coutclass Apublic:int n;class B:public A;class C:public A;class D:public B,public Cint getn()return B:n;void main() D d;d.B:n=10;d.C:n=20;coutclass Aprivate:static int。

24、 n;int X;public:A(int x=0) X=x; n+; A() n- ; static int GetNum() return n; void print();void A:print() cout print(); A a(34); a.print(); delete p; cout class Sampleprivate:int i;static int count;public:Sample( );void display( );Sample:Sample( )i=0;count+;void Sample:display( )coutclass Base1 public:。

25、virtual void display() const;void Base1:display() const cout display();void main() Base1 base1;Base2 base2;Derived derived;fun(&base1);fun(&base2);fun(&derived);运行结果:Base1:display()Base2:display()Derived:display()15用一句话概括下面程序的功能,并在”/”后加上注释。#includeiostream.h#includefstream.hvoid main()char ch;ifstre。

26、am myin(file_from);if(!myin) / coutcannot open file: file_from;ofstream myout(file_to);if(!myout)coutcannot open file: file_to;while(myin.get(ch)myout.put(ch); / myin.close();myout.close();功能:______________________________________________________功能是:将文件file_from的内容复制到文件file_to中。(3分)注释: 判断是否可以打开文件,my。

27、in=0为不可以,myin=1为可以。(1分)注释:向文件读、写数据。(1分)16class Basepublic:virtual void fn(int x) coutIn Base class,int x=xendl;class SubClass:public Basepublic:virtual void fn(int f) coutIn SubClass,int f=fendl;void test(Base &t) t.fn(5.5);void main()Base b;SubClass s;b.fn(10);s.fn(5.5);coutnCalling test(b):n;test(。

28、b);coutnCalling test(s):n;test(s);Ans:In Base class,int x=10In SubClass,int f=5Calling test(b):In Base class,int x=5Calling test(s):In SubClass,int f=5Press any key to continue六、简答题1什么叫函数重载?重载的函数要满足什么条件?仅函数的返回值类型不同可以进行函数重载吗?2简述面向对象技术的四个基本特征。3简述面向对象技术支持的四种多态性。4试解释纯虚函数与函数体为空的虚函数的相似及不同之处。5若派生类与其基类中有同名成。

29、员,试图通过派生类对象访问该同名成员时,可访问到的是派生类中的还是基类中的成员?跟据上述理解,分析下面的类体系。 Class A Public: int i; Void f(float); ; class B: public A public: int i; void f(int); ; 则下面的访问是否具有二义性(b为类B的一个对象)? b.i; b.f(3.5);6 多继承下,可能造成对基类中某个成员访问的不唯一性,称为对基类成员访问的二义性问题。试举例说明,多继承时,在什么情况下会产生二义性?7简述赋值兼容规则。8什么是动态联编?在什么情况下可以实现动态联编?9 三种派生类继承方式有什么。

30、不同?各用在什么情况下?10什么叫基类?什么叫派生类?基类中保护成员的访问权限是什么?11什么叫参数多态性?什么叫模板?模板方法是怎样解决参数多态性问题的?12 解释函数模板和模板函数。13 解释类模板和模板类。其中,哪个可以用来定义对象?14 解释模板形参、模板实参和参数实例化。15 什么叫流?什么叫流类?数据从源对象到目的对象的传送可以抽象看作为一个流。流是抽象的概念,其职责是在数据的产生者和数据的使用者之间建立联系,并负责管理数据的流动。描述流的类称为流类。16 什么叫操作符?操作符有什么功能?怎样使用操作符?17写出文件操作的基本步骤。1)打开文件2)对文件进行操作3)关闭文件七、编程 1、 编写重载函数max1可分别求取两个整数、三个整数、两个双精度数、三个双精度数的最大值(数值自定)。2、 使用函数重载的方法定义两个重名函数,分别求出整数型的两点间距离和浮点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值