您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 招聘面试 > 江苏科技大学VC++程序实践答案
江苏科技大学VC++实践报告一、实践任务任务一(第2题):试建立一个类SP,求f(n,k)=1^k+2^k+3^k+…+n^K,另有辅助函数power(m,n),用于求m^n。具体要求如下:(1)私有成员数据:intn,k:存放公式中n和k得值。(2)公有成员函数:SP(intn1,intk1):构造函数,初始化成员数据n和k。intpower(intm,intn):求m^n。intfun():求公式的累加和。voidshow():输出求的结果。(3)在主程序中定义对象s,对该类进行测试。任务一分析1、任务分析通过SP的成员函数power()可求出m^n的值,再通过累加函数fun(),可求出累加和。类的定义如下:#includeiostream.hclassSP{intn,k;public:SP()intpower()intfun()voidshow()};2、算法设计求m^n:定义变量P=1,循环n次,每次循环P乘以m求累加和:定义变量S=0,通过for循环,将power()函数计算的结果累加。3、系统测试在主函数中用整数初始化SP的对象,并调用成员函数show()输出结果。主函数定义如下:voidmain(){SPa(2,3);a.power(2,3);a.fun();a.show();}用以测试的数据为:n=2,k=3;预期的输出结果为:当n=2,k=3时,f(n,k)=9任务一程序#includeiostream.hclassSP{intn,k;public:SP(intn1,intk1){n=n1;k=k1;}intpower(intm,intn){intp=1;for(inti=1;i=n;i++)p*=m;returnp;}intfun(){ints=0;for(inti=1;i=n;i++)s+=power(i,k);returns;}voidshow(){cout当n=n,k=k时,f(n,k)=fun()endl;}};voidmain(){SPa(2,3);a.power(2,3);a.fun();a.show();}任务二(第24题):建立一个NUM,并统计特定序列中相同的字符的个数。具体要求如下:(1)、私有数据成员chardata[25]:随机生成25个字符。intnum[128]:储存每个字符出现的个数。(2)公有成员函数NUM(intdata):构造函数,同时初始化数组data。voidprocess():统计data中没得字符出现的个数,并保存到数组num中。voidprint():输出每个出现过的额字符及其出现的个数,每行输出5个,没有出现过的字符不显示(3)在主程序中定义一个对象,对该类进行测试。1、任务(系统)分析由利用头文件#includestdlib.h,程序会自动产生随机的整数,在主函数中将整数转化为字符,用字符初始化类的对象,用循环语句遍历真个字符数组,用这些字符的ASCII字判断它们所出现的次数,然后输出。类的定义如下:classNUM{chardata[25];intnum[128];public:NUM(chara[25])voidprocess()voidprint()};任务二分析(1)将程序随机产生的整数利用循环语句转换为字符,保存在数组a中(2)将num数组中的每一个元素初始化为0,然后利用这些字符的ASCII字判断它们所出现的次数,保存在num中;3.系统测试在主函数中用数组a初始化Move的对象,并调用其成员函数,print()输出测试结果。主函数定义如下:voidmain(){chara[25];for(inti=0;i24;i++)a[i]=rand()%128;a[24]=0;NUMt(a);t.process();t.print();}输出结果为:任务二程序#includeiostream.hclassNUM{chardata[25];intnum[128];public:NUM(intdata){for(inti=0;i25;i++)this-data[i]=rand()%128;}voidprocess(){for(inti=0;i128;i++)num[i]=0;for(i=0;i25;i++)num[data[i]]++;}voidprint(){for(inti=0;i25;i++){coutdata[i]'\t';if((i+1)%5==0)coutendl;}intk=0;for(i=0;i128;i++){if(num[i]!=0){chartemp=i;couttemp(i)出现num[i]次'\t';k++;}if(k%5==0)coutendl;}}};voidmain(){NUMtest(1);test.process();test.print();}任务三(第13题):建立一个类MOVE,对数组中的元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。具体要求如下:(1)私有数据成员intarray[20]:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb[],intm):构造函数,初始化成员数据。voidchange():进行循环换位。voidprint():输出一维数组。(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。任务三分析1、任务分析初始化对象数组,定义3个变量依次存放对象数组的最后3个元素。通过循环语句将前面的元素依次后移3个单位。最后再把3个变量中的元素值赋给最前的三个数。类的定义如下:#includeiostream.hclassMOVE{intarray[20];intn;public:MOVE(intb[],intm)voidchange()voidprint()};2、算法设计初始化对象数组,定义3个变量a,b,c,依次将array数组的最后三个元素赋给它们。再通过for循环语句,依次把前面的元素后移3位。最后再把3个变量中的元素值赋给最前的三个数。3、系统测试在主函数中初始化对象数组,并调用其成员函数print()输出结果。主函数的定义如下:voidmain(){inta[]={21,65,43,87,12,84,44,97,32,55};MOVEs(a,10);s.change();s.print();}用以测试的数据为:{21,65,43,87,12,84,44,97,32,55}预期的结果为:97,32,55,21,65,43,87,12,84,44任务三程序#includeiostream.hclassMOVE{intarray[20];intn;public:MOVE(intb[],intm){n=m;for(inti=0;im;i++)array[i]=b[i];}voidchange(){inta,b,c,t=n;a=array[t-1];b=array[t-2];c=array[t-3];for(1;t-4=0;t--)array[t-1]=array[t-4];array[0]=c;array[1]=b;array[2]=a;}voidprint(){for(inti=0;in;i++)coutarray[i];coutendl;}};voidmain(){inta[]={21,65,43,87,12,84,44,97,32,55};MOVEs(a,10);s.change();s.print();}任务四(第4题):建立一个类MOVE,将数组中最大元素的值与最小元素的值进行互换。具体要求如下:(1)私有成员数据int*array:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(floatb[],intm):构造函数,初始化成员数据。voidexchange():输出平均值,并将数组中的元素按照要求重新放置。voidprint():输出一维数组。~MOVE():析构函数。(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。任务四分析1、任务分析给成员数据array分配合适大小的动态空间。初始化后,通过for从句计算得出所有元素的和,之后求出平均值。通过互换函数exchange()互换最值。最后释放动态空间。类的定义如下:#includeiostream.hclassMOVE{int*array;intn;public:MOVE(intb[],intm)voidexchange()voidprint()~MOVE()};2、算法设计初始化后,通过for从句计算得出所有元素的和,之后求出平均值。互换最值:将第一个元素array[0]分别赋给最大值max和最小值min。通过for从句,依次将后续元素和最值比较。若比最大值大,则将该元素的值赋给max,同时记录元素位置,记为array[x];若比最小值小,则将该元素的值赋给min,同时记录元素位置array[y]。遍阅完毕后,互换最值。1、系统测试在主函数中初始化对象数组,并调用其成员函数print()输出结果。主函数的定义如下:voidmain(){intb[]={21,65,43,87,12,84,44,97,32,55};MOVEtest(b,10);test.exchange();test.print();}用以测试的数据为:{21,65,43,87,12,84,44,97,32,55}预期的结果为:21,65,43,87,97,84,44,12,32,55任务四程序#includeiostream.hclassMOVE{int*array;intn;public:MOVE(intb[],intm){n=m;array=newint[n];for(inti=0;in;i++)array[i]=b[i];}voidexchange(){ints=0,max,min,x,y;floatave;max=min=array[0];for(inti=0;in;i++){s+=array[i];if(array[i]max){max=array[i];x=i;}if(array[i]min){min=array[i];y=i;}}ave=s/n;cout该数组的平均值为:aveendl;array[y]=max;array[x]=min;}voidprint(){for(inti=0;in;i++)coutarray[i];}~MOVE(){delete[]array;}};voidmain(){intb[]={21,65,43,87,12,84,44,97,32,55};MOVEtest(b,10);test.exchange();test.print();}任务五(第6题):定义一个字符窜类String,实现判断该字符窜是否为回文字符窜,所谓回文字符窜就是指该字符窜左右对称。具体要求如下:(1)私有数据成员char*str;nty:标记是否为回文字符窜(2)公有成员函数String(char*s):构造函数,用给定的参数s初始化成员数据str。Y初始化为0.voidhuiwen():判断str所指的字符窜是否为回文字符窜。voidshow():在屏幕上显示字符窜。(3)在主程序中定义字符窜chars[]=”ababcedbaba”作为原始字符窜。定义一个String类对象test,用s初始化test,完成对该类的测试。任务五分析1、任务分析给数据成员str分配合适大小的动态空间。初始化后,通过回文字符窜判断函数huiwen()进行判断。输出字符窜,最后释放动态空间。类的定义如下:#includeiostream.h#includestring.hclassString{char*str;
本文标题:江苏科技大学VC++程序实践答案
链接地址:https://www.777doc.com/doc-7795426 .html