东华大学2008----2009学年 第 1 学期期终试题
踏实学习,弘扬正气;诚信做人,诚实考试;作弊可耻,后果自负。 课程名称 面向对象程序设计C++ (A) 使用专业 07电气信息 班级_____________________姓名________________学号__________ 试题得分 一 二 三 四 五 六 七 八 九 十 总分 一、填空题(20分)
1.语句cout<<0123输出结果为 。 2.continue语句只能用在 内。
3.友元函数被说明在类体内,它可以访问该类中的 成员。 4.若要将某类类型转换成double类型,则相应的类型转换函数的名称为 。
5.C++语言中的 运算符相当于C语言中的free()函数。
6.C++有三个重要机制,第一重要机制为数据封装,另外两个重要机制分别 为 和 。
7.设a和b分别为类A和类B的对象,则赋值语句a=b成立的条件是,类B是类A的 。
8.除支配规则和成员名限定法外,还可以用 方法避免多继承情况下
出现的二义性。
9.使用关键字class定义的类中缺省的访问权限为 。
二、选择题(请在正确答案上打上○) (20分)
1.执行语句int a[5]={1,3,5}之后,数组元素a[4]的值是多少? A. 5 B. 3 C.1 D.0
2.联合成员的地址值和所占的字节数 。 A.都相同 B.都不相同
C.前者相同,后者不同 D.前者不同,后者相同
3.下列do-while循环的循环次数是多少? int i(5);
do { cout<A.无限 B.0 C.1 D.5
1
出题人(签名)___________
室负责人(签名)_________
4.下列关于函数模板和模板函数的描述中,哪个是错误的? A.函数模板是一组函数的样板;
B.模板函数在编译时不生成可执行代码; C.函数模板是定义重载函数的一种工具; D.模板函数是函数模板的一个实例。
5.下列哪个不是成员函数?
A.静态成员函数 B.友元函数 C.构造函数 D.析构函数
6.下列关于析构函数的描述中,哪个是正确的? A. 析构函数是一种函数体为空的成员函数; B. 析构函数不能被重载; C. 析构函数可以有多个参数;
D. 析构函数的定义只能在类体内。
7.已知f1( )是类A的公有成员函数,p是指向成员函数f1( )的指针,下列哪个赋
值语句是正确的?
A.p=A::f1 B.p=f1 C.p=A::f1() D.p=f1()
8.派生类的构造函数的成员初始化列表中,下列哪个不能被包含? A.基类的构造函数;
B.派生类中子对象的初始化; C.全局变量的初始化;
D.派生类中一般数据成员的初始化。
9.关于虚函数的描述中,下列哪个是正确的? A.虚函数是void类型的成员函数; B.虚函数是一种特殊的友元函数;
C.与派生类虚函数对应的基类虚函数可以有不同的参数个数和类型;
D.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数。
10.下列关于运算符重载的描述中,下列哪个是正确的? A.运算符重载可以改变操作数的个数; B.运算符重载可以改变优先级; C.运算符重载不可以改变语法结构; D.运算符重载可以改变结合性。
2
三、试编写一个从n个元素 (假设它们被存放在一个数组中) 挑选一个最小元素的函数模板。(10分)
四、编写一程序,从一个字符串中挑选一个在该字符串中出现频率最高的字符,并输出该字符及其出现的频率,如字符串“excellent”对应的输出应为“e, 3”。(10分)
3
五、编写一程序,打印输出999以内的水仙花数。所谓水仙花数是指它的每位数字
的立方之和等于它自身,即满足xyz=x3+y3+z3,如153=13+53+33 。(10分)
4
六、下面是一个被用来实现复数加和减运算的类,但留有一些空白。请按照类和函数定义的要求在空白处填上恰当的代码。(5分) class complex { public:
complex (double r=0,double i=0){ real=r; imag=i;}
complex operator + (const complex & c1,const complex &c2); complex operator - (const complex & c); void print() const
{ cout < (const complex & c1,const complex &c2) { return complex(c1.real+c2.real,c1.imag+c2.imag); } (const complex & c) { return complex(real-c.real, imag-c.imag); } void main() { complex c1(1,2),c2(3,4),c3(5,6); c3=c1-c2+c3; c3.print(); } 七、找出下列程序中的错误,并注明出错类型。(5分) #include ~A(int i){ cout<<\"~A\"; } private: int x; }; enum color{RED, BLUE, GREEN}; void main() { int a[3]; a[3]=5; x=5; 5 enum color c; c=1; A b; b.x=5; } 八、分析下列程序,并回答后面的问题。(10分) 程序内容如下: