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

2019-04-22 21:34

(1)私有数据成员

? int *p[5]:存放二维数组每行的字符串的地址。 (2)公有成员函数

? SUM(int d[5][5]):构造函数,初始化成员数据。

? void process1():对二维数组中存放的字符串进行排序。 ? void print():输出二维数组中排好序的字符串。 (3)在主程序中对该类进行测试。

33.建立一个类Integer_String,把一个正整数转换为字符串。

具体要求如下: (1)私有数据成员

? int num:要转换的正整数。

? char *s:用动态空间存储转换得到的字符串。 (2)公有成员函数

? Integer_String(int n):用参数n初始化数据成员num。 ? int f():求数据成员num的位数。

? void fun():把正整数num转换为字符串s。

? void show():输出数据成员num和s; ? ~Integer_String():释放动态空间。

(3)在主函数中对定义的类进行测试。用正整数12345初始化类Integer_String

的对象test,调用相关成员函数后输出转换结果。

34.建立一个类String_Integer,把一个字符串中的数字字符转换为正整数。

具体要求如下: (1)私有数据成员

? char *s:用动态空间存放字符串。

(2)公有成员函数

? String_Integer(char *str):用参数str初始化数据成员s。

? operator int():转换函数,数据成员s转换整数并返回该数。 ? void show():输出数据成员s。 ? ~String_Integer():释放动态空间。

(3)在主函数中对定义的类进行测试。定义字符数组,把由键盘输入的字符串

“ab12 3c00d45ef”存入数组,并用该数组初始化类String_Integer的对象test,调用show函数输出test的数据成员s,然后把对象test赋值给整型变量n并输出,转换结果如下所示(下划线部分是从键盘输入的内容): 请输入字符串ab12 3c00d45ef :ab12 3c00d45ef 字符串为:ab12 3c00d45ef 转换得到的整数为:1230045

35.建立一个类Union求两个整数集合的并集。

具体要求如下: (1)私有数据成员

? int *set1,len1:用动态空间set1存储集合1,len1表示其元素的个

20

数。

? int *set2,len2:用动态空间set2存储集合2,len2表示其元素的个

数。

? int set[20],len:用数组空间set存储并集,len表示其元素的个数

(2)公有成员函数

? Union(int *s1,int l1,int *s2,int l2):用变量s1和l1初始化集合1及

其长度,用变量s2和l2初始化集合2及其长度,并把并集的长度置为0;

? int f(int num):判断整数num是否属于集合1,是返回1,否则返

回0;

? void fun():求集合1和集合2的并集,方法是先把集合1中的所

有元素复制给并集,然后调用f函数把集合2中不属于集合1的元素复制给并集;

? void show():输出集合1、集合2和并集; ? ~Union():释放动态空间。

(3) 在主函数中对定义的类进行测试。定义数组s1:{1,2,3,4,5,6,7,8}、s2:

{1,3,5,7,9,11},并用它们初始化类Union的对象obj,然后调用相关的成员函数,求并集,输出集合1、集合2和并集。

36.建立一个类Intersection求两个整数集合的交集。

具体要求如下: (1)私有数据成员

? int set[20]:用数组空间set存储集合。 ? int len:表示该集合中元素的个数

(2)公有成员函数

? Intersection(int *s,int l):用s初始化集合,用变量l初始化其长度。 ? Intersection( ):把set中各元素和长度初始化为0。

? int f(int num):判断整数num是否属于集合,是返回1,否则返回

0;

? Intersection operator&&(Intersection t):重载&&,求当前对象的集

合和参数对象t的集合的交集,方法是用对象t的集合中的每个元素作为参数调用f函数,若该元素属于当前对象的集合,则把它复制给交集。

? void show():输出集合。

(3)在主函数中对定义的类进行测试。定义数组s1:{1,3,4,5,7,8}、s2:

{1,2,3,5,7,9,11},并用它们初始化类Intersection的对象obj1和obj2,然后调用相关的成员函数输出集合;定义对象obj3,并用obj1和obj2的与运算符结果(交集)初始化该对象,并输出交集。

37.建立一个类NUM,为特定序列进行排序,并多次重复以统计每个数字出现的概率。

具体要求如下:

21

(1)私有数据成员

? int data[25]:随机生成25个10000以内的整数,不能出现重复的

数字。

(2)公有数据成员

? NUM():构造函数,初始化数组data。

? void process( ):为数组data进行排序,要求升序排列,使用排序算

法不限。

? void times( ):充分多(自行输入,大于100)次调用构造函数,统

计每个数字出现的概率,每行输出一个数字的出现概率与它出现的数学期望,并验证大数定理。

? void print( ):输出数组data,每行输出5个数字。

(3)在主程序中定义一个对象,对该类进行测试。 提示: ① 可能需要的库函数及其用法:

