VC++程序设计课程实践基础题

内容发布更新时间 : 2024/12/22 14:28:21星期一 下面是文章的全部内容请认真阅读。

ShowMe()函数显示员工姓名、性别、年龄、职位、部分,以及正式员工的工资,准员工的在职期限;

? 正式员工新增float GetSalary(); 函数获取薪水。; ? 准员工新增char *GetTime();函数获取试用期。

(5)编写main函数,测试上述所要求的各种功能,即可以根据菜单命

令增加、离职和查询各类员工,其中的员工可以是正式员工和准员工。

提示:每个部门的员工可采用链表形式存放,如下图所示:

张三 王五

男 男

32 45 正式员工

经理 技师

20000 10000

next next=0 培训处 h_emp 李四 赵钱 h_stu 男 男 emp_num 准员工 21 22 stu_num 职员 职员

1年 1年

next next=0

程序执行界面如下图所示: 请为培训处增加二名员工!

请部是否要增加正式员工还是非正式员工? 提示:输入Y表示正式员工,输入N表示非正式员工。 y 请设置正式员工的属性: 姓名:张三 性别:男 年龄:21 薪水:1234 职位:助理 8.设计一个程序对电文中的英文字母进行加密和解密,加密算法是大写英文字母循环后移10位,小写英文字母循环前移10位,其他字符保持不变,如A变为K,a娈为q,循环后移是指Z的下一个字母为A,循环前移是指a的下一个字母为z。程序具体要求如下:

(1)定义类Message,表示原电文

? 保护的数据成员 char *s: //表示电文; ? 公有成员函数

构造函数Message(char*p):用p初始化s;

28

?

析构函数~Message():释放s的动态空间;

(2)定义类Message的公有派生类Encrypt,对原电文进行加密

? 新增私有的数据成员

char *str; //表示加密后的电文; ? 公有成员函数

构造函数Encrypt(char*p):用p初始化原电文s,并为密文str分配动态空间;

void fun():对原文加密得到密文,即根据s求str; void show():输出原文和密文;

operator char*():把Encrypt的对象转换成密文字符串; 析构函数~Encrypt():释放str的动态空间;

(3)定义类Message的公有派生类Decrypt,对加密后的电文进行解密

? 新增私有的数据成员

char *str; //表示解密后的电文; ? 公有成员函数

构造函数Decrypt(char*p):用p(Encrypt类对象的数据成员str)初始化密文s,并为解密后的电文str分配动态空间; void fun():对密文进行解密,即根据s求str; void show():输出密文和原文;

析构函数~Decrypt():释放str的动态空间;

(4)在主函数测试定义的类。从键盘输入一个字符初始化Encrypt类的对象e,

并调用其成员函数输出原文和密文,然后用e初始化Decrypt类的对象d,并调用其成员函数输出密文和原文。 本程序运行结果如下所示: 请输入一个字符串:

I am Tom,8:00 tonight at the gate to see. 原文为:I am Tom,8:00 tonight at the gate to see. 密文为:S qc Dec,8:00 jedywxj qj jxu wqju je iuu. 密文为:S qc Dec,8:00 jedywxj qj jxu wqju je iuu. 解密后为:I am Tom,8:00 tonight at the gate to see.

9.设计一组图形类,包括球体类(Globe),圆柱体类(Circular_Column),长方体

类(Rectangular)。其中长方体类(Rectangular)继承自圆柱体类(Circular_Column),而圆柱体类(Circular_Column)继承自球体类(Globe)。另外定义一个所有类的父类图形类(Sharp)。具体要求如下: (1)长方体类(Rectangular)中数据成员有长、宽、高,最终使用一个函数fun()

输出该图形为长方体,以及此长方体的长、宽、高、体积、表面积。

(2)圆柱体类(Circular_Column)中数据成员有半径和高。最终使用一个函数

fun()输出该图形为圆柱体,以及此圆柱体的半径、高、体积、表面积。 (3)球体类(Globe)中数据成员有半径。最终使用一个函数fun()输出该图形

29

为球体,以及此球体的半径、体积、表面积。

(4)图形类(Sharp)有两个函数,一个为输出的fun(),另一个为图形变化函

