江苏科技大学C课程实践报告答案_第1页
江苏科技大学C课程实践报告答案_第2页
江苏科技大学C课程实践报告答案_第3页
江苏科技大学C课程实践报告答案_第4页
江苏科技大学C课程实践报告答案_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江苏科技大学课程实践报告设计题目:程序设计(VC+)实践设计时间至学院(系):专业班级:学生姓名:学号指导老师:2013年12月任务、实践任务2,试建立一个类sp,求通-1+2+3+,另有辅助函数power(m,n)用于求网。二、详细设计1、类的描述与定义(D私有数据成员intn,k:存放公式中n和k的值;(2)公有成员函数n和k。SP(intn1,intk1):构造函数,初始化成员数据intpower(intm,intn):求fun():求公式的累加和。voidshow():输出求得的结果。2、主要函数设计在主程序中定义对象s,对该类进行测试。三、源程序清单#includecla

2、ssSPintn,k;public:SP(intn1,intk1)n=n1;k=k1;intpower(intm,intn)intp=1;for(inti=1;in+1;i+)p*=m;returnp;intfun()ints=0;for(inti=1;in+1;i+)s+=power(i,k);returns;voidA()coutn=n,k=k,f(n,k尸fun()endl;;voidmain()SPa(3,3);a.power(3,3);a.fun();a.A();四、实践小结掌握用循环语句求mAn,和m!,熟练掌握函数的调用五、运行结果任务三一、实践任务.建立一个类MOVE,不进行排

3、序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。详细设计1、类的描述与定义(1)私有数据成员floatarray20:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(floatb,intm):构造函数,初始化成员数据。voidaverage。:输出平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。2、主要函数设计在主程序中用数据1.3,6.239.1,4.874,5.6,9.2,2.3对该类进行测试。三、源程序清单四、实践小结应熟练掌握数组与指针的应用。五、运行结果京甘K+实稀业旭0虱魂_的5.43333U34.03

4、.9,16.2Pjressanykeytacontinue任务四一、实践任务.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。二、详细设计1、类的描述与定义(1)私有数据成员int*array:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb,intm):构造函数,初始化成员数据。voidexchange。:输出平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。MOVE():析构函数。2、主要函数设计在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。三、源程序清单四

5、、实践小结学会求数组中最大元素与最小元素方法,并实现交换五、运行结果一、实践任务6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321是回文字符串。二、详细设计任务六1、类的描述与定义 (1)私有数据成员char *str;int y:标记是否为回文字符串。(2)公有成员函数String (char *s):构造函数,用给定的参数s初始化数据成员str。y初始化为0。void huiwen ():判断str所指向的字符串是否为回文字符串。void show():在屏幕上显示字符串。2、主要函数设计前HK+实髓作业:口制

6、g愧4题翻日*砧 43 87 12 84 44 97 32 55序均值为54121 6s 43 8? 97 84 44 12 32 55 Press any key to continue在主程序中定义字符串chars=ababcedbalfM为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。三、源程序清单四、实践小结掌握判断回文字符串的一般形式。五、运行结果於7+IQ+亦4作业180用1鹏6强id步印.法字符串不是巨文数:nlwibc.dh.JHidoykeyptoconiinue任务十一一、实践任务.建立一个STRING,将一个字符串交叉插入到另一个字

7、符串中(假定两字符串等长)。例如将字符串“abcde”交叉插入字符串“ABCDE的结果为“aAbBcCdDeE或“AaBbCcDdEe”。二、详细设计1、类的描述与定义(1)私有数据成员charstr180:存放被插入的字符串。charstr240:存放待插入的字符串。(2)公有成员函数STRING(char*s1,char*s2):构造函数,用s1和s2初始化str1和str2。voidprocess。:将str2中的字符串插入到str1中。voidprint():输出插入后的字符串。2、主要函数设计在主程序中定义STRING类的对象test对该类进行测试。三、源程序清单#include#i

8、ncludeclassSTRINGprivate:charstr180;/存放被插入的字符串;charstr240;/存放待插入的字符串;public:STRING(char*s1,char*s2)strcpy(str1,s1);strcpy(str2,s2);voidprocess。;voidprint();voidSTRING:process()inti,j;intn=strlen(str1);if(strlen(str2)strlen(str1)/当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:abcde-abcde-空格处依次插入ABCDEFG-aAbBc

9、CdDeEFG;for(i=n-1;i0;i-)str1i+i=str1i;/被插入的字符串由最后一位开始各位向后移动i位;for(i=1,j=0;i2*n;i+=2,j+)str1i=str2j;/在空出的位置处依次插入字符串;i-;for(;jABCDEFG-空格处插入abcde-AaBbCcDdEeFG;for(i=n;istrlen(str2)-1;i-)str1i+strlen(str2)=str1i;/比待插入的字符串长的部分均向后移strlen(str2)位;for(i=strlen(str2)-1;i0;i-)str1i+i=str1i;/之前的部分均向后移i位;for(i=1

10、,j=0;i2*strlen(str2);i+=2,j+)str1i=str2j;/将待插入的字符串插入空格处,完成插入;voidSTRING:print()输出插入后的字符串cout插入后的字符串为:stnendl;voidmain()测试STRINGtest(ABCDE,abcde);cess();test.print();四、实践小结发现字符插入的规律,再依次放入相应字符位置。五、运行结果*G实注在IhDebug商口星一备入后的字符串为:由MhCcMEttres*keytocontinue.任务十二一、实践任务.建立一个STRING,将一个字符串交叉插入到另一个字符串中(

11、假定两字符串不等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG的结果为“aAbBcCdDeEFG或“AaBbCcDdEeFG。二、详细设计1、类的描述与定义(1)私有数据成员charstr160:存放被插入的字符串。charstr240:存放待插入的字符串。charstr3100:存放插入后的字符串。(2)公有成员函数STRING(char*s1,char*s2):构造函数,用si和s2初始化strl和str2。voidprocess。:将str2中的字符串插入到strl中,存放到str3中。voidprint():输出插入后的字符串。2、主要函数设计在主程序中定义STRING

12、类的对象test对该类进行测试。三、源程序清单#include#includeclassSTRINGprivate:charstr160;charstr240;charstr3100;public:STRING(char*s1,char*s2)strcpy(str1,s1);strcpy(str2,s2);voidprocess。;voidprint();voidSTRING:process()inti,j;intn=strlen(str1);if(strlen(str2)strlen(str1)/当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:abcde-abc

13、de-空格处依次插入ABCDEFG-aAbBcCdDeEFG;for(i=n-1;i0;i-)str1i+i=str1i;/被插入的字符串由最后一位开始各位向后移动i位;for(i=1,j=0;i2*n;i+=2,j+)str1i=str2j;/在空出的位置处依次插入字符串;i-;for(;jABCDEFG-空格处插入abcde-AaBbCcDdEeFG;for(i=n;istrlen(str2)-1;i-)str1i+strlen(str2)=str1i;/比待插入的字符串长的部分均向后移strlen(str2)位;for(i=strlen(str2)-1;i0;i-)str1i+i=str

14、1i;/之前的部分均向后移i位;for(i=1,j=0;i2*strlen(str2);i+=2,j+)str1i=str2j;/将待插入的字符串插入空格处,完成插入;strcpy(str3,st;将str2中的字符串插入到strl中,存放到str3中;voidSTRING:print()输出插入后的字符串cout插入后的字符串为:str3endl;voidmain()STRINGtest(abcde,ABCDEFG);cess();test.print();四、实践小结发现字符插入的规律,再依次放入相应字符位置。五、运行结果任务十三一、实践任务.建立一个类MOVE,对数组中元

15、素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。二、详细设计1、类的描述与定义(1)私有数据成员intarray20:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb,intm):构造函数,初始化成员数据。voidchange():进行循环换位。voidprint():输出一维数组。2、主要函数设计在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。三、源程序清单#includeclassMOVEprivate:intarray20;一维整型数组;intn;/数组中的元素个数;public:MOVE(intb,in

16、tm)for(inti=0;im;i+)arrayi=bi;n=m;voidchange();voidprint();voidMOVE:change()/进行循环换位,即每个元素后移3位,最后3个元素移到最前面;inttem3;/建立临时数组,用于存放最后3个元素;inti=0;while(i3)tem2-i=arrayn-1-i;将最后3个元素依次放入临时数组中;i+;for(i=0;in-3;i+)将原数组的最后一个至第4个元素依次后移3位;arrayn-1-i=arrayn-1-3-i;for(i=0;i3;i+)/将临时数组中存放的最后3个元素依次放入后移后的原数组中,完成循环换位;a

17、rrayi=temi;voidMOVE:print()/输出一维数组;for(inti=0;in;i+)coutarrayit;coutendl;voidmain()ints尸21,65,43,87,12,84,44,97,32,55;intn=sizeof(s)/sizeof(int);MOVEtest(s,n);test.print();test.change();test.print();四、实践小结利用临时数组先保存后3位,再依次把数放入对应位。五、运行结果任务十四一、实践任务.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。二、详细设计1、类的描述与定义(1)私有

18、数据成员char*array:一维字符数组。intn:数组中元素的个数。(2)公有成员函数MOVE(charb口,intm):构造函数,初始化成员数据。voidchange。:进行排序换位。voidprint():输出一维数组。MOVE():析构函数。2、主要函数设计在主程序中用数据fdsUFfsTjfsKFEkWC对该类进行测试。三、源程序清单#include#includeclassMOVEchar*array;intn;public:MOVE(charb,intm)n=m;array=newcharn+1;strcpy(array,b);voidchange()char*p1=newch

19、arstrlen(array)+1;/用于存大写;char*p2=newcharstrlen(array)+1;存小写;inti,j=0,k=0;for(i=0;i=A&arrayi=Z)p1j=arrayi;j+;elsep2k=arrayi;k+;p1j=p2k=0;strcat(p1,p2);/存放大写组与小写组拼接;strcpy(array,p1);拷贝至array;delete口p1;delete口p2;voidprint()coutarrayendl;MOVE()if(array)delete口array;;voidmain()charb=fdsUFfsTjfsKFEkWC;int

20、n;n=(sizeof(b)-1)/sizeof(char);MOVEtest(b,n);test.change();test.print();四、实践小结利用临时数组,分别保存大写与小写字母,再实现功能。五、运行结果I*-“6:。+*实前例0吐明81曙.W”.一UFTKFEWCfdafsjfskPressanykeytocontinue任务十五一、实践任务16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为:F=W*fTf为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为1001101001oioiio二、详细设计1、类的描述与定义(1)私有数据成员

21、int(*a)4:a指向方阵数组。intw44:w为变换矩阵。intm:m表示方阵的行和列数。(2)公有成员函数CMatrix(inta口4,intm):用给定的参数a和m初始化数据成员a和m;对变换矩阵w进行初始化,要求必须用循环实现。voidTransform():根据上述变换算法,求出变换后的数组形式,存放在原始数组内。voidshow():在屏幕上显示数组元素。CMatrix():释放动态分配的空间。2、主要函数设计在主程序中定义数组intarr口4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个CMatrix类对象test,用arr

22、初始化test,完成对该类的测试。三、源程序清单#includeclassCMatrixprivate:int(*a)4;intw44;/变换矩阵intm;/表示方阵的行和列数;public:CMatrix(inta口4,intm)inti,j;this-a=newintm4;this-m=m;for(i=0;i4;i+)for(j=0;j4;j+)if(i=j|i+j=4-1)w皿=1;elsew皿=0;for(i=0;im;i+)for(j=0;jaij=aij;voidTransform。;voidshow();CMatrix()if(a)delete口a;voidCMatrix:Tra

23、nsform()/根据变换算法,求出变换后的数组形式,存放在原始数组内;inti,j,k;for(i=0;im;i+)求原始矩阵的转置,并存放在原始数组中;for(j=i;j4;j+)k=aij,aij=aji,aji=k;intsum;/用来存放矩阵乘法中,行列中元素依次相乘的累加和;intturn44;/临时数组,用来存放矩阵乘法所求得的值;for(i=0;i4;i+)实现矩阵的乘法;for(j=0;j4;j+)sum=0;for(k=0;k4;k+)sum+=wik*akj;turnij=sum;for(i=0;i4;i+)将临时数组的值存放入原始数组中;for(j=0;j4;j+)ai

24、j=turnij;voidCMatrix:show()/在屏幕上显示数组元素;for(inti=0;im;i+)for(intj=0;j4;j+)coutaijt;coutendl;voidmain()intarr4=1,2,345,678,9,10,11,12,13,14,15,16;CMatrixtest(arr,4);cout原矩B车为:endl;test.show();test.Transform();cout经线性变换后的矩阵为:endl;test.show();四、实践小结应熟练掌握矩阵的乘法方式。五、运行结果任务十六、实践任务17定义个类SIN,求皿务4-内珈3%门加_+,吗尸心

25、川、详细设计1、类的描述与定义(1)私有数据成员floatx:输入公式中x的值,求sin(x)。intn:输入公式中n的值。(2)公有成员函数SIN(floatx,intn):构造函数,用于初始化x和n的值。intpower(intq):求q!的值。floatmi(floatm,intn):求用的值。floatfun():用于求SIN(X)的值。voidshow():输出求得的结果。2、主要函数设计在主程序中定义对象test,对该类进行测试(x是弧度,弧度不可能大于1)。三、源程序清单#include#includeclassSINprivate:doublex;intn;public:SIN

26、(doublex,intn)this-x=x;this-n=n;doublepower(intq);doublemi(doublem,intn);doublefun();voidshow();doubleSIN:power(intq)/求q的阶乘;doubles=1;while(q!=1)s*=q;q-;returns;doubleSIN:mi(doublem,intn)求mM的值;while(n!=1)m*=m;n-;returnm;doubleSIN:fun()/用于求sin(x)的值;注:当n较大时,阶乘和哥的运算可能超出变量的类型的字节大小!改用double类型可提高运算的范围!dou

27、bles=0;/记录每项相加的和for(inti=1;i=n;i+)s+=mi(x,2*i-1)*mi(-1,i+1)/power(2*i-1);通项为(-1F(i+1)*xA(2*i-1)/(2*i-1)!,其中n为由1开始的奇数;returns;voidSIN:show()/输出求得结果;coutsin(x)=fun()endl;voidmain()intdegree,doublehudu;coutdegreen;hudu=degree%360*(3.1415926)/180.0;度数转换为弧度;SINtest(hudu,n);test.show();四、实践小结找到公式中的相关关系,再进

28、行相应函数的组合。五、运行结果噎轴).度古雨,的医箱泉in0.523599)=0.536126iessnyKeytocontinue任务十七一、实践任务18.试建立一个类VAR,用于求n(JI4100)个数的均方差。均方差的计算公式为wn,其中平均值为冗。、详细设计1、类的描述与定义(1)私有数据成员doublea100:用于存放输入的n个数。intn:实际输入数的个数n。(2)公有成员函数VAR(doublex口,intn1):构造函数,初始化成员数据a和个数n。doubleaverage(doublex口,intn):求平均值,数组x具有n个元素。voidvariance(doublex,

29、intn):求均方差,数组x具有n个元素。voidshow():输出求得的均方差。2、主要函数设计在主程序中定义一个对象test,对该类进行测试。三、源程序清单#includeclassVARprivate:doublea100;/用于存放输入的n个数;intn;实际输入数的个数n;public:VAR(doublex口,intn1)for(inti=0;in1;i+)ai=xi;n=n1;doubleaverage(doublex,intn);doublevariance(doublex,intn);voidshow();doubleVAR:average(doublex口,intn)求平均

30、值,数组x具有n个元素;doubleave=0;for(inti=0;in;i+)ave+=xi;returnave/n;doubleVAR:variance(doublex,intn)求均方差,数组x具有n个元素;doubled=0;for(inti=0;in;i+)d+=(xi-average(x,n)*(xi卜average(x,n);d/=n;returnd;voidVAR:show()输出求得的均方差;cout均方差为:variance(a,n)endl;voidmain()测试;doubles尸1,2,3,4,5,6,7,8,9,10;intn=sizeof(s)/sizeof(d

31、ouble);VARtest(s,n);couttest.average(s,n)endl;test.show();四、实践小结理解算数公式,根据题目线索,完成五、运行结果IGrVC*Debug;黄1g螯,何色妨差为:入25Presskeytocontinue.任务十八、实践任务、详细设计1、类的描述与定义(1)私有数据成员inta44:用于存放方阵。(2)公有成员函数Array(intal口4,intn):构造函数,用给定的参数al初始化数据成员a。voidxuanzhuan():实现对方阵a进行顺时针90度的旋转。voidshow():在屏幕上显示数组元素。2、主要函数设计在主程序中定义数

32、组intb4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。三、源程序清单#includeclassArrayprivate:inta44;public:Array(inta1口4,intn)for(inti=0;in;i+)for(intj=0;j4;j+)aij=a1ij;voidxuanzhuan();voidshow();voidArray:xuanzhuan()实现对方阵a进行顺时针90度的旋转;intt44;/定义临时数组,用于保存旋转后,对应下标上的数值;inti,

33、j;for(i=0;i4;i+)for(j=0;j4;j+)tji=a3-ij;对方阵a进行顺时针90度旋转对应位所得值,赋予该对应临时位上;for(i=0;i4;i+)for(j=0;j4;j+)aij=tij;/将临时数组中的对应值保存到原数组中;voidArray:show()/输出数组元素;for(inti=0;i4;i+)for(intj=0;j4;j+)coutaijt;coutendl;voidmain()测试;intb4=123,4,5,6,7,8,9,10,11,12,13,14,15,16;Arraytest(b,4);cout原始方B$为:endl;test.show()

34、;test.xuanzhuan();cout顺时针90度旋转后的方阵为:endl;test.show();四、实践小结理解方阵旋转的本质,利用临时数组,存放对应位上的数。五、运行结果任务十九一、实践任务20.定义一个方阵类 Array ,实现对方阵进行逆时针 90度旋转。如图所示。481216371115261014159135678910111213141516二、详细设计1、类的描述与定义(1)私有数据成员inta44:用于存放方阵。(2)公有成员函数Array(intal口4,intn):构造函数,用给定的参数al初始化数据成员a。voidxuanzhuan():实现对方阵a进行逆时针9

35、0度的旋转。voidshow():在屏幕上显示数组元素。2、主要函数设计在主程序中定义数组intb4=123,4,5,6,7,8,9,10,11,12,13,14,15,16作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。三、源程序清单#includeclassArrayprivate:inta44;public:Array(inta1口4,intn)for(inti=0;in;i+)for(intj=0;j4;j+)aij=a1ij;voidxuanzhuan();voidshow();voidArray:xuanzhuan()实现对方阵a进行逆时针90

36、度的旋转;inti,j;intt44;/定义临时数组,用于保存原始方阵经逆时针90度旋转后对应下标上的值;for(i=0;i4;i+)for(j=0;j4;j+)t3-ji=aij;/将旋转后对应下标上的值赋给临时数组上的对应位置;for(i=0;i4;i+)for(j=0;j4;j+)aij=tij;/将保存在临时数组的值,赋给原始数组,从而原始数组完成旋转;voidArray:show()/输出;for(inti=0;i4;i+)for(intj=0;j4;j+)coutaijt;coutendl;voidmain()测试;intb口4=123,4,5,6,7,8,9,10,11,12,1

37、3,14,15,16;Arraytest(b,4);cout原始方阵为:endl;test.show();test.xuanzhuan();cout进行逆时针90度旋转后的方阵为:endl;test.show();四、实践小结理解方阵旋转的本质,利用临时数组,存放对应位上的数。五、运行结果1GAJ-实W包Debug;鬲20羞康拈方阵为: TOC o 1-5 h z 123456?891611121314IS16进行逆时针“度旋转后的方阵为:48121637111526i81415913Pressanykeytocontinue任务二十一、实践任务21.建立一个类NUM,求指定数据范围内的所有合

38、数(非质数)。提示:合数定义是一个数,除了1和它本身,还有其它约数,这样的数叫合数”。二、详细设计1、类的描述与定义(1)私有数据成员int*data:动态存放在指定范围内求出的所有合数。intspan1,span2:存放指定范围的下限和上限。intnum:存放span1与span2之间的合数个数。(2)公有成员函数NUM(intn1,intn2):构造函数,用参数n1和n2初始化span1和span2,同时初始化isComposite(intx):判断x是否为合数。若是合数,返回1,否则,返回0。voidprocess():求指定范围内的所有合数,把它们依次存放在数组data中

39、,并将求出的合数个数赋给num。voidprint():输出求出的素数个数及所有合数,每行输出8个合数。NUM():释放动态分配的存储空间。2、主要函数设计在主函数中完成对该类的测试。定义一个NUM类对象test,指定查找范围为100200,即求100至200之间的所有合数。通过test调用成员函数完成求合数及输出合数的工作。三、源程序清单#include#includeclassNUMprivate:int*data;动态存放在指定范围内求出的所有合数;intspan1,span2;/存放指定范围的下限和上限;intnum;/存放span1与span2之间的合数个数;public:NUM(i

40、ntn1,intn2)data=newintn2-n1+1;span1=n1;span2=n2;num=0;intisComposite(intx);voidprocess。;voidprint();NUM()if(data)deletedata;intNUM:isComposite(intx)判断x是否为合数。若是合数,返回1,否则,返回0;if(x1)/比1大,但不是素数的数,称为合数;if(x=2|x=3)return0;for(inti=2;isqrt(x)return0;elsereturn0;voidNUM:process()/求指定范围内的所有合数,把它们依次存放在数组data中

41、,并将求出的合数个数赋给num;for(inti=span1,j=0;i=span2;i+)if(isComposite(i)dataj=i;j+;num+;voidNUM:print()输出;cout素数个数:numendl;cout所有合数:endl;for(inti=0;inum;i+)coutdatait;if(i+1)%8=0)coutendl;每行输出8个合数;cou14215314415Si15b1S815916R1611621641E51EG1G8IS170171172174ITS17&17717816Z1H31841SS186187189190192

42、1941951962施收nykeyrocont任务二十一一、实践任务22.建立一个类Saddle_point,求一个数组中的所有鞍点。提示:鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。二、详细设计1、类的描述与定义(1)私有数据成员inta44:存放二维数组元素。intb44:存放二维数组中的鞍点值。intnum:存放鞍点个数。(2)公有成员函数Saddle_point(intdata口4):构造函数,用参数intdata口4初始化数组a,同时初始化数组b与num的值均为0。voidprocess():求数组a所有鞍点(如果有鞍点),把它们行、歹U、及值相应存放在数组b中

43、,并将求出的鞍点个数赋给num。voidprint():输出数组a、鞍点个数,与鞍点坐标及相应值。2、主要函数设计在主程序中定义数组intb4=2,6,3,4,5,6,5,5,576,7,1,927作为原始数组。定义一个Saddle_point类对象fun。通过fun调用成员函数完成求鞍点及输出工作。三、源程序清单#includeclassSaddle_pointprivate:inta44;intb44;存放二维数组中的鞍点值;intnum;/存放鞍点个数;public:Saddle_point(intdata口4)for(inti=0;i4;i+)for(intj=0;j4;j+)aij=

44、dataij;bi朋=0;num=0;voidprocess。;voidprint();voidSaddle_point:process()/求数组a所有鞍点,把它们行,歹U,及值相应存放在数组b中,并将求出的鞍点个数赋给num;inti,j,k;intm=0,n=0;/作为是否为鞍点的判断条件;for(i=0;i4;i+)算法:依次判断数组中的每个元素是否为所在该行为最大,所在该列为最小;for(j=0;j4;j+)m=n=0;for(k=0;k=aik)m+;判断该元素是否为所在行最大;elsebreak;if(aij=akj)n+;判断该元素是否为所在列最大;elsebreak;if(m

45、=4&n=4)/满足条件即为鞍点;num+;bij=aij;voidSaddle_point:print()/输出数组a,鞍点个数,与鞍点坐标及相应值;inti,j;cout数组a为:endl;for(i=0;i4;i+)输出数组a;for(j=0;j4;j+)coutaijt;coutendl;cout”鞍点个数:numendl;if(num)for(i=0;i4;i+)for(j=0;j4;j+)if(bij)当bij不为0时,即其中此时对应下标保存有原数组a中对应下标的鞍点值;cout”鞍点坐标:ij相应值:bijendl;elsecout无鞍点endl;voidmain()intb4=

46、2,634,5,6,5,5,5,7,671,927;Saddle_pointfun(b);cess();fun.print();四、实践小结应理解鞍点的含义,再利用循环判断语句依次遍历寻找鞍点五、运行结果I 应通a 目应据述C41I1 t illllLR任务二十二一、实践任务23.分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为

47、:将m、n较小的一个数赋给变量k,然后分别用k,k-1,k-2,,1中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。二、详细设计1、类的描述与定义(1)私有数据成员intnum,den:num为分子,den为分母。(2)公有成员函数Fract(inta=0,intb=1):构造函数,用a和b分别初始化分子num、分母ged(intm,intn):求m、n的最大公约数。此函数供成员add()函数调用。Fractadd(Fractf):将参数

48、分数f与对象自身相加,返回约简后的分数对象。voidshow():按照num/den的形式在屏幕上显示分数。2、主要函数设计在主程序中定义两个分数对象fl和f2,其初值分别是1/5和7/20,通过fl调用成员函数add完成fl和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。三、源程序清单#includeclassFractprivate:intnum,den;public:Fract(inta=0,intb=1)num=a;den=b;intged(intm,intn)求m,n的最大公约数;intk;k=mden*f.den/ged(this-den,f.den);s.num=(th

49、is-num*f.den+this-den*f.num)/ged(this-den,f.den);s.den=s.den/ged(s.den,s.num);s.num=s.num/ged(s.den,s.num);returns;voidFract:show()coutnum/denendl;voidmain()Fractf1(1,5),f2(7,20),f3;f3=f1.add(f2);f3.show();四、实践小结理解函数中分数运算的实现方式,再依次完成。五、运行结果*&*一超昭kUbug管与喜京百*11/26Pressanytocontinue任务二十三、实践任务.建立一个类NUM,并

50、统计特定序列中相同的数字的个数。二、详细设计1、类的描述与定义(1)私有数据成员intdata25:随机生成25个在0-9之间的数字。intnum10:储存每个数字出现的个数。(2)公有成员函数NUM(intdata):构造函数,初始化数组data。voidprocess():统计数组data中每个数字出现的个数,并保存到数组num中。voidprint():输出每个数字出现的个数,每行输出5个2、主要函数设计在主程序中定义一个对象,对该类进行测试。三、源程序清单#include#includeclassNUMprivate:intdata25;intnum10;public:NUM(intd

51、ata)for(inti=0;idatai=rand()%data;/随机生成25个在0-9之间的数字;voidprocess。;voidprint();voidNUM:process()for(inti=0;i10;i+)intk=0;for(intj=0;j25;j+)if(i=dataj)k+;记录值为i的数字出现的次数;numi=k;/储存每个数字出现的个数;voidNUM:print()/输出每个数字出现的个数,每行输出5个;for(inti=0;i10;i+)couti出现次数numit;if(i+1)%5=0)coutendl;voidmain()测试;NUMtest(10);t

52、cess();test.print();四、实践小结掌握数组,利用循环判断实现计数五、运行结果任务二十四一、实践任务.建立一个类NUM,并统计特定序列中相同的字符的个数。、详细设计1、类的描述与定义(1)私有数据成员chardata25:随机生成25个字符。intnum128:储存每个字符出现的个数。(2)公有成员函数NUM(intdata):构造函数,同时初始化数组data。voidprocess():统计数组data中每个字符出现的个数,并保存到数组num中。voidprint():输出每个出现过的字符及其出现的个数,每行输出5个,没有出现过的字符不显示。2、主要函数设计在主

53、程序中定义一个对象,对该类进行测试。三、源程序清单#include#includeclassNUMprivate:chardata25;intnum128;public:NUM(intdata)for(inti=0;idatai=rand()%data;/随机生成25个字符;voidprocess。;voidprint();voidNUM:process()/统计data中每个字符出现的个数,并保存到数组num中;for(inti=0;i128;i+)intk=0;for(intj=0;j25;j+)if(dataj=i)k+;numi=k;/存储每个字符出现的个数;voidNUM:print

54、()/输出每个出现过的字符及其出现的个数,每行输出5个,没有出现过的字符不显示;for(inti=0;i128;i+)intk=0;if(numi)coutchar(i)出现个数numit;k+;if(k+1)%5=0)coutendl;cout a- 力。-实践归业0血4黄25代武任务二十五、实践任务.建立一个类NUM,随机生成25个字符序列,并为特定序列进行排序。二、详细设计1、类的描述与定义(1)私有数据成员intdata25:随机生成25个字符。(2)公有成员函数NUM(intdata):构造函数,初始化数组data。voidprocess():为数组data进行排序,要求按照ASCII码进行升序排列。voidprint():输出数组data,每行输出5个字符。2、主要函数设计在主程序中定义一个对象,对该类进行测试。三、源程序清单#include#includeclassNUMprivate:intdata25;public:NUM(intdata)for(inti=0;idata

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论