n*rand()/(RAND_MAX+1.0) 生成一个0-n之间的伪随机数,需要头文件stdlib.h支持。

srand((int)time(0)); 不断重置某些函数(例如rand()),需要头文件time.h支持)。

② 大数定理的验证:只要所有数字的出现概率除以数学期望的商在0.95-1.05之间,便可以认为在5%误差范围内验证了大数定理的正确性。

38.建立一个类Sample,对数组中元素用选择法进行升序排序。排序函数定义到

Sample类的友元类Process中。 具体要求如下: 类Sample #define Max 100;

(1)私有数据成员

? int A [MAX]:一维整型数组,存放需要排序的数。 ? int n:需要排序的数的个数。 (2)公有成员函数

? Sample ():构造函数,初始化成员数据n,初始值为0。

友元类Process 公有成员函数

? void getdata(Sample &s):从键盘输入数据,对数组A进行赋值。 ? void selectsort(Sample &s):对数组A中的元素进行升序排序。 ? void disp(Sample &s):输出数组中的元素。

(3)在主程序中定义对象对该类进行测试。

22

5.2提高题

1.为某高校的学籍和成绩管理设计一系统。要求建立的数据有: (1)学生类,包含班级号、学号、姓名、专业等成员;

(2)学生成绩类,包含班级号、学号,课程名,成绩等成员。

完成下列功能:首先输入学生数据及成绩数据,再根据提示分别实现查找功能。其中:

? 函数Xslr负责学生数据录入; ? 函数Cjlr负责成绩数据录入;

? 函数Look1负责根据姓名查找学生的基本信息和成绩信息; ? 函数Look2负责根据班级列出学生的基本信息;

? 函数Dayin1负责依据班级输出满足条件的学生的基本情况; ? 函数Dayin2负责输出某一同学的成绩单。

创新要求:自设计界面,要求美观、方便,还可自增加功能,如依据不同的条件排序后输出等。

程序执行情况如下所示:

*****************请输入学生数据(班级号为-1结束)****************** 请输入班级号: 1 请输入学号: 1 请输入姓名: 王平 请输入专业: 计算机科学 请输入班级号: 2 请输入学号: 1 请输入姓名: 李丽 请输入专业: 通信工程 请输入班级号: 1 请输入学号: 2 请输入姓名: 刘红 请输入专业: 计算机科学 请输入班级号: -1

2.设计一个电子通信录。其中包括如下类:

(1)通信地址类addr。包含公有数据:

? 成员char post[10]; //邮编 ? 成员char ad[40]; //家庭地址

? 构造函数addr(char p[10]=\;

? 成员函数void setadd(addr a); //用a为当前对象赋值 (2)出生年月类birth。包含公有数据:

? 成员int year; //年份 ? 成员int month; //月份

23

? 成员int day; //日期

? 构造函数birth(int y=0,int m=0,int d=0);

? 成员函数void setbir(birth b); //用b为当前对象赋值 (3)类friends。包含数据:

? 私有成员int number; //序号 ? 私有成员char name[20]; //姓名 ? 私有成员char sex; //性别

? 私有成员char telephone[13]; //联系电话 ? 公有成员birth bir; //出生年月 ? 公有成员addr add; //通信地址

? 公有构造函数friends(int nu=0,char n[20]=\\s=' ',int y=0,int

m=0,int d=0,char p[10]=\;

? 公有成员函数void setfri(int nu,char n[20],char s,birth b,addr a,char

t[13]); //为当前对象赋值

? 公有成员函数friends input(friends &bb); //为对象bb输出数据 ? 公有成员函数int search(friends aa[100],char n[20]); //在aa中查找姓

名为n的对象

? 公有成员函数void show(friends aa); //输出对象aa

? 公有成员函数void delet(friends aa[100],int k); //在aa中删除下标为

k的元素

(4)在主函数中完成主菜单的设计,并根据输入值完成所需操作。

创新要求:自设计界面,要求美观、方便,还可自增加功能,如依据不同的条件排序后输出等。

程序执行后主菜单如下: 1.输入数据 2.输出数据 3.查找数据 4.删除数据 5.退出

请选择(1~5):

3.设计一个停车场管理系统。具体要求如下:

(1)停车场有若干停车位(为说明问题,假定为3个),每个位置可以存放不

同种类的的汽车,包括卡车Truck,客车Carriage和小轿车Car,但同一时刻一个位置只能存放0或1辆汽车。

(2)管理系统模拟实际车辆停车的情况:新来车辆时如果有空位,按顺序为该

车分配停车位;车辆开走时,交纳相应停车费;统计各类车辆的数量。 (3)定义描述停车场的类Park,其中有3个位置用于存放各类车辆。 (4)定义基类Automobile,至少包括纯虚函数Pay用于显示车辆信息并交纳相

应停车费。

24


VC++程序设计课程实践基础题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:空气净化器十大排名,还您健康纯净好水源 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: