版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VC+程序设计课程实践指导第1章 课程实践概述1.1 VC+课程实践的性质与目的“VC+课程实践”是在学习了“VC+程序设计”课程后进行的实践教学环节,该环节为学生提供一个既动手又动脑,独立实践的机会,使学生将课本上的理论知识和实践有机的结合起来,有利于巩固、提高和融合所学的课程知识,提高学生运用所学知识解决实际问题的能力。主要目的如下:1进一步培养学生程序设计的思想,加深对VC+语言要素和控制结构的理解。 2针对VC+中的重点和难点内容进行训练,强调好的程序设计风格。3进一步熟悉VC+的编程技巧和上机调试程序的方法。4掌握程序设计的常用算法。1.2 VC+课程实践的要求学生必须仔细阅读本程序
2、设计实践指导书,认真主动完成程序设计实践的要求。要发挥自主学习的能力,充分利用时间,制订好程序设计实践的时间计划,并在程序设计实践过程中不断检测自己的计划完成情况。根据系统的功能要求,学生必须在教师的指导下认真完成应用程序的设计。具体要求如下:1系统功能模块分析、控制模块分析正确;2系统设计要实用;3编程简练、功能全面;4说明书、流程图要清楚。1.3 VC+课程实践的选题原则 题目可从第4章中选择,创新性题目可只选择1题,仅选提高题应不少于3题,仅选基础题应不少于6题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定)。对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项目分工说
3、明。1.4 VC+课程实践的基本步骤课程实践是一个从分析到设计,再到总结的过程,具体工作可按如下步骤依次进行:1确定问题要求,充分分析和理解问题本身,给出解决方案框架。2在确定解决方案框架过程中,考虑怎样使程序结构清晰、合理、简单和易于调试,并确定每个函数的简单功能,以及函数之间的调用关系。3详细设计和编码。确定算法的主要流程,在此基础上进行代码设计。 4上机前编写程序与检查。可用2种方法检查程序,来有效提高调试效率,减少上机调试程序时的无谓错误。方法一,用一组测试数据手工执行程序;方法二,通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑,将程序中的明显错误事先排除。5上机调试程序。6完
4、成课程实践报告。1.5 时间及地点安排 本课程实践按照教学要求在1周(按5天计算)内完成,每天至少上机3-4小时进行程序调试,总上机调试时间不少于15个小时。题目布置后,所有同学应提前开始查找资料,作好准备。具体时间安排如下:1分析设计准备阶段(前一周周六、周日);2编程调试阶段(周一周四);3总结及书写课程实践报告阶段(周五);4检查验收阶段(时间由指导老师确定)。 验收地点:机房。1.6 组织管理 良好的组织是课程实践质量的重要保证,在课程实践期间的主要组织工作安排如下:1每人独立完成所选任务,创新性题目可23人组成小组,自由组合,小组应指定一名组长。2由班长负责考勤。 3指导教师负责指导
5、学生。1.7 考核评价 根据学生完成情况,结合所选题目的难度及分析解决问题的能力和创新精神,确定成绩等级。考核标准包括:1所设计程序的正确性、通用性,全面完成题目的要求(60%);2课程实践报告(20%):包括系统设计要求,设计思路,系统功能模块图,系统流程图,类的层次图(包括类成员列表),调试过程,关键程序代码,程序设计实践总结,参考书目等。最后附源程序代码。不符合以上要求者,则本次实践以不及格记;3平时考勤(20%)。 提交材料包括:1源程序。按照程序设计课程实践的具体要求所开发的所有源程序;2程序的说明文件(保存在.txt中)。在说明文档中应该写明上交程序所在的目录,上交程序的主程序文件
6、名,如果需要安装,要有程序的安装使用说明;3课程实践报告。保存在word 文档中,文件名要求按照“姓名-学号-实践报告”起名,如文件名为“张三-实践报告.doc” 。注:(1)程序及报告提交电子稿,发送至指导老师的邮箱(由教师提供)中;(2)报告除需提交电子稿外,必须每人另提交一份打印件。 第4章 课程实践示例4.1基础题示例1任务建立一个类Integer_String,把一个正整数转换为字符串。具体要求如下:(1)私有数据成员l int num:要转换的正整数。l char *s:用动态空间存储转换得到的字符串。(2)公有成员函数l Integer_String(int n):用参数n初始化
7、数据成员num。l int f():求数据成员num的位数。l void fun():把正整数num转换为字符串s。l void show():输出数据成员num和s;l Integer_String():释放动态空间。(3)在主函数中对定义的类进行测试。用正整数12345初始化类Integer_String的对象test,调用相关成员函数后输出转换结果。2系统设计(1)任务分析通过类Integer_String的成员函数f()求出数据成员num的位数,并以此为依据给数据成员s分配大小适当的动态空间,在成员函数fun()中依次取出num的各位数字并转换成对应字符后存入数据成员s,程序结束前释放
8、为s分配的动态空间。类的定义如下:class Integer_Stringint num;char *s;public:Integer_String(int);int f();void fun();void show();Integer_String();(2)算法设计l 求整数num(设num为正整数)的位数定义变量d(初值为1)表示num(n)的位数,以n10作为循环条件,每循环一次d的值增加一位,n去掉一位(n/=10),循环结束后d的值就是n的位数。为保持num的值不变,把其赋给变量n,通过n求num的位数。l 把整数num转换为字符串s取出num(n)的个位并转换为字符,然后赋给s的
9、首字符(char *p=s):*p=n%10+0;去掉n的个位:n/=10;p指向s的下一位:p+;重复步直至n=0(循环条件为:n!=0,即n); 给字符串s添加结束标记,并指向最后一个字符:*p-=0;把字符串s逆序:使p1指向s的首字符:char *p1=s,交换*p1和*p,然后p1指向后一个字符、p指向前一个字符:p1+,p-;直到p1和p相遇(循环条件为:p1p)。3系统测试在主函数中以整数初始化Integer_String的对象,并调用其成员函数show()输出测试结果(整数num和字符串s)。主函数定义如下:void main()Integer_String test=1234
10、5;test.fun();test.show();用以测试的整数为: 12345 预期的输出结果为: 整数为:12345字符串为:123454源程序清单#includeclass Integer_Stringint num;char *s;public:Integer_String(int n)num=n;int f()int d=1,n=num;while(n10)d+;n/=10;return d;void fun()int n=num,len=f();s=new charlen+1;for(char *p=s,*p1=s;n;p+)*p=n%10+0;n/=10;*p-=0;while(
11、p1p)n=*p1,*p1=*p,*p=n;p1+,p-;void show()cout整数为:numendl;cout字符串为:sendl;Integer_String()delete s;void main()Integer_String test=12345;test.fun();test.show();第5章 课程实践题选5.1基础题1试建立一个类PP,求出下列多项式的前n项的值。 具体要求如下:(1)私有数据成员l int n:前若干项的项数。l double x:存放x的值。l double *p:根据n的大小动态申请存放Pn(x) 前n项的数组空间。(2)公有成员函数l PP(i
12、nt num,double x1):构造函数,初始化数据成员n和x,使p指向动态申请的数组空间。l PP():析构函数,释放p指向的动态内存空间。l double fun(int n1,double x):递归函数,用于求多项式的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。l void process( ):完成求前n项的工作,并将它们存放到p指向的动态数组中。l void show( ):输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3) 在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化item
13、s的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。2试建立一个类SP,求,另有辅助函数power(m,n)用于求。具体要求如下:(1)私有成员数据。l int n,k:存放公式中n和k的值;(2)公有成员函数。l SP(int n1,int k1):构造函数,初始化成员数据n和k。l int power(int m, int n):求mn。l int fun( ):求公式的累加和。l void show( ):输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。3建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右
14、边。具体要求如下:(1)私有数据成员l float array20:一维整型数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(float b,int m):构造函数,初始化成员数据。l void average():输出平均值,并将数组中的元素按要求重新放置。l void print():输出一维数组。(3)在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试。4建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有数据成员l int *array:一维整型数组。l int n:数组中元素的个数。(
15、2)公有成员函数l MOVE(int b,int m):构造函数,初始化成员数据。l void exchange():输出平均值,并将数组中的元素按要求重新放置。l void print():输出一维数组。l MOVE():析构函数。(3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。5定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员 l int n:整型数字。l int y: 标记是否为回文数。(2)公有成员函数l
16、Palindrome (int x) :构造函数,根据x参数初始化数据成员n,y初始化为0。l void huiwen () :判断数n是否为绝对回文数。l void show( ) :若该数为回文数,则在屏幕显示。 (3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。6定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“”是回文字符串。具体要求如下: (1)私有数据成员 l char *str; l int y:标记是否为回文字符串。 (2)公有成员函数l Stri
17、ng (char *s) :构造函数,用给定的参数s初始化数据成员str。y初始化为0。l void huiwen () :判断str所指向的字符串是否为回文字符串。l void show( ) :在屏幕上显示字符串。 (3)在主程序中定义字符串char s=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。7建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。1 2 5 104 3 6 119 8 7 1216 15 14
18、131 2 4 3 1具体要求如下:(1)私有数据成员l int (*p)20:指向按照折叠规律存放方阵的二维整型数组。l int startnum:折叠方阵的起始数。l int n:存放方针的层数。(2)公有成员函数l PHALANX (int s, int m ):构造函数,初始化成员数据。l void process():生成起始数为startnum的n行方阵。l void print():输出折叠方阵。l PHALANX( ):析构函数。(3)在主程序中对该类进行测试。8建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,
19、按顺时针方向从外向里旋转填数而成。1 2 3 4 5 16 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9具体要求如下:(1)私有数据成员l int a20 20:二维整型数组存放螺旋方阵。l int startnum:螺旋方阵的起始数。l int n:存放方针的层数。(2)公有成员函数l MATRIX (int s, int m ):构造函数,初始化成员数据startnum和n。l void process():生成起始数为startnum的n行螺旋方阵。l void print():输出螺旋方阵。(3)在主程序中定义MATRIX类的对象t
20、对该类进行测试。9定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。具体要求如下: (1)私有数据成员 l char *str:指向要统计的字符串。l char (*p)2:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。l int size:存放字符串中出现的所有不同的字符的个数。 (2)公有成员函数l CString (char *s) :根据s参数初始化数据成员str;p和size初始值为0。l void Count():p根
21、据s所指字符串长度分配空间。然后把str所指字符串中的每个字符放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:可以借助临时数组或指针来实现)。l void Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。l CString():释放动态分配的空间。 (3)在主程序中定义字符串char s=”abdabcdesffffd”。定义一个CString类对象test,用s以初始化test,完成对该类的测试。10定义一个字符串类CString
22、,并设计一个算法实现,给定关键字str1在字符串str中出现时用关键字str2进行替换的功能。具体要求如下: (1)私有数据成员 l char *str; 原始字符串。l char *str1; 目标关键字。l char *str2; 替换关键字。l int flag; 标记替换是否完成替换。 (2)公有成员函数l CString (char *s,char s1 ,char *s2) :用给定的参数s、s1和s2相对应的初始化数据成员str、str1和str2。flag设置缺省0。l void Replace () :判断str字符串中是否出现str1,若出现就用str2替换,否则什么都不做
23、。若替换成功了标记flag为1,若替换不成功则标记flag为0。l void Show( ) :若替换成功,则在屏幕上显示目标关键字、替换关键字和替换后的原始字符串;若不成功则显示原始字符串。l CString() :释放动态分配的空间。 (3) 在主程序中定义字符串char s=”I am student, you are student too, we are all student.”作为原始字符串,定义char s1=” student”作为目标关键字,定义char s2=”teacher”作为替换关键字。定义一个CString类对象test,用s,s1和s2初始化test,完成对该类
24、的测试。11建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。具体要求如下:(1)私有数据成员l char str180 :存放被插入的字符串。l char str240 :存放待插入的字符串。(2)公有成员函数l STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。l void process():将str2中的字符串插入到str1中。l void print():输出插入后的字符串。(3)在主
25、程序中定义STRING类的对象test对该类进行测试。12建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。例如将字符串“abcde” 交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。具体要求如下:(1)私有数据成员l char str160 :存放被插入的字符串。l char str240 :存放待插入的字符串。l char str3100 :存放插入后的字符串。(2)公有成员函数l STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。l void pro
26、cess():将str2中的字符串插入到str1中,存放到str3中。l void print():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。13建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。具体要求如下:(1)私有数据成员l int array20:一维整型数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(int b,int m):构造函数,初始化成员数据。l void change():进行循环换位。l void print():输出一维数组。(3)在主程序中用数据21,65,43,
27、87,12,84,44,97,32,55对该类进行测试。14建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。具体要求如下:(1)私有数据成员l char *array:一维字符数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(char b,int m):构造函数,初始化成员数据。l void change():进行排序换位。l void print():输出一维数组。l MOVE():析构函数。(3)在主程序中用数据fdsUFfsTjfsKFEkWC对该类进行测试。15定义一个一维数组类Carray,并根据给定算法实现对原始一维数组进行线性变换。这里给
28、定的线性变换算法为:T(bx) = bT(x) + i; 其中,b为变换常量,x为变量,i为当前类中成员数组的下标值。根据该算法,原始数组在变化后,当前数组元素的值是由常量b和i下标来决定的。具体要求如下: (1)私有数据成员 l int *a:指针a指向一个动态分配的原始数组。l int n:n表示该数组的大小。l int b:线性变换的常量。 (2)公有成员函数l Carray (int a ,int n,int x) :用给定的参数a、n和x初始化数据成员a、n和b。缺省都设置为0。l void Transform () :根据上述变化算法,求解数组变换。l void Show( ) :
29、在屏幕上显示数组元素。l Carray () :释放动态分配的空间。 (3)在主程序中定义数组int arr =1,2,3,4,5,6,7,8,9,10作为原始数组,int b;由键盘输入,作为线性变换的常量。定义一个Carray类对象test,用arr初始化test,完成对该类的测试。16定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为:F=W*fTf为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 具体要求如下: (1)私有数据成员 l int (*a)4:a指向方阵数组。l int w
30、44:w为变换矩阵。l int m:m表示方阵的行和列数。 (2)公有成员函数l CMatrix (int a4,int m) :用给定的参数a和m 初始化数据成员a和m;对变换矩阵w进行初始化,要求必须用循环实现。l void Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内。l void show( ) :在屏幕上显示数组元素。l CMatrix () :释放动态分配的空间。(3)在主程序中定义数组int arr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个CMatrix类对象test,用arr初始
31、化test,完成对该类的测试。17定义一个类SIN,求 具体要求如下:(1)私有成员数据。l int x:输入公式中x的值,求sin(x)。l int n:输入公式中n的值。(2)公有成员函数。l SIN(int x, int n ):构造函数,用于初始化x和n的值。l int power( int q):求q!的值。l int mi( int m,int n):求的值。l int fun( ):用于求SIN(X)的值。l void show( ):输出求得的结果。(3)在主程序中定义对象test,对该类进行测试。18试建立一个类VAR,用于求n()个数的均方差。均方差的计算公式为,其中平均值
32、为。具体要求如下:(1)私有成员数据。l double a100:用于存放输入的n个数。l int n:实际输入数的个数n。(2)公有成员函数。l VAR(double x, int n1):构造函数,初始化成员数据a和个数n。l double average(double x, int n):求平均值,数组x具有n个元素。l void variance(double x,int n):求均方差,数组x具有n个元素。l void show():输出求得的均方差。(3)在主程序中定义一个对象test,对该类进行测试。19定义一个方阵类Array,实现对方阵进行顺时针90度旋转。如图所示。1395
33、1141062151173161284123 45678910111213141516具体要求如下: (1)私有数据成员 l int a44:用于存放方阵。 (2)公有成员函数l Array (int a14,int n) :构造函数,用给定的参数a1初始化数据成员a。l void xuanzhuan ( ) :实现对方阵a进行顺时针90度的旋转。l void show( ) :在屏幕上显示数组元素。 (3) 在主程序中定义数组int b 4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该
34、类的测试。20定义一个方阵类Array,实现对方阵进行逆时针90度旋转。如图所示。 1 2 3 4 4 8 12 16 5 6 7 8 3 7 11 15 9 10 11 12 2 6 10 14 13 14 15 16 1 5 9 13具体要求如下: (1)私有数据成员 l int a44:用于存放方阵。 (2)公有成员函数l Array (int a14,int n) :构造函数,用给定的参数a1初始化数据成员a。l void xuanzhuan ( ) :实现对方阵a进行逆时针90度的旋转。l void show( ) :在屏幕上显示数组元素。(3) 在主程序中定义数组int b 4=1
35、,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。21建立一个类NUM,求指定数据范围内的所有合数(非质数)。提示:合数定义是“一个数,除了1和它本身,还有其它约数,这样的数叫合数”。具体要求如下:(1)私有数据成员l int *data:动态存放在指定范围内求出的所有合数。l int span1,span2:存放指定范围的下限和上限。l int num:存放span1与span2之间的合数个数。(2)公有成员函数l NUM(int n1, int n2) :构造函数,用参数n1和n2
36、初始化span1和span2,同时初始化num。l int isComposite (int x ):判断x是否为合数。若是合数,返回1,否则,返回0。l void process( ) :求指定范围内的所有合数,把它们依次存放在数组data中,并将求出的合数个数赋给num。 l void print( ):输出求出的素数个数及所有合数,每行输出8个合数。l NUM( ):释放动态分配的存储空间。(3) 在主函数中完成对该类的测试。定义一个NUM类对象test,指定查找范围为100200,即求100至200之间的所有合数。通过test调用成员函数完成求合数及输出合数的工作。22建立一个类Sad
37、dle_point,求一个数组中的所有鞍点。提示:鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。具体要求如下:(1)私有数据成员l int a44:存放二维数组元素。l int b44:存放二维数组中的鞍点值。l int num:存放鞍点个数。(2)公有成员函数l Saddle_point(int data4):构造函数,用参数int data4初始化数组a,,同时初始化数组b与num 的值均为0。l void process( ):求数组a所有鞍点(如果有鞍点),把它们行、列、及值相应存放在数组b中,并将求出的鞍点个数赋给num。 l void print( ):输出数组
38、a、鞍点个数,与鞍点坐标及相应值。(3)在主程序中定义数组int b 4=2, 6, 3, 4, 5, 6, 5, 5, 5, 7, 6, 7, 1, 9, 2, 7作为原始数组。定义一个Saddle_point类对象fun。通过fun调用成员函数完成求鞍点及输出工作。23分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为:将m、n较小的一个数
39、赋给变量k,然后分别用 k,k-1,k-2,1中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。具体要求如下:(1)私有数据成员l int num,den :num为分子,den为分母。(2)公有成员函数l Fract(int a=0,int b=1):构造函数,用a和b分别初始化分子num、分母den。l int ged(int m,int n):求m、n的最大公约数。此函数供成员add()函数调用。l Fract add(Fract f):将参数分数
40、f与对象自身相加,返回约简后的分数对象。l void show( ):按照num/den的形式在屏幕上显示分数。(3)在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。24建立一个类NUM,并统计特定序列中相同的数字的个数。具体要求如下:(1)私有数据成员l int data25:随机生成25个在0-9之间的数字。l int num10:储存每个数字出现的个数。(2)公有数据成员l NUM(int data):构造函数,初始化数组data。l void process( ):统计数组d
41、ata中每个数字出现的个数,并保存到数组num中。 l void print( ):输出每个数字出现的个数,每行输出5个 (3)在主程序中定义一个对象,对该类进行测试。25建立一个类NUM,并统计特定序列中相同的字符的个数。具体要求如下:(1)私有数据成员l char data25:随机生成25个字符。l int num128:储存每个字符出现的个数。(2)公有数据成员l NUM(int data):构造函数,同时初始化数组data。l void process( ):统计数组data中每个字符出现的个数,并保存到数组num中。 l void print( ):输出每个出现过的字符及其出现的个
42、数,每行输出5个,没有出现过的字符不显示。(3)在主程序中定义一个对象,对该类进行测试。26建立一个类NUM,随机生成25个字符序列,并为特定序列进行排序。具体要求如下:(1)私有数据成员l int data25:随机生成25个字符。(2)公有数据成员l NUM(int data):构造函数,初始化数组data。l void process( ):为数组data进行排序,要求按照ASCII码进行升序排列。l void print( ):输出数组data,每行输出5个字符。(3)在主程序中定义一个对象,对该类进行测试。27建立一个类NUM,求指定数据范围内的所有素数(质数)。提示:素数定义是“只
43、能被1和它本身整除的整数”,即质数。具体要求如下:(1)私有数据成员l int data10:依次存放原始数据。l int prime10:存放指定数据内所求出的所有素数。l int num:存放素数个数。(2)公有数据成员l NUM(int n ):构造函数,用参数n初始化data,同时初始化num为0。l int isprime (int x ):判断x是否为素数。若是素数,返回1,否则,返回0。l void process( ):求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num。 l void print( ):输出求出的素数个数及所有素数,
44、每行输出4个素数。(3)在主函数中完成对该类的测试。定义NUM类对象test,通过test调用成员函数完成求素数及输出素数的工作。原始数据为4, 5, 9, 11, 36, 29, 31, 101, 56, 199。28编程实现对大于1的整数进行质因数分解,并求出其和。所谓整数的质因子分解是指将整数分解为其所有质数(素数)因数的积,例如,60=2*2*3*5,则整数60的质因数之和为12。定义一个类Decompose实现上述功能。具体要求如下:(1)私有数据成员l int *a:指向存放对应整数的质因数之和的动态存储空间。l int *num:指向待分解质因数整数的动态存储空间。l int n
45、:整数的个数。(2)公有数据成员l Decompose(int m,int b ): 用m初始化n,并用n初始化为动态申请空间的指针a与num。用参数b给数组a赋值。l void print( ):输出数组a以及num所指向的存储空间中的内容。l void primenum( ):求整数ai的所有质因数(保留重复部分,例如60的质因数为 2,2,3,5,之和为12),并将这些质因数之和存放到指针num所指向的存储空间中。l Decompose( ):释放动态分配的存储空间。(3)在主函数中完成对该类的测试。从键盘输入一组大于1的整数,存放在number数组中,定义类Decompose的对象d
46、,并用 number初始化d ,调用函数primenum( ) 求number 的所有质因数,最后输出测试结果。29建立一个类SUM,输入55的二维数组,编写程序实现:求出两对角线上各元素的和,求出对角线上行、列下标均为偶数的各元素的积,找出对角线上其值最大的元素以及它在数组中的位置。具体要求如下:(1)私有数据成员l int array55:二维整型数组。l int s:数组array两对角线元素的和。l int a:数组array对角线上行、列下标均为偶数的各元素的积l int b,m,n:数组array对角线上其值最大的元素以及它在数组中的位置。(2)公有成员函数l SUM(int d5
47、5):构造函数,初始化成员数据。l void process1():求二维数组两对角线元素的和。l void process2():求二维数组两对角线上行、列下标均为偶数的各元素的积。l void process3():求二维数组两对角线上其值最大的元素和它在数组中的位置。l void print():输出二维数组(每行输出5个元素)及其它所求的值。(3)在主程序中对该类进行测试。30建立一个矩阵类Array,对二维数组中左下三角的全部元素(包括对角线上的元素)作如下变换:(1)若该数不是素数则保持不变;(2)若该数是素数,则用大于它的最小素数替换该数。并统计二维数组中左下三角的全部元素(包括
48、对角线上的元素)中的素数个数。具体要求如下:(1)私有数据成员l int x44:存储需要处理的二维数组的各元素值。l int count:存储左下三角元素中素数的个数。(2)公有成员函数l 构造函数:进行初始化x数组和count的值。l int fun(int);判断一个数是否为素数的函数。l int encode( ):对x数组中左下三角的全部元素(包括对角线上的元素)逐一进行判断,若该数不是素数则保持不变,若该数是素数,则用大于它的最小素数替换该数。l void print():按行输出矩阵的值。(3)编写一个程序测试该类,说明(声明)Array对象A,将一个矩阵存入对象A中,并输出矩阵
49、的值,使用以下测试数据:3 6 4 17 5 6 4 178 5 9 10 变换后的矩阵为 8 7 9 1012 19 7 20 12 23 11 204 14 21 23 4 14 21 29 31建立一个类SUM,实现m行k列矩阵与k行n列矩阵的乘积。设A为m行k列的矩阵,B为k行n列的矩阵,则C=AB。具体要求如下:const int m=3;const int k=4;const int n=3;(1)私有数据成员l int Amk:存放m行k列矩阵。l int Bkn:存放k行n列矩阵l int (*C)n:指向乘积矩阵(2)公有成员函数l 构造函数:初始化成员数据。l 析构函数:收
50、回行指针。l void process():求矩阵的乘积。l void print():输出各二维数组(按行列形式)。(3)在主程序中对该类进行测试。32建立一个类SUM,使用二维数组输入“Follow me”,“BASIC”,“Great wall”,“Fortran”,“Pascal”,将它们按从小到大的顺序排列后输出。具体要求如下:(1)私有数据成员l int *p5:存放二维数组每行的字符串的地址。(2)公有成员函数l SUM(int d55):构造函数,初始化成员数据。l void process1():对二维数组中存放的字符串进行排序。l void print():输出二维数组中排
51、好序的字符串。(3)在主程序中对该类进行测试。33建立一个类Integer_String,把一个正整数转换为字符串。具体要求如下:(1)私有数据成员l int num:要转换的正整数。l char *s:用动态空间存储转换得到的字符串。(2)公有成员函数l Integer_String(int n):用参数n初始化数据成员num。l int f():求数据成员num的位数。l void fun():把正整数num转换为字符串s。l void show():输出数据成员num和s;l Integer_String():释放动态空间。(3)在主函数中对定义的类进行测试。用正整数12345初始化类I
52、nteger_String的对象test,调用相关成员函数后输出转换结果。34建立一个类String_Integer,把一个字符串中的数字字符转换为正整数。具体要求如下:(1)私有数据成员l char *s:用动态空间存放字符串。(2)公有成员函数l String_Integer(char *str):用参数str初始化数据成员s。l operator int():转换函数,数据成员s转换整数并返回该数。l void show():输出数据成员s。l String_Integer():释放动态空间。(3)在主函数中对定义的类进行测试。定义字符数组,把由键盘输入的字符串“ab12 3c00d45
53、ef”存入数组,并用该数组初始化类String_Integer的对象test,调用show函数输出test的数据成员s,然后把对象test赋值给整型变量n并输出,转换结果如下所示(下划线部分是从键盘输入的内容):请输入字符串ab12 3c00d45ef :ab12 3c00d45ef字符串为:ab12 3c00d45ef转换得到的整数为:35建立一个类Union求两个整数集合的并集。具体要求如下:(1)私有数据成员l int *set1,len1:用动态空间set1存储集合1,len1表示其元素的个数。l int *set2,len2:用动态空间set2存储集合2,len2表示其元素的个数。l int set20,len:用数组空间set存储并集,len
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生人际交往技巧小学主题班会课件
- 商洽调整样品交付时间函4篇范文
- 2026恒丰银行郑州分行社会招聘7人笔试备考试题及答案详解
- 2026上海青浦区卫生健康系统卫生类专业技术人员招聘(第三轮)考试备考试题及答案详解
- 2026年白银市白银区事业编单位人员招聘笔试参考试题及答案详解
- 2026年赤峰市元宝山区网格员招聘考试备考题库及答案详解
- 职业技能鉴定《高级动物检疫检验员》从业资格证考试题库(附含答案)
- 2026吐鲁番市高昌区林业和草原局招聘第二批国家级公益林管护人员(2人)笔试备考试题及答案详解
- 2025年吕梁地区孝义市网格员招聘考试试题及答案详解
- 抚州市卫生健康系统2026年公开招聘高素质人才笔试参考题库及答案详解
- 乳糜漏课件教学课件
- (2025)公开选拔科级领导干部考试笔试试题和答案
- 电子元器件选型规范
- 企业法人的特别离职证明(6篇)
- 电子化学品系列报告之四:湿电子化学品高端产品国产进程有望加速
- T-CAZG 010-2022 动物园鸟类人工孵化和育雏技术规范
- 顺丰SHL在线测评题库
- 校园保安服务投标方案
- 天津高考英语词汇3500
- 2023年四川日报报业集团招聘笔试备考试题及答案解析
- 食品工程原理-传热
评论
0/150
提交评论