《面向对象程序设计(C++)》期末考试 大作业

一、简答题
1、运算符 new 和 delete 的功能分别是什么?(3 分)
2、若派生类以 private 方式从一个基类派生,派生类的对象可以访问基类中的哪些成
员?派生类的成员函数可以访问基类中的哪些成员?(3 分)
3、构造函数的作用是什么?在创建派生类的对象时,应按照怎样的顺序调用构造函数?
(4 分)
二、填空题

 

1、函数的返回值是通过函数体中的_____ 语句带回的;若被调用函数被定义为_____
类型,则被调用函数不带回任何值。
2、 表 示 逻 辑 关 系 “ a 大 于 等 于 8 或 者 a 小 于 等 于 5” 的 C++表 达 式
是 _____。
3、在 C++语言中,用 _____表达式来创建动态的类对象;用 _____表达式释放动态类对象。
4、类的访问权限有_____ 、_____ 和_____ 三种。
5、友元可以是_____ ,也可以是_____ 。
三、选择题
1、在下列选项中,合法的 C++变量名是 。
A.long B._2Test C.3Dmax D.A.dat
2、在对字符数组进行初始化时,_____是正确的。
A.char s1[] = "abcd"; B.char s2[3] = "xyz";
C.char s3[][3] = {'a' , 'x' , 'y' }; D.char s4[2][3] = {"xyz", "mnp"};
3、下列语句中,错误的是_____ 。
A.int i, *ptr = &i; B.int i; int *ptr; i = *ptr;
C.int *ptr; ptr = 0; D.int i = 5; int *ptr; *ptr = &i;
4、下列有关设置函数参数默认值的描述中_____ 是正确的。
A.对设置函数参数默认值的顺序没有任何规定
B.函数具有一个参数时不能设置默认值
C.默认参数要设置在函数的定义语句中,而不能设置在函数说明语句中
D.设置默认参数可使用表达式,但表达式中不可用局部变量
5、C++语言中 while 循环和 do-while 循环的主要区别是_____ 。
A.do-while 的循环体至少无条件执行一次
B.while 的循环控制条件比 do-while 的循环控制条件严格
C.do-while 允许从外部转到循环体内部
D.do-while 的循环体不能是复合语句
6、在下面的程序中,若实参 a 与形参 x 以引用传递的方式传递信息,实参 b 与形参 y
以 值 传 递 的 方 式 传 递 信 息 , 那 么 从 函 数 compute 返 回 主 程 序 后 , a 和 b 的 值 分 别
为_____ 。
                        Main Program                         void compute(x, y)

 

 
A.5 和 2 B.5 和 12 C.1 和 2 D.1 和 12
7、假设 MyClass 为一个类,那么下列函数说明中,_____ 是该类的析构函数。
A.void ~ MyClass(); B. ~ MyClass(int n); C ~MyClass(void); D ~MyClass();
8、下列对静态数据成员的描述中,错误的是 ______。
A.说明静态数据成员时前边要加修饰符 static
B.静态数据成员要在类体外进行初始化
C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符
D.静态数据成员不是所有对象所共用的
9、假设类 AB 用成员函数的方式重载加法运算符,以实现两个 AB 类对象的加法,并返
回相加的结果,则该成员函数的声明为 ______。
A.AB operator + (AB &a, AB &B); B.AB operator + (AB&);
C.operator + (AB a); D.AB & operator + ();
10、对定义重载函数的下列要求中,______ 是错误的
A.要求参数的个数不同 B.要求参数中至少有一个类型不同
C.要求参数个数相同时,参数类型不同 D.要求参数的返回值不同
四、读程题
1、给出下述源程序的运行结果。
#include <iostream.h>
int add(int a, int b = 5);
void main()
{ int m = 5;
 cout << "sum1 = " << add(m) << endl;
 cout << "sum2 = " << add(m, add(m)) << endl;
 cout << "sum3 = " << add(m, add(m, add(m))) << endl;
}
int add(int x, int y)
{ return x + y; }
2、给出下述源程序的运行结果
#include <iostream.h>
#include <string>
void main( ) {
 char *p1, *p2, s[50] = "xyz";
 p1 = "abcd"; p2 = "ABCD";
 strcpy(s+2, strcat(p1+2, p2+1));
 cout << s << endl;
}
3、给出下述源程序的运行结果。
#include <iostream.h>
class Base {
public:
 void fun() { cout << "1"; }
};
class Derived : public Base {
public:
 void fun() {
 cout << "2" << endl;
 }
};
void main() {
 Derived a;
 Base *p = &a;
 (*p).fun();
 a.fun();
}
4、给出下述源程序的运行结果。
#include <iostream.h>
class A {
 public:
A() { a1 = a2 = 0; cout << "Default constructor called.\n"; }
A(int i, int j) { 
a1 = i; a2 = j; cout << "Constructor called.\n";
}
    void print() {
        cout << "a1 = " << a1 <<" , " << "a2 = " << a2 << endl;
    }
 private:
 int a1, a2;
};
void main() {
 A x, y(3,9);
 x.print();
 y.print();
}
五、编程题
1、定义并实现一个类 Myst,使下列语句能够正常运行。
Myst x(3.2), y(5,5), z(0.0);
z = 8.9 – y;
y = x – 6.3;
2、设计类 Point,包含横、纵两个坐标数据。由类 Point 派生出类 Circle,Circle 中
包含圆的半径数据,并能够计算圆的面积。给出类 Point 和 Circle 的定义与实现。

有需要答案的话联系我

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_70752559

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值