西南交大18秋《面向对象程序设计》离线作业
面向对象程序设计第1次作业一、单项选择题(只有一个选项正确,共21道小题)
1. 在类的定义中,称为接口的成员是()
(A) 所有类成员;
(B) public成员
(C) public或private成员;
(D) public或protected成员;
2. 以下正确的描述是()
(A) 不允许设置参数的默认值
(B) 设置参数的默认值只能在定义函数的时候设置
(C) 设置参数默认值时,应按照从右向左的顺序设置
(D) 设置参数默认值时,应该全部参数都设置
3. 一个类模板定义了静态数据成员,则( )
(A) 每一个实例化的模板类都有一个自己的静态数据成员
(B) 每一个实例化的对象都有一个自己的静态数据成员
(C) 它的类型必须是类模板定义的抽象类型
(D) 所有模板类的对象共享一个静态数据成员
4.结构化程序设计所规定的三种基本控制结构是 ( )
(A) 输入、处理、输出
(B) 树形、网形、环形
(C) 顺序、选择、循环
(D) 主程序、子程序、函数
5. 如果class类中的所有成员在定义时都没有使用关键字public,private或protected,则所有成员缺省定义为 ( )
(A) private
(B) protected
(C) public
(D) static
6. 程序中主函数的名字为 ( )
(A) main
(B) MAIN
(C) Main
(D) 任意标识符
7. 在下面的函数声明中,哪一个是“void fun(int a, int b);”的重载函数? ( )
(A) int fun(int x, int y);
(B) void fun(int a, char b);
(C) float func(int a, int b, int c=0);
(D) void fun(int a, int b = 0);
8. 以下带默认形参值的函数声明中,正确的是:
(A) int area(int l,int w=4);
(B) int area(int l=3,int w);
(C) int area(int l=3,int w,int h=9);
(D) int area(int l=5,int w);
9. 关于构造函数,下面说法错误的是:
(A) 对用户来说,是否调用构造函数不可选,它由编译器在对象定义时自动完成。
(B) 构造函数也是类的一个成员函数,具有一般成员函数的特征,也可以被重载。
(C) 拷贝构造函数的作用是使用一个已经存在的对象去初始化一个新的同类的对象。
(D) 构造函数的函数名与类名相同,而且有返回值。
10. 关于析构函数,说法错误的是
(A) 与构造函数几乎正好相反,析构函数用于完成对象被删除前的清理工作。
(B) 析构函数在对象的生存期即将结束时由系统自动调用。调用完成后,对象消失,相应的内存单元被释放。
(C) 是类的一个公有函数成员,它的函数名与类名相同,有返回值,可以接受任何参数。
(D) 通常,如果没有显式说明定义析构函,系统将自动生成默认析构函数,不做任何事情。
11. 下列关于运算符重载的描述中,错误的是()
(A) 可以通过运算符重载在C++种创建新的运算符
(B) 赋值运算符只能重载为成员函数
(C) 运算符函数重载为类的成员函数时,第一操作数是该类对象
(D) 重载类型转换运算符时不需要声明返回类型
12. 以下错误的C++标识符是 。
(A) AXH
(B) _80
(C) 3C
(D) main
13.
(A) 类shape是虚基类
(B) 类shape是抽象类
(C) 类shape中的Draw函数声明有误
(D) 语句“shape s;”能够建立shape类的一个对象s
14. 下列代码段声明了3个类
class Person{};
class Student:public Person{};
class Undergraduate:Student{};
下列关于这些类之间的关系的描述中,错误的是:
(A) 类Person是类Undergraduate的基类
(B) 类Undergraduate从类Student公有继承
(C) 类Student是类Person的派生类
(D) 类Undergraduate是类Person的派生类
15. 对于继承,下面说法错误的是: ( )
(A) 派生类会继承基类的全部数据成员和除了构造、析构函数之外的所有函数成员。
(B) 当类的继承方式为公有继承方式时,基类的公有和保护成员的访问属性在派生类中不变,而私有成员在派生类中不可访问。
(C) 当基类中定义了带有形参表的构造函数时,派生类就应当定义构造函数并传递参数给基类的构造函数。
(D) 当类的继承方式为私有继承时,基类中公有、保护和私有成员都以私有成员身份出现在派生类中,派生类的其他成员可以直接访问它们。
16. C++语言建立类族是通过 ( )
(A) 类的嵌套
(B) 类的继承
(C) 虚函数
(D) 抽象类
17. continue语句的作用是( ) 。
(A) 中止函数的执行
(B) 立即中止循环
(C) 中止本次循环,直接开始下一次循环
(D) 从一个循环体直接跳转至另一个循环体内
18. 要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是( )
(A) int x={0,0,0};
(B) int x[]={0};
(C) static int x={0};
(D) int x[]={0,0,0}
19.
(A) 1
(B) 2
(C) 3
(D) 4
20. 关于C++与C语言的关系的描述中,( )是错误的。
(A) C语言是C++的一个子集;
(B) C语言与C++是兼容的;
(C) C++对C语言进行了一些改进;
(D) C++和C语言都是面向对象的
21. 关于new运算符的下列描述中,()是错的。
(A) 它可以用来动态创建对象和对象数组;
(B) 使用它创建的对象或对象数组可以使用运算符delete删除;
(C) 使用它创建对象时要调用构造函数;
(D) 使用它创建对象数组时必须指定初始值。
四、主观题(共9道小题)
22. 在C++中,当用class定义一个类时,数据成员和成员函数的默认访问权限是 【30】 ,而struct中成员的默认访问权限是【31】
23. 编写程序声明类Student,有数据成员姓名、学号、成绩,定义函数成员用于返回各数据成员信息,定义对象数组,实现10个学生的分数录入及平均分计算。
24. 类的继承是面向对象程序设计中的重要机制,继承方式有三种,分别是: 【1】 、 【2】 和 【3】 。
25. 带有纯虚函数的类是【4】。
26. 在C++程序中,动态建立和删除堆对象是采用【5】和【6】这两个运算符来实现的。
27. 假定AB为一个类, 则执行"AB a;" 语句时, 系统自动调用该类构造函数的次数为【7】.
28. 当一个类对象被创建时,系统将自动调用该类的构造函数,而 【8】 函数是在对象的生存期即将结束的时刻由系统自动调用的。
29. 类中具有相似功能的不同函数使用同一个名称来实现,这称为 【9】 。面向对象的多态性可以分为四类,分别是:参数多态、强制多态、【10】和【11】。
30. C++程序也需要有主函数的入口,必须而且只能是一个名为的函数【12】
面向对象程序设计第2次作业
一、单项选择题(只有一个选项正确,共8道小题)
1. 以下说法不正确的是: ( )
(A) 抽象类是一种特殊的类,可以直接进行实例化。
(B) C++语言的主要特点表现在两个方面:全面兼容C,支持面向对象的方法。
(C) C++语言中,通过类的继承可以建立起类族。
(D) 和构造函数不同,析构函数不接受任何参数。
2. 一个类的友元函数能够通过()访问该类的所有成员
(A) 静态数据
(B) 析构造函数
(C) this指针
(D) 类对象参数
3. C++语言是从早期的C语言逐渐发展演变而来的.与C语言相比,它在求解问题方法上进行的最大改进是()
(A) 面向过程
(B) 面向对象
(C) 安全性
(D) 复用性
4. 假定一个类A的构造函数A(int aa,int bb){a=aa;b=a*bb;},则执行A x(3,5);语句后,x.a和x.b的值分别为 ( )
(A) 3和5
(B) 5和3
(C) 15和3
(D) 3和15
5. 下列描述中,表达错误的是( )
(A) 公有继承时基类中的public成员在派生类中仍是public的
(B) 公有继承时基类中的private成员在派生类中仍是private的
(C) 公有继承时基类中的protected成员在派生类中仍是protected的
(D) 私有继承时基类中的public成员在派生类中是private的
6. 下面函数中,哪个不是clock类的成员函数 ( )
class clock
{
public:
voidclock();
voidclock();
int setTime();
friend showTime();
}
(A) clock
(B) clock
(C) setTime
(D) showTime
7. 下面有关重载函数的说法中正确的是( )
(A) 重载函数必须具有不同的返回值类型
(B) 重在函数型参个数必须不同
(C) 重在函数必须有不同的形参列表
(D) 重载函数名可以不同
8. 若有如下说明int a={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为5的元素的表达式是 ( )
(A) *p+8
(B) p+5
(C) *p+=4
(D) *(p+4)
四、主观题(共15道小题)
9.
10.
11.
12.
13. 面向对象的程序设计有四大特征,是【26】、【27】、【28】、【29】。
14.
#include
int area(int l=5,int w=5)
{
return l*w;
}
void main()
{
cout<< area()<;
cout<< area(10,2)<;
cout<< area(2)<;
}
15.
16.
=
17.
18.
19. 下面程序的运行结果是 。
#include
int func1(int x,int y,int *cp,int *dp)
{
*cp=x*x+y*y;
*dp=x*x-y*y;
}
void main( )
{
int a=4,b=3,c=5,d=6;
func1(a,b,&c,&d);
cout<<c<<="" p=""></c<
}
20. 该程序的输出是
#include “stdio.h”
void main()
{
char a=”goodnighta”,*p;
for(p=a;*p!=’a’;p++) putchar(*p-32);
}
21.
22. 考察知识点:静态局部变量
#include
int f(int);
int main()
{ int i;
for(i=1;i<=5;i++)
cout<<f(i)<<'';
</f(i)<<'';
return0;
}
int f(int i)
{ static int k=1;
k + = 1;
return k;
}
23. 下面程序的运行结果是 。
#include
void main()
{
for(i=1;i<10;i++)
{
if(i%3=0) continue;
cout<;
}
}
面向对象程序设计第3次作业
三、主观题(共5道小题)
1. 声明一个rectangle和circle类,rectangle和circle类都有getArea()函数用于计算矩形(retangle)对象和圆形(circle)对象的面积,在main中初始化一个矩形类对象和一个圆形类对象并利用getArea函数求出面积。
2. 定义Boat与Car两个类,二者都有weight属性,定义二者的一个友元函数totalWeight(),计算二者的重量和。
3. 定义point类来描述平面上的点,包含私有数据成员x和y。定义友元函数Distance计算两点距离
4. 定义复数类,重载+,*为复数类的成员函数,实现复数类对象的+,*运算。
5. 编写程序声明类Point,有数据成员X,Y,为其定义友元函数实现重载+。
面向对象程序设计第4次作业
三、主观题(共2道小题)
1. 编写程序声明类Student,有数据成员姓名、学号、成绩,定义函数成员用于返回各数据成员信息,定义对象数组,实现10个学生的分数录入及平均分计算。
2. 声明一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象面积。
页:
[1]