江苏科技大学
课程实践报告
设计题目: 计算机程序设计实践(VC++)
设计时间: 2012. 3.27 至 2012. 3.4 学 院: 机械工程学院 专业班级: 机械电子工程专业10402062班 学生姓名: 王磊 学号 1040206223 指导老师: 华 伟
2012 年 3 月 1 日 一、 实践任务 任务一:建立一个STRING,,将一个字符串交叉插入到另一个字符串中(假设两字符串等长)。 具体要求如下: (1)私有数据成员 char str1[80]:存放被插入的字符串。 char str2[40]:存放待插入的字符串。 (2)公有成员函数 STRING(char*s1,char*s2):构造函数,用s1和s2初始化str1和str2。 void process():将str2中的字符插入到str1中。 void print():输出插入后的字符串。 (3)在主函数中定义STRING类的对象test对该类进行测试。
任务二:建立一个STRING,,将一个字符串交叉插入到另一个字符串中(假设两字符串不等长)。 具体要求如下: (1)私有数据成员 char str1[80]:存放被插入的字符串。 char str2[40]:存放待插入的字符串。 char str3[100]:存放插入后的字符串。 (2)公有成员函数 STRING(char*s1,char*s2):构造函数,用s1和s2初始化str1和str2。 void process():将str2中的字符插入到str1中,存放到str3中。 void print():输出插入后的字符串。 (3)在主函数中定义STRING类的对象test对该类进行测试。
任务三: 建立一个类NUM,并统计特定序列中相同的数字的个数。 具体要求如下: (1)私有数据成员 int data[25]: 随机生成25个在0-9之间的数字。 int num[10]:储存每个数字出现的个数。 (2)公有成员函数 NUM(int data):构造函数, 初始化数组data。 Void process( ): 。 数组data中每个数字出现的个数,并保存到数组num中。 void print(): 输出每个数字出现的个数,每行输出5个。 (3) 在主程序中定义一个对象,对该类进行测试。
任务四:建立一个类NUM,求指定数据范围内所以的素数。提示:素数定义是“只能被1和它本身整除的整数”,即质数。 具体要求如下: (1)私有数据成员 int data[10]:依次存放原始数据。 int prime[10]:存放指定数据内所求出的所以素数。 int num:存放素数个数。 (2)公有成员函数 NUM(int n[ ]):构造函数,用参数n初始化data,同时初始化num为0。 Int isprime(int x):判断x是否为素数。若是素数,返回1,否则,返回0。 void process():求指定data数组中的所有素数,把它们依次存放在数组prime中,并求出素数的个数赋给num。 void print():输出求出的素数个数级所有素数,每行输出4个素数。 (3)在主函数中完成对该类的测试。定义NUM类对象test调用成员函数完成求素数及输出素数的工作。原始数据为{4,5,6,11,36,29,1,101,56,199}。
任务五:试定义一个类ID,实现根据某人身份证号码判断在其指定年份时的虚岁年龄。 具体要求如下: (1)私有数据成员 char id[19]:存放身份证号码,身份证号码为18位。 int age:根据身份证号码和指定年份计算后得到的虚岁年龄。 (2) 公有成员函数 ID(char *p):构造函数,利用参数p初始化身份证号码。 Int substr(char *p0,char n0,int n):取字符串p0中从第n0个字符开始的连续n个字符(假设都是数字字符)并按顺序转换为相应的整数值,结果作为函数的返回值。 void fun(int y1):计算相对某个年份一,该身份证号码主人的虚岁年龄。对于18位身份证,从第七位(序号从1开始)开始的四位数字为其出生年份。 void print():打印身份证号码及其年龄。 (3) 在主程序中对该类进行测试。
任务六:试定义一个类NUM,实现对于给定的任意整数,求出其降序数。 具体要求如下: (1)私有数据成员 int n:存放一个整数。 int m:存放n的降序数。 (2)公有成员函数 NUM(int x=0): 参数x初始化数据成员n。 void decrease():求数据成员n的降序数,并存到数据成员m中。 void print():按输入/输出示例格式输出原整数及其降序数。 (3)在主函数中对该类进行测试。
任务七:试定义一个类NUM,实现求大于整数m的最小的k个自反数。 具体要求如下: (1)私有数据成员 int *p:p指向用于储存满足条件的k个自反数的动态数组。 int m,k: (2)公有成员函数 NUM(int t1,int t2):构造函数,用参数t1、t2分别初始化m、k,并为p分配相应的存储空间。 Int isinv(int n):判断整数n是否为自反数,如果是,则返回1,否则返回0. void fun():根据题意将求的的自反数按从小到大的顺序存放到p所指向的动态数组中。要求利用成员函数isinv()来判断某个整数是否为自反数。 void print():按输出示例格式输出满足条件的自反数。 ~NUM():析构函数,释放动态内存。 (3)在主函数中对该类进行测试。 任务八:。试定义一个类Num,其功能是求出1000以内满足所有下列条件的整数:(1)该整数是一个素数,(2)其各位数字之和和它的平方数的各位数字之和相等。 具体要求如下: (1)私有数据成员 Int a[20];;存放结果。 Int count;结果数组的元素个数。 (2)公有成员函数 Num();构造函数。设置count的初始值为0。 int prime(int x);判断参数x是否为素数,如果是返回1,否则返回0。 int digitsum(int x);计算参数x的各位数字之和,并返回计算的结果。 void fun();找出1000以内所有满足条件的数,并存放到数组a中,同时计数。 void print();按输出示例格式输出所有满足条件的数。 (3)在主函数中完成对该类的测试。 二、系统设计
任务一 1. 任务(系统)分析 通过类STRING的成员函数process()将s1,s2中的字符赋给str1,str2。
类的定义如下: class STRING{ private: char str1[80]; char str2[40]; public: STRING(char*s1,char*s2){ strcpy(str1,s1); strcpy(str2,s2); } 2. 算法设计 (1)求字符串的长度 (2)遍历两个字符串的所有元素,将str2中的元素插入str1,同时i累加 3. 系统测试 在主函数中以整数初始化STRING的对象,并调用其成员函数print()输出 测试结果(字符串str1)。主函数定义如下: void main(){ char s1[]="abcde"; char s2[]="ABCDE"; STRING test(s1,s2); test.process(); test.print(); } 用以测试的字符串为: ABCDE abcde 预期的输出结果为: 字符串为: aAbBcCdDeE
任务二 1. 任务(系统)分析 通过类STRING将s1,s2中的字符赋给str1,str2.。类的定义如下: class STRING { char str1[60]; char str2[40]; char str3[100]; public:
STRING(char*s1,char*s2) { strcpy(str1,s1); strcpy(str2,s2); }
2. 算法设计 比较两个字符串的长度,使得str1字符串中的字符数量比str2中的多,遍历
str2中的字符,利用自增使得字符依次插入。 3.系统测试 在主函数中以整数初始化STRING的对象,并调用其成员函数print()输出
测试结果(字符串str1)。主函数定义如下: void main() { STRING test ("ABCDEFG","abcde"); test.process(); test.print(); } 用以测试的字符串为: ABCDEFG abcde 预期的输出结果为: 字符串为: aAbBcCdDeEFG
任务三 1. 任务(系统)分析 通过NUM()函数进行赋值;通过process()函数统计每个数字出现的次数;通过print()函数输出结果。 类的描述与定义 class NUM { int data[25]; int num[10]; public: NUM(int data1[]) { for (int i=0;i<25;i++) { data[i]=data1[i]; num[i]=0; } }
2. 算法设计 int num[10]储存每个数字出现的个数,void process()来统计数组data中每个数字出现的个数,并保存到数组num中。 3. 系统测试 主函数定义如下: void main() { int data[25]={ 0,2,1,1,3,6,5,2,4,9,8,6,0,4,8,7,4,1,2,3,5,1,0,8,9}; NUM test(data); test.process(); test.print(); }
任务四