21年春西交《面向对象程序设计》在线作业[答案]答案
西交《面向对象程序设计》在线作业
试卷总分:100 得分:100
一、单选题 (共 30 道试题,共 60 分)
1.在下面的4个关键字中,( )是用来说明虚函数的。
A.virtual
B.public
C.protected
D.private
正确答案:-----
2.对于一个类的析构函数,其函数名与类名( )。
A.完全相同
B.完全不同
C.只相差一个字符
D.无关系
正确答案:-----
3.继承机制的作用是( )。
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象
正确答案:-----
4.在公用继承的情况下,基类成员在派生类中的访问权限( )
A.受限制
B.保持不变
C.受保护
D.不受保护
正确答案:-----
5.假定一个二维数组的定义语句为“ int a [3][4]={{3,4),{2,8,6));”,则元素a[1][2] 的值为( )。
正确答案:-----
A.2
B.4
C.6
D.8
正确答案:-----
6.下列对继承关系的描述中,正确的是( )。
A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;
B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;
C.在私有继承中,基类中只有公有成员对派生类是可见的;
D.在私有继承中,基类中的保护成员对派生类的对象是可见的;
正确答案:-----
7.若一个类中含有纯虚函数,则该类称为( )。
A.基类
B.虚基类
C.抽象类
D.派生类
正确答案:-----
8.下列关于成员函数特征的描述中,( )是错误的。
A.成员函数一定是内置函数
B.成员函数可以重载
C.成员函数可以设置参数的默认值
D.成员函数可以是静态的
正确答案:-----
9.双目运算符重载为普通函数时,其参数表中应带有( )个参数。
A.0
B.1
C.2
D.3
正确答案:-----
10.虚函数的定义是在基类中进行的,定义时需要冠以关键字( )。
A.static
B.friend
C.virtual
正确答案:-----
D.public
正确答案:-----
11.面向对象方法的多态性是指( )。
A.一个类可以派生出多个特殊类
B.一个对象在不同的运行环境中可以有不同的变体
C.针对一消息,不同的对象可以以适合自身的方式加以响应
D.一个对象可以是由多个其他对象组合而成的
正确答案:-----
12.下面是四条顺序出现的声明语句,非法的初始化语句是( )。
A.int i=–1;
正确答案:-----
B.const int ic=i;
C.const int *pc={图}
D.int *const cpi={图}
正确答案:-----
13.由C++源程序文件编译而成的目标文件的缺省扩展名为()。
A.cpp
B.exe
C.obj
D.lik
正确答案:-----
14.派生类的对象对其基类中( )可直接访问。
A.公有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.私有继承的公有成员
正确答案:-----
15.下列对派生类的描述中,______是错的。
A.一个派生类可以作为另一个派生类的基类;
B.派生类至少有一个基类;
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员;
D.派生类中继承的基类成员的访问权限到派生类保持不变;
正确答案:-----
16.用new运算符创建一个含有10个元素的一维整型数组的正确语句是( )。
A.intp=newint(10);
B.intp=newint[10];
C.int*p=newint[10];
D.int*p=newint(10);
正确答案:-----
17.友元的作用之一是()。
A.提高程序的运行效率。
B.加强类的封装性。
C.实现数据的隐蔽性。
D.增加成员函数的种类。
正确答案:-----
21.在创建派生类对象时,构造函数的执行顺序是( )。
A.对象成员构造函数、基类构造函数、派生类本身的构造函数;
B.派生类本身的构造函数、基类构造函数、对象成员构造函数;
C.基类构造函数、派生类本身的构造函数、对象成员构造函数;
D.基类构造函数、对象成员构造函数、派生类本身的构造函数。
正确答案:-----
19.下列程序段不会发生二义性的是( )。
A.int fun(double p){...;}
正确答案:-----
B.int fun(float p){...;} float fun(float p){...;}float fun(unsigned p){...;} int x;int x; x=fun(0);x=fun(0);
正确答案:-----
C.int fun(int i,int j=2){...;}
D.int fun(int i=2,int j=2){...;} float fun(int i){...;}int fun(int *p){...;} cout{图}
正确答案:-----
20.类的析构函数是在( )调用的。
A.类创建时
B.创建对象时
C.删除对象时
D.不自动调用
正确答案:-----
21.类的构造函数是在定义该类的一个(??)时被自动调用执行的。
A.成员函数
B.数据成员
C.对象
D.友元函数
正确答案:-----
22.下列关于私有继承的说法中正确的是()。
A.基类成员对派生类新定义的成员函数是不可见的;
B.基类成员对派生类新定义的成员函数是可见的;
C.只有基类成员中的公有成员对派生类新定义的成员函数是可见的;
D.基类成员中的保护成员对派生类新定义的成员函数是可见的。
正确答案:-----
23.一个函数功能不太复杂,但要求被频繁调用,选用( )
A.内置函数
B.重载函数
C.递归函数
D.嵌套函数
正确答案:-----
24.C++类体系中,不能被派生类继承的有( )
A.转换函数
B.构造函数
C.虚函数
D.静态成员函数
正确答案:-----
25.下面的类中,( )不是由抽象基类ios直接派生出来的。
A.istream
B.ostream
C.iostream
D.fstreambase
正确答案:-----
26.在一个类的定义中,包含有( )成员的定义。
A.数据
B.函数
C.数据和函数
D.数据或函数
正确答案:-----
27.cout是某个类的标准对象,该类是( )。
A.ostream
B.istream
C.stdout
正确答案:-----
D.stdin
正确答案:-----
28.对于类中定义的成员,其隐含访问权限为()。
A.public
B.ptotected
C.private
正确答案:-----
D.static
正确答案:-----
29.设px是指向一个类对象的指针变量,则执行 “delete px;”语句时,将自动调用该类的( )
正确答案:-----
A.无参构造函数
B.带参构造函数
C.析构函数
D.复制构造函数
正确答案:-----
30.实现运行时的多态性要使用( )。
A.重载函数
B.析构函数
C.构造函数
D.虚函数
正确答案:-----
21年春西交《面向对象程序设计》在线作业[答案]多选题答案
二、判断题 (共 20 道试题,共 40 分)
31.C++只能用于面向对象程序设计,不适用于面向过程程序设计。( )
32.成员函数中调用的虚函数可能实现动态联编。( )
33.C++中的所有运算符都允许重载。( )
34.在类的继承层次结构中,在不同的层次中不能出现名字相同、参数个数和类型都相同而功能不同的函数。( )
35.字符串"sdfgh"的长度是5。( )
正确答案:-----
36.将运算符“+”函数重载为类的成员函数,交换律不适用。( )
正确答案:-----
37.打开一个二进制文件时可以同时指定它既是输入文件又是输出文件。( )
38.引用可以不初始化。( )
39.若类Y是类X的私有派生类,类Z是类Y的公用派生类,则类Z不能访问类X 的公用成员和保护成员。( )
40.常量不能作为左值使用。( )
41.对于从基类继承的虚函数,派生类也可以不进行重定义。( )
42.友元类必须被说明为公用成员。( )
43.引用和指针都可作函数参数。( )
44.友元函数说明在类体内,它是一种成员函数。( )
45.使用虚函数无法避免多重继承产生的二义性。( )
46.C++语言支持封装性和继承性,不支持多态性。( )。
47.C++中的字符串输入输出通常指定一个字符数组作为存储空间,它只能输入输出string类数据。( )
48.内置函数的定义必须出现在第一次调用内置函数之前。( )
49.私有继承的派生类不能访问基类中的私有成员,但公用继承的派生类可以访问基类中的私有成员。( )
50.程序运行过程出现异常是由于语法错误引起的。( )
21年春西交《面向对象程序设计》在线作业[答案]历年参考题目如下:
201906考试批次
《面向对象程序设计》结课作业
学生姓名 学习中心
学号
专 业 年级层次
北京语言大学网络教育学院
《面向对象程序设计》结课作业
注意:
本学期所布置的结课作业,请同学一律按照以下要求执行:
1) 结课作业提交起止时间:4月30日—6月10。(届时平台自动关闭,逾期不予接收。)
2) 结课作业课程均需通过“离线作业”栏目提交电子版,学院不收取纸介的结课作业,以纸介回寄的作业一律视为无效;
3)截止日期前可多次提交,平台只保留最后一次提交的文档,阅卷时以最后一次提交的结课作业为准,截止日期过后将关闭平台,逾期不交或科目提交错误者,按0分处理;
4) 提交文档要求:提交的文档格式为doc、rar,大小10M以内;
5) 必须严格按照每门课程的答题要求完成作业,没有按照学院要求来做的结课作业,将酌情扣分。
一、【程序分析题】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题30分,本题要求读懂题目中的程序或函数,写出程序或函数的功能)
1、#include
void main()
{
int i,s=0;
for(i=2;i<=30;i+=2) s+=i*i;
cout<<"s="<
2、int s1(int n)
{
int x;
if(n==1) x=1;
else x=s1(n-1)+n*n;
return x;
}
3、void fun5(char* a, const char* b)
{
while(*b) *a++=*b++;
*a=0;
}
4、void fun3(int a[][N], int m, int n, int& row, int& col)
{
int x=a[0][0];
row=col=0;
for(int i=0;i
x=a[i][j]; row=i; col=j;
}
}
5、char* f8(char* str1, const char* str2)
{
int i=0,j=0;
while(str1[i]) i++;
while(str2[j]) str1[i++]=str2[j++] ;
str1[i]='\0';
return str1;
}
二、【编写程序实现算法】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题30分,根据题目要求编写算法实现,要求程序没有语法错误)
1、按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
55555
4444
333
22
1
2、按照函数原型语句“void p(int n);”编写一个递归函数显示出如下图形,此图形是n=5的情况。
1
22
333
4444
55555
3、按照下面函数原型语句编写一个递归函数计算出数组a中n个元素的平方和并返回。
int f(int a[],int n);
4、根据下面类中MaxMin 函数成员的原型和注释写出它的类外定义。
class AA {
int* a;
int n;
int MS;
public:
void InitAA(int aa[], int nn, int ms) {
if(nn>ms) {cout<<"Error!"<
n=nn;
a=new int[MS];
for(int i=0; i
int MaxMin(int& x, int& y); //从数组a的前n个元素中求出
//最大值和最小值,并分别由引用参数x和y带回,
//同时若n大于0则返回1,否则返回0。
};
5、如果A和B都是m行n列矩阵,且它们对应元素相等,则A= =B。试定义矩阵类,
对“= =”运算符重载。
三、【程序设计题】(本大题共5小题,请任选其中一道题作答,答题时请注明题号,本题40分,根据题目要求编写完整程序实现,要求程序能够正常运行,没有语法错误)
1、编写一个程序,计算三角形、正方形和圆形三种图形的面积和周长。(用多态性实现)
2、已有若干个学生数据,包括学号、姓名、成绩,编写程序要求输出这些学生数据并计算平均分。
3、应用C++的多态性编写一个程序,编写程序计算正方体、球体和圆柱体的表面积和体积。
4、编写一个程序,实现图书和杂志销售管理。当输入一系列图书和杂志销售记录后,将销售良好(图书每月售500本以上,杂志每月2500本以上)的图书和杂志名称显示出来。
5、一名兽医要记录他所治疗的各种类型的狗以及治疗信息,尤其想了解不同的病症对带斑点的狗和不带斑点的狗所产生的影响。为该兽医设计一个程序,要求记录狗的品种(breed),身高(height),体重(weight),颜色(color)等信息。为斑点狗和不带斑点的狗设计不同的类。下面的程序使用你设计的类。
void main()
{// 定义一个白色的Dalmatian斑点狗,它身高24,体重60,
斑点为红色
spotted_dog redSpot("Dalmatian",24,60,"white","red");
//定义一个黄色的Labrador无斑点狗,它身高30,体重40
unspotted_dog rover("Labrador Retriever",30,40,"yellow");
redSpot.show_name(); //显示狗名
redSpot.show_breed(); //显示狗品种
redSpot.spot_info(); //显示狗斑点信息
rover.show_name(); //显示狗名
rover.show_breed(); //显示狗品种
}