数Change()。一旦图形变化函数Change()的返回值为0,则变成球体;一旦为1,则变成圆柱体;一旦为2,则变成长方体。 (5)每个类中数据成员按需求定义为私有(Private)或者的受保护(protected)。 (6)编写一个函数Shape_Change(),生成若干个球体、圆柱体或者长方体,随

机生成该图形所需要的参数(都为1-10之间的整数),并输出其对应类中函数fun()应当输出的内容。直到连续生成3个同种图形为止。

(7)编写main函数,调用函数Shape_Change(),以实现整个程序。 说明:

(1)本程序中的圆周率π需要被宏定义,且至少精确到小数点后5位。 (2)本程序中可能需要的几个公式: V(球体)=4*π/3*r*r*r S(球体)=4*π*r*r

V(圆柱体)=π*r*r*h S(圆柱体)=2*π*r*(r+h)

V(长方体)=a*b*c S(长方体)=2*(a*b+b*c+c*a)

执行结果如下:

该图形为长方体。它的长为:7 它的宽度为:1 它的高为:8 它的体积为:56 它的表面积为:142

该图形为长方体。它的长为:1 它的宽度为:6 它的高为:7 该图形为圆柱体。它的半径为:10 它的高为:4 它的体积为:1256.64 它的表面积为:879.645 该图形为球体,它的半径为:4

它的体积为:268.082 它的表面积为:201.062

10.设计一个程序通过虚函数求长方形的面积和长方体的表面积,具体要求如下:

(1)定义长方形类Rectangle ? 保护的数据成员

int l,w; //表示长方形的长和宽 int s; //表示长方形的面积 ? 公有的构造函数

Rectangle(int x,int y):初始化长方形的长和宽; ? 公有的虚函数

virtual void fun():求长方形的面积;

virtual void show():输出长方形的长、宽和面积。

(2)定义长方形类A的公有派生类Cuboid,表示长方体类 ? 私有的数据成员

int h; //表示长方体的高 ? 公有的构造函数:

Cuboid(int x,int y,int z):初始化长方体的长、宽和高。 ? 公有函数

30

void fun():求长方体的表面积;

void show():输出长方体的长、宽、高和表面积。

(3)在主函数中对定义的类进行测试,要求定义长方形对象a1(长为2,宽为

3),长方体对象b1(长、宽、高分别为2,3,4),通过基类的指针p分别求长方形的面积和长方体的表面积,输出数据成员,并体现运行的多态性。 程序运行结果如下:

长方形的长为2,宽为3,面积为6

长方体的长为2,宽为3,高为4,表面积为52

11.设计一个程序,查询2000年1月1日(星期六)后的某天是星期几,具体要求

如下:

(1)定义函数int leap(int year):判断某年year是否为润年。能够被400整除,

或者能够被4整除但不能衩100整除的年份是润年。

(2)定义函数int f(int y,int m,int d,int *m1,int *m2):判断输入的日期是否合

法,其中y、m、d分别表示年、月、日,m1表示非润年每月的天数,m2表示润年每月的天数。 (3)定义类date,表示日期 ? 私有数据成员

int year,month,day; //分别表示某年某月某日 ? 公有成员函数:

date(int y,int m,int d):构造函数,用形参分别初始化数据成员; int get_year():访问私有成员year; int get_month():访问私有成员month; int get_day():访问私有成员day;

void show():以指定格式输出数据成员。

(4)定义类week,判断某天是星期几 ? 私有数据成员

date d1; //日期类的对象,表示某日

int m1[12];//存储非润年每月的天数31,28,31,30,31,30,31,31,30,31,30,31 int m2[12];//存储润年每月的天数31,29,31,30,31,30,31,31,30,31,30,31 int w;//表示用0表示星期天,1表示星期一,以此类推6表示星期六 ? 公有成员函数

week(int y,int m,int d,int *p1,int *p2):构造函数,用y,m,d初始化日期,用p1,p2分别初始化m1,m2;

int days():计算d1距2000年1月1日的时间间隔(天数);

void fun():根据days()的计算结果判断d1是星期几(求以0~6表示w的值);

void print():输出判断结果。

(5)在主函数中对定义的类进行测试。从键盘输入一个日期,并检查输入数据

的合法性,然后用输入的数据和表示每月天数的数组初始化week类的对象

31

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi