1、北京林业大学2007-2008学年第I学期试卷试卷名称:面向对象程序设计语言A(A卷) 课程所在院系: 信息学院 考试班级 学号 姓名 成绩 试卷说明:1. 本次考试为闭卷考试。本试卷共计 4 页,共 4 大部分,请勿漏答;2. 考试时间为120分钟,请掌握好答题时间;3. 答题之前,请将试卷和答题纸上的考试班级、学号、姓名填写清楚;4. 本试卷所有试题答案写在答题纸上;(特殊要求请详细说明)5. 答题完毕,请将试卷和答题纸正面向外对叠交回,不得带出考场;6. 考试中心提示:请你遵守考场纪律,参与公平竞争!第 4 页 共4 页一. 单项选择题(每小题2分,共40分)说明:在每小题列出一组答案,
2、分别标识为AD,在四个选项中,只有一个是符合题目要求的,请将其代码填在表格题号对应的空白内。错选或未选均无分。(1) 在每个C+程序中都必须包含有这样一个函数,该函数的函数名为( )。(A) main(B) MAIN(C) name(D) Main(2) 以下程序段的输出结果是( )。void main() int a=1,b=2,m=0,n=0,k;k=(n=ba)|(m=ab);coutk”,”m;(A) 0,0(B) 0,1(C) 1,0(D) 1,1(3) 存储以下数据,占用存储字节最多的是( )。(A) 0(B)0 (C)“0”(D) 0.0(4) 在C+中,常量C 和 “C” 两者
3、( )。(A) 完全不同(B) 存储长度相同(C) 类型相同(D) 存储值相同(5) 设x是一个bool型的逻辑量,y的值为10,则表达式 x & y的值为( )。(A) 1(B) 0(C) 与x值相同(D) 与x值相反(6) 函数重载是指( )。(A) 两个或两个以上的函数取相同的函数名,但形参的个数或类型不同(B) 两个以上的函数取相同的名字和具有相同的参数个数,但返回值的类型不同(C) 两个以上的函数名字不同,但形参的个数或类型相同(D) 两个以上的函数取相同的函数名,并且函数的返回类型相同(7) 以下关于函数模板叙述正确的是( )。(A) 函数的模板也是一个具体的函数(B) 函数模板的
4、类型参数与函数的参数是同一个概念(C)通过使用不同的类型参数,函数模板可以生成不同类型的函数(D)用函数模板定义的函数没有类型(8) 函数调用func(exp1,exp2),(exp3,exp4,exp5),(exp6,exp4,exp5)中所含实参的个数为( )。(A) 1 (B) 2 (C) 3 (D) 4(9) 有如下程序:#include class Base char c; public: Base(char n):c(n) virtualBase()coutc; ; class Derived:public Base char c; public: Derived(char n):
5、Base(n+1),c(n) Derived()coutc; ; int main() Derived d(X); return 0; 执行上面的程序将输出( )。(A) XY(B) YX(C) X(D) Y(10) 若int i=10;执行下列语句后,i的值是( )。switch(i)case 9: i+=1;case 10: i+=1;case 11: i+=1;case 12: i+=1;(A) 10(B) 11(C) 12(D) 13(11) 假定AB为一个类,则执行 AB x;语句时将自动调用该类的( )。(A) 无参构造函数(C) 有参构造函数(B) 拷贝构造函数(D) 赋值重载函
6、数(12) 若需要使类中的一个指针成员指向一块动态存储空间,则通常在( )函数中完成。(A) 析构(B) 构造(C) 任一成员(D) 友元(13) 保护继承时,基类的( )在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。(A) 任何成员 (B)公有成员和保护成员(C) 保护成员和私有成员 (D)私有成员(14) 声明或定义一个内联函数时,必须在函数开始使用关键字( )。(A) static (B) inline(C) const(D) extern(15) 下列对模板的声明中正确的是( )。(A) template(B) template(C) template(D) templ
7、ate(16) 设x和y均为整型变量,则x|y为假的条件是( )。(A) 它们均为真 (B) 其中一个为真(C) 它们均为假 (D) 其中一个为假(17) 下面的哪个关键字不能作为函数的返回类型?( )(A) void(B) int(C) new(D) long(18) 假定要对类AB定义加号运算符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( )。(A) AB operator+(AB & a , AB & b) (B) AB operator+(AB & a)(C) operator+(AB a) (D) AB & operator+( )(19) 对于
8、类中定义的成员,其隐含的访问权限为( )。(A) public(B) protected(C) private(D) static(20) 程序设计所规定的三种基本控制结构是( )。(A) 输入、处理、输出 (B) 树形、网形、环形(C) 顺序、选择、循环 (D) 主程序、子程序、函数二. 判断题(每小题1分,共12分)说明:请判断下列语句是否正确,如果正确请在表格题号对应的空白内用笔打上;如果错误请在表格题号对应的空白内用笔打上。错打或未打均无分。( )1. 创建派生类对象时,先调用派生类的构造函数,再调用基类的构造函数,当销毁这个对象时顺序正好相反,先调用基类的析构函数,再调用派生类的析构
9、函数。( )2. 变量分为全局和局部两种,动态局部变量没有赋初值时,其值是不确定的。 ( )3. 模板类的成员函数若在类外实现,则必须是模板函数。 ( )4. 类的静态成员函数可以不属于整个类。 ( )5. 类的友元函数可以访问类的私有成员。 ( )6. 常对象必须进行初始化,而且不能被更新。 ( )7. 需要基类对象的有些地方不可以使用公有派生类的对象来替代。 ( )8. 我们不能用抽象类定义对象,但可以定义抽象类的指针。 ( )9. 虚函数的声明只能出现在类定义中的函数实现中。( )10. 基类中某函数声明为纯虚函数之后,基类中就不能给出函数的实现部分。( )11. 当一个类的对象离开它的
10、作用域时,系统将自动调用该类的析构函数。( )12. 关系表达式x+y5的相反表达式为x+y5。三. 读程序写结果(每小题5分,共25分)说明:阅读以下程序,并写出程序运行结果。1 #include void main()int s=0;for (int i=1; ; i+) if (s50) break;if (i%2=0) s+=i;cout i,s=i,sendl;2 #include #include void LE(int * a,int * b) int x=*a;*a=*b; *b=x;cout *a *bendl;void main()int x=10,y=25;LE(&x,&
11、y); cout x yendl;3 #include class Sampleprivate:int x;static int y;public:Sample(int a)x=a;x+;y+; void print() coutx=x,y=yendl; ;int Sample:y=10; void main()Sample s1(20);Sample s2(30);s1.print();s2.print();4 #include template class FF TT a1,a2,a3;public :FF(TT b1,TT b2,TT b3) a1=b1; a2=b2; a3=b3;TT
12、 Sum() return a1+a2+a3; ;void main()FF x(2,3,4),y(5,7,9);cout x.Sum() y.Sum();coutendl;5. #include class Apublic: A(); A(int i,int j); void print(); private: int a,b; A:A() a=b=0; coutDefault cons called.n; A:A(int i,int j) a=i; b=j; coutConstructor called.n; void A:print() couta=a,b=bendl; void mai
13、n() A m,n(4,8); m.print(); n.print();四. 编程题(共23分) 注意:使用规范格式编程,并在适当位置添加注释。1(10分)已知6a30,15b36,编写程序求出满足方程2a+5b=126的全部整数组解。如(13,20)就是其中的一组解。2.(13分)已知点类Point的定义如下,该类包含两个double类型的私有数据成员x和y,分别表示点的横坐标和纵坐标。 定义类的构造函数,用于初始化x和y;定义类的公有成员函数distance,用来计算两点之间的距离;编写程序实现点类Point的成员函数,并在主函数中测试定义的点类Point。class Point private: double x,y;/点的横、纵坐标public: Point(double xx=0,int double =0); /此处为计算两点之间距离的成员函数,并完成距离的输出;北京林业大学2007-2008学年第1学期考试答题纸考试班级 学号 姓名 考试科目 面向对象程序设计语言A 成绩 一、 单项选择题(每小题2分,共40分)题号12345678910答案题号11121314151617181920答案二、判断题(每小题1分,共12分)题号123456789101112答案三、读程序写结果题(每小题5分,共25分)题号12345答案四、编程题(共23分)1(10分)2(13分)