A(){a=0;} A(char *aa){ a= ______ ; strcpy(a,aa); }
______ ; };
三、编程题
//定义无参构造函数,使A的值为空
//进行动态存储分配
//用aa所指字符串初始化a所指向的动态存储空间 //定义析构函数,删除a所指向的动态存储空间
1.创建一个Employee类,该类中有字符数组表示姓名、街道地址、市、省和邮政编码。 把表示构造函数、ChangeName函数、Display函数的函数原型放在类定义中,构造函数初始化每个成员,Display函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。
2.设计并测试类Point,其数据成员是直角坐标系的点坐标。友元函数distance用来计算两点间的距离。
3.定义一个Rectangle类,有宽width、长length等属性,重载其构造函数Rectangle、
Rectangle(int width , int length)。
4.编写一个程序,设计一个Cdate类,它应该满足下面的条件。 ⑴ 用这样的格式输出日期:日-月-年。 ⑵ 输出在当前日期上加两天后的日期。 ⑶ 设置日期。
5.按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。 int f(int a[],int n)
6.根据下面类中Sum函数成员的原型和注释写出它的类外定义。 class AA{ int *a; int n; int MS; public:
void InitAA(int aa[],int nn,int ms) {
if(nn>ms){cout<<\ MS=ms;
a=new int[MS];
for(int i=0;i int Sum();//求出并返回数组a中前n个元素之和 }; 7.定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。 8.下列Shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请从Shape类派生三角形类(Triangle)、矩形类(Rectangle),并给出具体的求面积函数。 class Shape{ public: virtual float area()=0; }; float total(Shape *s[],int n) { float sum=0.0; for(int i=0;i 9.声明一个Shape类(形状)基类,它有两个派生类:Circle(圆)和Square(正方形),要求如下。 ⑴ 根据给出的圆心坐标计算圆的面积。 ⑵ 根据给出的正方形中心坐标和一个顶点坐标计算该正方形的面积。 提示:Shape类的数据成员包括中心的坐标,Circle类和Square类由Shape类派生, Circle类新增一个数据成员,即圆的半径,Square类新增两个数据成员,即顶点坐标。 明该对话框对象已不存在了。 二、填空题 1.引用 2.构造函数 析构函数 3.A(),B() 4.this, A * 5.静态数据成员 静态成员函数 6.friend 7.派生类 基类 8.public、protected、private 9.virtual 10.基类 派生类自身 11.成员函数 12. 运行时 13. 静态联编,动态联编 14. public vehicle ,public vehicle 15. 基类 A中的成员函数. 派生类B中的成员函数. 16. C类 B类 17.抽象函数 18. 优先级 2. 1 2 19. A operator ++(int) friend A operator ++(A &,int) 20. Time Time::operator +(int) 21.输入消息、控制消息、系统消息、用户消息 22.WM_LBOTTONDOWN OnLButtonDown 23.CDC 24.设备环境 25.模态对话框 非模态对话框 26.构造函数 OnInitDialog()函数 27.CColorDialog、CFileDialog、CFindReplaceDialog、CFontDialog、CPrintDialog 28.CeditView 29.OnNewDocument() 30.Invalidate()或InvalidateRect() 31.下一行 32.3 和 3.2 33.5 34.代码 35.4×i 36.单继承 37.不能够 38.AB( ) 39. a 40.2 41.静态 42.友元 43.virtual 44.=0 45.抽象类 46.抽象类 47.AB 48.1 5 14 30 55 91 140 204 49.输入2个整数相加的结果,结果正确返回1,否则返回0 50.将字符串中的小写字母转换为大写 51.非多态调用 52.第一操作数 53.operatro double() 54.operator +=(x,y) 55. (istream &,CSAI &) 56. 不能 57. 多态 58. return mid low=mid+1 59. new char[strlen(aa)+1] ~A(){delete []a;} 三、编程题 1. #include protected: char name[20]; char address[100]; char city[20]; char province[20]; char zipcode[10]; public: Employee(char *nm,char *addr,char *city, char *prov, char *zip); void ChangeName(char * newName); char * Display(char * buffer); }; Employee::Employee(char *nm, char *adr, char *cit, char *prov, char *zip) { strcpy(name,nm); strcpy(address,adr); strcpy(city,cit); strcpy(province,prov); strcpy(zipcode,zip); } void Employee::ChangeName(char * newName) { strcpy(name, newName); } char * Employee::Display(char *buffer) { strcpy(buffer, name); strcat(buffer, address); return buffer; } 2. #include private: float x, y; public: Point(float xx, float yy) { x=xx; y=yy; } float GetX(){ return x; } float GetY(){ return y; } friend float distance(Point&, Point&); }; float distance(Point& a, Point& b) { float dx = a.x - b.x; float dy = a.y - b.y; cout<<\用友元函数 distance(). 显示两点的坐标 : \\n \cout< void main() { float d; Point p1(10.5, 20.5), p2(2.5, 6.5); d=distance(p1, p2); cout<<\ 两点的距离 : d = \} 3. #include public: Rectangle();