07级面向对象程序设计语言A期末考试试题A.docx
《07级面向对象程序设计语言A期末考试试题A.docx》由会员分享,可在线阅读,更多相关《07级面向对象程序设计语言A期末考试试题A.docx(10页珍藏版)》请在冰点文库上搜索。
07级面向对象程序设计语言A期末考试试题A
07级面向对象程序设计语言A期末考试试题A
北京林业大学2007--2008学年第I学期试卷
试卷名称:
面向对象程序设计语言A(A卷)课程所在院系:
信息学院
考试班级学号姓名成绩
试卷说明:
1.本次考试为闭卷考试。
本试卷共计4页,共4大部分,请勿漏答;
2.考试时间为120分钟,请掌握好答题时间;
3.答题之前,请将试卷和答题纸上的考试班级、学号、姓名填写清楚;
4.本试卷所有试题答案写在答题纸上;(特殊要求请详细说明)
5.答题完毕,请将试卷和答题纸正面向外对叠交回,不得带出考场;
6.考试中心提示:
请你遵守考场纪律,参与公平竞争!
一.单项选择题(每小题2分,共40分)
说明:
在每小题列出一组答案,分别标识为A~D,在四个选项中,只有一个是符合题目要求的,请将其代码填在表格题号对应的空白内。
错选或未选均无分。
(1)在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。
(A)main(B)MAIN(C)name(D)Main
(2)以下程序段的输出结果是()。
voidmain()
{inta=1,b=2,m=0,n=0,k;
k=(n=b>a)||(m=a
cout<}
(A)0,0(B)0,1(C)1,0(D)1,1
(D) 用函数模板定义的函数没有类型
(3)函数调用func((exp1,exp2),(exp3,exp4,exp5),(exp6,exp4,exp5))中所含实参的个数为()。
(A)1(B)2(C)3(D)4
(4)有如下程序:
#include
classBase
{charc;
public:
Base(charn):
c(n){}
virtual~Base(){cout<};
classDerived:
publicBase
{charc;
public:
Derived(charn):
Base(n+1),c(n){}
~Derived(){cout<};
intmain()
{Derivedd('X');
return0;
}
执行上面的程序将输出()。
(A)XY(B)YX(C)X(D)Y
(5)若inti=10;执行下列语句后,i的值是()。
switch(i)
{case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
case12:
i+=1;
}
(A)10(B)11(C)12(D)13
(6)假定AB为一个类,则执行"ABx;"语句时将自动调用该类的()。
(A)无参构造函数(C)有参构造函数
(B)拷贝构造函数(D)赋值重载函数
(7)若需要使类中的一个指针成员指向一块动态存储空间,则通常在()函数中完成。
(A)析构(B)构造(C)任一成员(D)友元
(8)保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直接访问该成员。
(A)任何成员(B)公有成员和保护成员
(C)保护成员和私有成员(D)私有成员
(9)声明或定义一个内联函数时,必须在函数开始使用关键字()。
(A)static(B)inline(C)const(D)extern
(10)下列对模板的声明中正确的是()。
(A)template(B)template
(C)template(D)template
(11)设x和y均为整型变量,则x||y为假的条件是()。
(A)它们均为真(B)其中一个为真
(C)它们均为假(D)其中一个为假
(12)下面的哪个关键字不能作为函数的返回类型?
()
(A)void(B)int(C)new(D)long
(13)假定要对类AB定义加号运算符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为()。
(A)ABoperator+(AB&a,AB&b)(B)ABoperator+(AB&a)
(C)operator+(ABa)(D)AB&operator+()
(14)对于类中定义的成员,其隐含的访问权限为()。
(A)public(B)protected(C)private(D)static
(15)程序设计所规定的三种基本控制结构是()。
(A)输入、处理、输出(B)树形、网形、环形
(C)顺序、选择、循环(D)主程序、子程序、函数
二.判断题(每小题1分,共12分)
说明:
请判断下列语句是否正确,如果正确请在表格题号对应的空白内用笔打上√;如果错误请在表格题号对应的空白内用笔打上×。
错打或未打均无分。
()1.创建派生类对象时,先调用派生类的构造函数,再调用基类的构造函数,当销毁这个对象时顺序正好相反,先调用基类的析构函数,再调用派生类的析构函数。
()2.变量分为全局和局部两种,动态局部变量没有赋初值时,其值是不确定的。
()3.模板类的成员函数若在类外实现,则必须是模板函数。
()4.类的静态成员函数可以不属于整个类。
()5.类的友元函数可以访问类的私有成员。
()6.常对象必须进行初始化,而且不能被更新。
()7.需要基类对象的有些地方不可以使用公有派生类的对象来替代。
()8.我们不能用抽象类定义对象,但可以定义抽象类的指针。
()9.虚函数的声明只能出现在类定义中的函数实现中。
()10.基类中某函数声明为纯虚函数之后,基类中就不能给出函数的实现部分。
()11.当一个类的对象离开它的作用域时,系统将自动调用该类的析构函数。
()12.关系表达式x+y>5的相反表达式为x+y<=5。
三.读程序写结果(每小题5分,共25分)
说明:
阅读以下程序,并写出程序运行结果。
1.#include
voidmain()
{ints=0;
for(inti=1;;i++)
{if(s>50)break;
if(i%2==0)s+=i;
}
cout<<"i,s="<
}
2.#include
#include
voidLE(int*a,int*b)
{intx=*a;
*a=*b;
*b=x;
cout<<*a<<''<<*b<}
voidmain()
{intx=10,y=25;
LE(&x,&y);
cout<}
3.#include
classSample
{
private:
intx;
staticinty;
public:
Sample(inta)
{x=a;
x++;
y++;
}
voidprint()
{cout<<"x="<};
intSample:
:
y=10;
voidmain()
{Samples1(20);
Samples2(30);
s1.print();
s2.print();
}
4.#include
template
classFF
{TTa1,a2,a3;
public:
FF(TTb1,TTb2,TTb3)
{a1=b1;a2=b2;a3=b3;}
TTSum(){returna1+a2+a3;}
};
voidmain()
{FFx(2,3,4),y(5,7,9);
cout<cout<}
5.#include
classA
{
public:
A();
A(inti,intj);
voidprint();
private:
inta,b;
};
A:
:
A()
{a=b=0;
cout<<"Defaultconscalled.\n";
}
A:
:
A(inti,intj)
{a=i;
b=j;
cout<<"Constructorcalled.\n";
}
voidA:
:
print()
{cout<<"a="<voidmain()
{Am,n(4,8);
m.print();
n.print();
}
四.编程题(共23分)
注意:
使用规范格式编程,并在适当位置添加注释。
1.(10分)已知6≤a≤30,15≤b≤36,编写程序求出满足方程2a+5b=126的全部整数组解。
如(13,20)就是其中的一组解。
2.(13分)已知点类Point的定义如下,该类包含两个double类型的私有数据成员x和y,分别表示点的横坐标和纵坐标。
定义类的构造函数,用于初始化x和y;定义类的公有成员函数distance,用来计算两点之间的距离;编写程序实现点类Point的成员函数,并在主函数中测试定义的点类Point。
classPoint
{
private:
doublex,y;//点的横、纵坐标
public:
Point(doublexx=0,intdouble=0);
//此处为计算两点之间距离的成员函数,并完成距离的输出
};
北京林业大学2007--2008学年第1学期考试答题纸
考试班级学号姓名考试科目面向对象程序设计语言A成绩
一、单项选择题(每小题2分,共40分)
题号
1
2
3
4
5
6
7
8
9
10
答案
题号
11
12
13
14
15
16
17
18
19
20
答案
二、判断题(每小题1分,共12分)
题号
1
2
3
4
5
6
7
8
9
10
11
12
答案
三、读程序写结果题(每小题5分,共25分)
题号
1
2
3
4
5
答案
四、编程题(共23分)
1.(10分)
2.(13分)