C++考试试题重点 下载本文

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;iarea(); return sum; }

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 #include class Employee {

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 #include class Point {

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 class Rectangle {

public:

Rectangle();