软件学院c++2006期末考试A卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++第二学期期末考试试卷,软件学院2006级
一、选择题(每小题2.5分,共50分)
(1)栈和队列的共同特点是()
A)都是先进先出B)都是先进后出
C)只允许在端点处插入和删除元素 D )没有共同点
(2)链表不具有的特点是()
A)不必事先估计存储空间B)可随机访问任一元素
C)插入删除不需要移动元素D)所需空间与线性表长度成正比
(3)C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是
( )
A)增加了一些新的运算符B)允许函数重载,并允许设置缺省参数
C)规定函数说明符必须用原型D)引进了类和对象的概念
(4)下列程序的执行结果为
#include<iostream. h>
void main()
{ int a=3,b=0;
int*p=&a:
b=+a++;
cout<<*P<<”,”<<b<<endl;
}A)3,4 B)4,3 C)3,4 D)4,4
(5)决定C++语言中函数的返回值类型的是( )
A) return语句中的表达式类型B)调用该函数时系统随机产生的类型
C)调用该函数时的主调用函数类型D)在定义该函数时所指定的数据类型
(6)对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是()
A)公有类型B)私有类型C)保护类型D)友元类型
(7)在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是
A)友元函数B)虚函数C)构造函数D)析构函数
(8)类的析构函数的作用是
A)一般成员函数的初始化B)类的初始化
C)对象的初始化D)删除类创建的对象
(9)下列说法正确的是
A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方
B)内联函数在编译时是将该函数的月标代码插入每个调用该函数的地方
C)类的内联函数必须在类体内定义
D)类的内联函数必须在类体外通过加关键字inline定义
(10)在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是()
A)派生类的对象可以赋给基类的对象
B)派生类的对象可以初始化基类的引用
C)派生类的对象可以直接访问基类中的成员
D)派生类的对象的地址可以赋给指向基类的指针
(11)下列关于多态性的描述,错误的是()
A)C++语言的多态性分为编译时的多态性和运行时的多态性
B)编译时的多态性可通过函数重载实现
C)运行时的多态性可通过模板和虚函数实现
D)实现运行时多态性的机制称为动态绑定
(12) 下面程序的运行结果为()
#include<iostream. h>
class A
{
public:
A(){cout<<”1”;}
~A(){cout<<”2”;}
}
class B:public A
{
public:
B(){cout<<”3”;}
~B(){cout<<”4”;}
}
void main()
{
B b;
}
A)1234 B)1324 C)1342 D)3142
(13)下面关于类和对象的描述中,错误的是
A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量
B)类和对象之间的关系是抽象和具体的关系
C)对象是类的实例,一个对象必须属于一个已知的类
D)类是具有共同行为的若干对象的统一描述体
(14)下列描述正确的是
A)表示m>n为true或m<n为true的表达式为m>n&&m<n
B)switch语句结构中必须有default语句
C)if语句结构中必须有else语句
D)如果至少有一个操作数为true,则包含“‖”运算符的表达式为true
(15)不能作为重载函数的调用的依据是
A)参数个数
B)参数类型
C)函数类型
D)函数名称
(16)在C++语言中,数据封装要解决的问题是
A)数据的规范化
B)便于数据转换
C)避免数据丢失
D)防止不同模块之间数据的非法访问
(17)对类的构造函数和析构函数描述正确的是
A)构造函数可以重载,析构函数不能重载
B)构造函数不能重载,析构函数可以重载
C)构造函数可以重载,析构函数也可以重载
D)构造函数不能重载,析构函数也不能重载
(18)下面程序的运行结果为
#include(iostream. h>
class A
{
int num;
public:
A(int i){num=i;}
A(A &a){num=a. num++;}
void print(){cout<<num;}
};
void main()
{
A a(1),b(a);
a. print();
b.print();
A)11 B)12 C)21 D)22
(19)下面对静态数据成员的描述中,正确的是
A)静态数据成员是类的所有对象共享的数据
B)类的每个对象都有自己的静态数据成员
C)类的不同对象有不同的静态数据成员值
D)静态数据成员不能通过类的对象调用
(20) 已知类A中的一个成员函数的说明如下:
void Set(A &a);
则该函数的参数“A &a”的含义是()
A.指向A的指针为a B.将变量a的地址赋给类A C.类A对象引用a用作函数的形参D.变量A与a按位与后作函数参数
二,填空题(本大题共5小题,共20分)
1.面向对象程序设计中的多态性包括静态多态性和动态多态性,前者由
_______________机制支持,而后者则由____________________机制支持。
2.派生类中所定义的虚函数的________________不影响对它的动态联编,即基类中已定义的虚函数,其同名函数放在派生类中的________________,都可以实现运行时多态性。
3.构造函数与析构函数所调用的虚函数是____________的函数,因此调用时实现的是____________联编。
4.当使用new动态生成一个对象时,隐含着对________________的一次调用;而当使用delete删除一个对象时,隐含着对____________的一次调用。
5.以下程序运行的结果是_______
#include”stdio.h”
main()
{ struct date
{ int year , month , day ;
} today ;
printf(“%d\n”,sizeof(struct date));
}
三、程序题(每题15分,共30分)
1、设计一个圆类circle和一个桌子类table,另设计一个圆桌类roundtable,它是从前两个类派生的,要求输出一个圆桌的高度、面积和颜色等数据。
2、编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英语成绩,求各门功课的平均分。
要求设计不同的成员函数求各门课程的平均分,并使用成员函数指针调用它们。
要求:
设计一个学生类student,包括no(学号)、name(姓名)、deg1(语文成绩)、deg2(数学成绩)、deg3(英语成绩)数据成员和三个静态数据成员sum1(累计语文总分)、sum2(累计数学部分)、sum3(累计英语总分);另外有一个构造函数和三个求平均分的成员函数和一个disp()成员函数。