20秋学期(1709、1803、1809、1903、1909、2003、2009 )《程序设计基础(下)》在线作业(二)
20秋学期(1709、1803、1809、1903、1909、2003、2009 )程序设计基础(下)在线作业(二)共50道题 总共100分一、单选题共20题,40分1. 下列关于对象数组的描述中,错误的是( )。A对象数组的下标是从0开始的B对象数组的数组名是一个常量指针C对象数组的每个元素是同一个类的对象D对象数组只能赋初值,而不能在定义后赋值2. 友元关系不能( )。A继承B是类与类之间是关系C是一个类的成员函数与另一个类的关系D提高程序的运行效率3. 下列函数中,可以作为虚函数的是( )。A普通函数B构造函数C静态成员函数D析构函数4. 下面哪个基类中的成员函数表示纯虚函数( )。Avirtual void vf(int)Bvoid vf(int)=0Cvirtual void vf()=0Dvirtual void vf(int)5. ()是一个在基类中说明虚函数,它在该基类中没有定义,但要求任何派生类中的可访问性的规定是相同的。A纯虚函数B虚析构函数C虚构造函数D静态成员函数6. 下面关于友元的描述中,错误的是( )。A友元函数可以访问该类的私有数据成员B一个类的友元类中的成员函数都是这个类的友元函数C友元可以提高程序的运行效率D类与类之间的友元关系可以继承7. 一个栈的入栈序列为a,b,c,则出栈序列不可能的是( )。Ac,b,aBb,a,cCc,a,bDa,c,b8. 线性表最多有( )个结点没有前驱。A0B1C2D无数个9. 关于抽象类, 下列表述正确的是( )。A抽象类的成员函数中至少有一个没有实现的函数(即无函数体定义的函数)B派生类必须实现作为基类的抽象类中的纯虚函数C派生类不可能成为抽象类D抽象类不能用于定义对象10. 已知X类.则当程序执行到语句X *array3;时,调用了( )次构造函数。A0B1C2D311. 对静态成员的不正确描述是( )。A静态成员不属于对象,是类的共享成员B静态数据成员要在类外定义和初始化C调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针D非静态成员函数也可以操作静态数据成员12. 基类和派生类可以分别叫做( )。A“大类”和“小类”B“父类”和“子类”C“小类”和“大类”D“子类”和“父类”13. 声明一个类的对象时,系统自动调用( )函数。A成员函数B构造函数C析构函数D普通函数14. 在C+中,能被派生类继承的函数是( )。A成员函数B构造函数C析构函数D拷贝构造函数15. 在一棵完全二叉树中,根结点的编号为1,按照由上到下由左到右的顺序为二叉树结点编号。若编号为5的结点存在左孩子,则左孩子结点的编号为( )。A9B10C11D1216. 从一个结点到其后继结点之间的连线称为一个分支;从一个结点X到另一个结点Y所经历的所有分支构成结点X到结点Y( )。A路径长度B分支C路径D树的路径长度17. 下面描述中,错误的是( )。A虚函数是没有实现的函数B纯虚函数的实现在派生类中C抽象类是有纯虚函数的类D抽象类指针可以指向不同的派生类18. 在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )。AeB2eCn的平方减eDn的平方2减2e19. 顺序存储结构中数据元素之间的逻辑关系是由( )表示的。A线性结构B非线性结构C指针D存储位置20. 下列关于运算符重载的描述中,()是正确的。A运算符重载可以改变操作数的个数B运算符重载可以改变优先级C运算符重载可以改变结合性D运算符重载不可以改变语法结构二、多选题共15题,30分1. 下列关于类的常量成员函数的说法中,正确的是( )。A只有类的成员函数可以在函数头后面加const关键字B在常量成员函数中可以获取成员变量的值、但不能修改C在常量成员函数中只能访问常量数据成员D在类体外定义常量成员函数时,函数头后面的const关键字可以省略2. 下列( )不是构造函数的特征。A构造函数在创建对象时自动调用B构造函数可以重载C构造函数不可以设置默认参数D构造函数必须指定函数类型3. 下面描述中,正确的是( )。A多承中,多个基类必须采用相同的继承方式B多继承中,多个基类可以采用不同的继承方式C多继承中创建派生类对象时会先调用派生类构造函数,再调用各基类构造函数D多继承中创建派生类对象时各基类构造函数的调用顺序与基类的继承顺序一致4. 下列关于拷贝构造函数的说法中,错误的是( )。A拷贝构造函数是可以重载B用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用C用一个对象初始化另一个对象时,拷贝构造函数会被自动调用D创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数5. 基类中的保护成员可能是派生类的( )。Apubdivc成员Bprivate成员Cprotected成员D友元成员6. 下面对对象成员的正确描述是( )。A在一个类中可以声明本类的对象成员B对象成员的声明方法与普通数据成员的声明方法相同C在一个类中可以声明本类的指针数据成员D如果对象成员的构造函数有参数,则必须在声明该对象成员的同时给其构造函数传递参数值7. 不论派生类以何种方法继承基类,都可以使用基类的( )。Apubdivc成员Bprivate成员Cprotected成员D所有成员8. 下列描述正确的是( )。A使用基类指针释放其所指向的派生类对象时,必须将析构函数声明为虚函数B为了减少错误,在定义类时最好将每个类的析构函数都声明为虚函数C当类里包含一个虚函数时,应把析构函数也声明为虚函数D类中包含虚函数会增加对象的尺寸9. 下列( )是构造函数的特征。A构造函数在创建对象时自动调用B构造函数不可以重载C构造函数不可以设置默认参数D构造函数没有函数类型10. 下列关于类的静态数据成员的说法中,正确的是( )。A静态数据成员的值初始化后不能再修改B静态数据成员必须在类体外定义和初始化C使用static关键字可以将一个数据成员声明为静态数据成员D静态数据成员的访问控制权限可以是公有、私有或保护11. 下列关于类的继承描述中,( )是正确的。A派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数B派生类也是基类,但基类不一定具有派生类的全部属性和方法C继承描述类的层次关系,派生类可以具有与基类相同的属性和方法D一个基类可以有多个派生类,一个派生类可以有多个基类12. 下面描述中,错误的是( )。A在基类定义的pubdivc成员在保护继承的派生类中可见,也能在类外被访问B在基类定义的pubdivc和protected成员在私有继承的派生类中可见,在类外可以被访问C在基类定义的pubdivc和protected成员在保护继承的派生类中可见D在派生类中不可见的成员要变成可访问的,需要进行访问声明13. 关于类和对象不正确的说法包括( )。A类是一种类型,它封装了数据和操作B对象是类的实例C一个类的对象只有一个D一个对象可以属于多个类14. 下列函数中,可以作为虚函数的是()。A析构函数B成员函数C普通函数D构造函数15. 二叉树的遍历方法包括:A先序遍历B中序遍历C后续遍历D逐层遍历三、判断题共15题,30分1. 运算符重载实际上是对已有的运算符重新定义其功能。A对B错2. 在线性表的链式存储结构中,插入和删除操作时,元素移动次数与插入和删除元素的位置有关。A对B错3. 线性表的逻辑顺序与物理顺序总是一致的。A对B错4. 当一个函数的返回值是类对象时,则该函数执行结束后会自动调用拷贝构造函数初始化一个临时对象。A对B错5. 线性结构的数据在进行元素插入、删除等操作后可能会变成非线性结构。A对B错6. 可以在队列的任意位置插入元素。A对B错7. 在计算机中存储二叉树的方法主要有两种,分别是顺序表示法和链式表示法。A对B错8. 类的私有成员只能被它的成员函数和友元函数访问。A对B错9. 在公有继承中,基类中只有公有成员对派生类对象是可见的。A对B错10. 使用打开文件函数open()之前,需要定义一个流类对象,使用open()函数来操作该对象。A对B错11. 栈是操作受限的线性表,只允许在表的一端进行元素插入操作、在另一端进行元素删除操作。A对B错12. 线性表的链式存储结构中,表中元素的逻辑顺序与物理顺序一定相同。A对B错13. 多重继承中的二义性问题是由于一个派生类从不同基类中继承了同名成员变量或相同函数原型的成员函数。A对B错14. 类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。A对B错15. 构造函数说明为纯虚函数是没有意义的。A对B错