安徽大学C++试卷-2007年
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安徽大学20 —20 学年第学期
《面向对象程序设计》考试试卷
一、选择题(每小题2分,共20分)
1、下面语句中,错误的是
A、char c[6]={A,B,C,D,E};
B、char a[6]={65,66,67,68,69};
C、char b[6]={'A','B','C','D','E'};
D、char d[6]="ABCDE";
2、在语句cout<<x;中,cout是。
A、对象名
B、类名
C、函数名
D、C++中的关键字
3、下列说法不正确的是_______________
A.类中,成员的默认访问特性是私有的。
B.类封装了数据和操作。
C.在类的定义中,必须包含private、public、protected三种存取方式对应的部分。
D.类实质上是一种数据类型。
4.在下面的函数原型声明中,存在着语法错误的是______________
A. void BD(int a , int);
B. void BD(int , int);
C. void BD(int , int x=5);
D. int BD(int x ; int y);
5、声明类如下:
class c1{ public:
c1(){ cout<<’#’;}
};
执行语句:c1 a1,a2[2],*a3[2];
运行结果为。
A、#
B、###
C、####
D、#####
6、关于类模板作用的描述,正确的是。
A、类模板的主要作用是生成抽象类
B、类模板实例化时,根据模板实参生成一个类
C、类模板的数据成员具有相同类型
D、类模板的成员函数都没有返回值
7.可以重载的运算符有_________________
A.::
B. sizeof
C. .
D. [ ]
8、下列符号可以作为C++标识符的是
A、_cpu
B、a~b
C、else
D、2d3d
9、在表达式x1+x2-x3中,+ 是作为成员函数重载的运算符,* 是作为友元函数重载的运算符。
下列叙述中正确的是
A、operator+有两个参数,operator-有两个参数
B、operator+有两个参数,operator-有一个参数
C、operator+有一个参数,operator-有两个参数
D、operator+有一个参数,operator-有一个参数
10.已知函数f的原型为void f(int &a,char *b);,变量s,t的定义是:int s; char t[]=”ABCD”;把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是_____________ A. f(&s,&t); B. f(&s,t);
C. f(s,t);
D. f(s,&t)
二、填空题(每空1分,共20分)
1.算法的基本控制结构由、和三种。
2.面向对象程序设计的基本特点有、、、。
3.C++作用域分为、、、。
4.面向对象的软件工程包括面向对象的、、、和。
5.函数在对象创建时被自动调用,函数在对象生存期结束时被自动调用。
6.带有的类是抽象类。
7.在用class定义一个类时,数据成员和成员函数的默认访问权限是。
8.多态从实现的角度可以分为两类:编译时的多态和时的多态。
三、程序填空题(每小题6分,共12分)
1.已知下面程序首先创建对象数组,接着访问数组元素的成员,最后删除整个对象数组,输出结果为:5 16。
#include<iostream>
using namespace std;
class AA
{ public:
AA(int xx=0 ) {X=xx;}
int GetX() {return X;}
void Move(int x) { X=x; } private:
int X;
};
void main() {
AA *Ptr=new AA[2];
Ptr[0].Move(5);
Ptr[1].Move(16);
for (int i=0;i<2;i++)
cout<<
<<' ';
delete ; }
2。
完成以下sin函数的重载,为了能用角度(实数)作为参数进行计算。
#include <iostream>
#include <cmath>
class degree
{
double deg;
public:
degree(double x=0):deg(x)
{}
friend double sin(degree& x)
{
return
}
};
main()
{
int n;
for (n=0;n<=180;n+=30)
{
cout<<sin(x)<<endl;
}
}
四、读程序题(16+12,共28分)1.写出下列程序的运行结果
1.#include <iostream>
using namespace std;
class Point
{
public:
Point(int xx=0, int yy=0)
{X=xx;Y=yy;cout<<"构造函数被调用"<<endl;}
Point(Point &p);
int GetX() {return X;}
int GetY() {return Y;}
private:
int X,Y;
};
Point::Point(Point &p)
{ X=p.X;
Y=p.Y;
cout<<"拷贝构造函数被调用"<<endl; }
void fun1(Point p)
{ cout<<p.GetX()<<endl;
}
Point fun2()
{ Point A(1,2);
return A;
}
void main()
{
Point A(4,5);
Point B(A);
cout<<B.GetX()<<endl;
fun1(B);
cout<<fun2().GetX()<<endl; }
2.写出下列程序的运行结果
#include <iostream>
using namespace std;
class B0
{
public:
void print(){cout<<"B0::print()"<<endl;}
virtual void display(){cout<<"B0::display()"<<endl;}
};
class B1: public B0
{
public:
void print(){cout<<"B1::print()"<<endl;}
void display(){cout<<"B1::display()"<<endl;} }; class D1: public B1
{
public:
void print(){cout<<"D1::print()"<<endl;}
void display(){cout<<"D1::display()"<<endl;}
};
void fun(B0 *ptr)
{ ptr->print();
ptr->display();
}
void main()
{ B0 b0,*p;
B1 b1;
D1 d1;
p=&b0;
fun(p); p=&b1; fun(p);
p=&d1;
fun(p); }
五、编程题(每题10分,共20分)
1.设计并测试一个名为Rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的周长。
编写程序建立一个Rectangle类型的对象,并显示该对象的周长。
2.声明一个表示人的类PP,PP中有私有数据成员name、age分别表示姓名和年龄;由PP 派生出学生类SS,SS中包含私有数据成员grade表示年级,由函数getg()返回grade;由PP派生出教师类TT,TT中包含私有数据成员grade表示教龄,也由函数getg()返回grade;由SS和TT 派生出又是教师,又是学生的类ST,ST中不增加新的数据成员。
编写程序建立一个是教师,也是学生对象“钱一,30岁,2年级,3年教龄”,并且显示他的姓名、年龄、年级和教龄。