陈士浩VC++课程实践 下载本文

江苏科技大学

课程实践报告

设计题目: 计算机程序设计实践(VC++) 设计时间: 2011. 9.20 至 2011. 9.23

学 院: 材料科学与工程学院 专业班级: 10级材料成型及控制工程专业 学生姓名: 陈士浩 学号 1040601112 指导老师: 华 伟

2011 年 9 月 23 日

一、 实践任务

任务一:建立一个类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,调用相关成员函数后输出转换结果。

任务二:定义一个字符串类String,实现判断该字符串是否为回文字符串,是指该字

符串左右对称。例如字符串“123321”是回文字符串。具体要求如下: (1)私有数据成员 Char *str; Int y:标记是否为回文字符串 (2)公有成员函数 String(char*s):构造函数,用给定的参数s初始化数据成员str。y初始化

为0。 Void huiwen():判断str所指向的字符串是否为回文字符串。 Void show():在屏幕上显示字符串。

(3)在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串,定义一个

String类对象test,用s初始化test,完成对该类的测试。

任务三:试建立一个类VAR,用于求n(n<100)个数的均方差。均方差的计算公式

d=,其中平均值为

.

具体要求如下:

(1)私有成员数据。 double a[100]:用于存放输入的n个数。 int n:实际输入数的个数。 (2)公有成员函数 VAB(double x[],int n):构造函数,初始化成员数据a和个数n。 double average(double x[],int n):求平均值,数组x具有n个元素。 void variance(double x[],int n):求均方差,数组x具有n个元素

void show():输出求得的均方差。

(3)在主函数中定义一个对象test,对该类进行测试。

任务四:建立一个类NUM,随机产生25个字符序列,并为特定序列进行排序。具体要求如下:

(1)私有数据成员 char data[25]:随即产生25个字符。 (2)公有数据成员 NUM():构造函数,初始化数组data。 void process():为数组data进行排序,要按照ACSII码进行升序排列。 void print():输出数组data,每行输出5个字符。 (3)在主程序中定义一个对象,对该类进行测试。 任务五:试定义一个时间类time,具体要求如下: (1)私有数据成员 Int h,m,s:分别表示时、分和秒。 Char*str_t;存放时间的字符串,格式为“hh:mm:ss”,即“时:分:秒”。 (2)公有成员函数 time(int hh=0,int mm=0,int ss=0);构造 ,利用参数hh,mm,ss分别初始化成

员h,m,s,并为字符串str_t分配9个字节的动态空间。要 参数hh,mm,ss 的合法性,即

0<=hh<24,0<=mm<60,0<=ss<60,如果不合法,则采用相应的缺省值参数值。 ~time();析构函数,撤销str_t所占用的动态空间、。 void convert();利用全局函数itoa()将成员h,m,s转换成字符串“hh:mm:ss”的形

式,并存储在str_t中。 void set_t(int hh,int mm,int ss);利用参数hh,mm,ss分别设置成员h,m,s的值,同时调用成员 convert()设置成员str_t。注意检查参数的合法性。

void print();输出字符串str_t,按输出示例中的格式输出 。

(3)char *itoa(int n);全局函数,将整数n转换为字符串 并返回。只考虑n至多为两位数的情形:当n为一位数时,例如n=2,将n转换成“02”的形式;当n为两位数时,例如n=59,将n转换为“59”。

(4)在主函数中对该类进行测试。 输出 : 00:00:00 12:05:30

任务六:定义类AB,求两个整数之间最大过剩数以及对应的过剩值。一个整数n为过剩数的条件是:n的所有因子(包括1和n本身)之和与2之差(假设为d)大于零。其中,当d>0时,n的过剩值为;当d<=0时,n表示不是过剩数。 具体要求如下:

(1)私有数据成员

int lower,upper;所考虑整数范围的下限和上限。

(2)共有成员函数

AB(int a,int b);构造函数,初始化成员lower和upper.

int check(int n);检查参数是否为过剩数,则返回相应的过剩值,否则返回-1。 int cal(int &n);求数据成员lower和upper之间的最大过剩数(依次求出这两个整数之间每个数的过剩数,保存最大值),并赋给参数n,同时将最大过剩数所对应的过剩值作为函数的返回值。

void print();输出lower和upper之间的最大过剩数以及相应的过剩值。 (3)在主涵数中对该类进行测试。

输入/输出示例(下划线部分为键盘输入): 输入下限和上限:

在42和816之间最大的过剩数为:720,其对应的过剩值为978

任务七:试定义一个类Array,对一个数组中的元素按其绝对值从大到小选取其前个元素放入另一个数组中(设数组中各元素的绝对值互不相同)。要求原数组中的元素的顺序保持不变。具体要求如下: (1)私有数据成员

int *p,n;p为数组的首地址,n为数组元素的个数。 (2)公有成员涵数

Array(int *a=0,int k=0);构造函数,用数组a的k个元素初始化数据成员p,用k初始化数据成员。

void fun(int t[],int m);将数组p的所有元素依次拷贝到数组t中,将t中元素按其绝对值从大到小排序,取t中的前m个元素(后面的元素置为0)。 ~Array();析构涵数,撤销所占用的动态存储空间。 void print();输出数组的所有元素。