您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 江苏科技大学电信学院C++实践报告
江苏科技大学课程实践报告设计题目:程序设计(VC++)实践设计时间:2010-10-10至2010-11-10学院:电子信息学院专业班级:自动化学生姓名:江中炜学号0940301210指导老师:邹晓华2010年09月实践任务一一、程序设计基本题试建立一个类PP,求出下列多项式的前n项的值。1n=0Pn(x)=xn=1((2n-1)xPn-1(x)-(n-1)Pn-2(x))n1具体要求如下:(1)私有数据成员intn:前若干项的项数。doublex:存放x的值。double*p:根据n的大小动态申请存放Pn(x)前n项的数组空间。(2)共有成员函数PP(intnum,doublex1):构造函数,初始化数据成员n和x,使p指向动态申请的数据空间。~PP():析构函数,释放p指向的动态内存空间。doublefun(intn1,doublex):递归函数,用于求多项式Pn(x)的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。voidprocess():完成求前n项的工作,并将它们存放发到p指向的动态数组中。voidshow():输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3)在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,并输出多项式前num项的值。二、系统设计1、概要设计通过类PP的成员函数process()来求多项式Pn(x)的前n项的值,其中用fun()函数来求第n项的值,根据n的大小来给数据成员p分配动态空间,程序结束前释放为items分配的动态空间。2、详细设计①类的定义如下:classPP{intn;doublex;double*p;public:PP(intnum,doublex1){}voidprocess(){}voidshow(){}};②类的主要成员函数的设计doublefun(intn1,doublex)//设计函数来求Pn(x){if(n1==0)return1;elseif(n1==1)returnx;return((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1;}三、系统测试先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,并输出多项式前num项的值。voidmain(){intnum;doublex1;cinnumx1;PPitems(num,x1);items.fun(num,x1);items.process();items.show();}用以测试的数据为:34预期的输出结果为:n=3x=41423.5154四、实践小结这道题主要是把题目看懂,其实只是一些简单的函数定义而已。五、参考文献[1]潘克勤,华伟,VisualC++程序设计北京:中国铁道出版社2008[2]张晓如,王芳,VisualC++程序设计解析与实训北京:中国铁道出版社2008六、源程序清单#includeiostream.hclassPP{intn;doublex;double*p;public:PP(intnum,doublex1){n=num;x=x1;p=newdouble[n+1];}~PP(){if(p)delete[]p;}doublefun(intn1,doublex){if(n1==0)return1;elseif(n1==1)returnx;return((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1;}voidprocess(){for(inti=0;in+1;i++){p[i]=fun(i,x);}}voidshow(){coutn=n'\t'x=x'\n';for(inti=0;in+1;i++){coutp[i]'\t';if((i+1)%4==0)cout'\n';}}};voidmain(){intnum;doublex1;cinnumx1;PPitems(num,x1);items.fun(num,x1);items.process();items.show();}实践任务二一、程序设计基本题试建立一个类SP,求f(n,k)=1k+2k+3k+…+nk,另有辅助函数power(m,n)用于求mn。具体要求如下:(1)私有成员函数。intn,k:存放公式中n和k的值;(2)公有成员函数。SP(intn1,intk1):构造函数,初始化成员数据n和k。intpower(intm,intn):求mn。intfun():求公式的累加和。voidshow():输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。二、系统设计1、概要设计通过类SP的成员函数power()求出m的n次方的值,再通过成员函数fun()调用power()函数求出f(n,k)的值。2、详细设计①类的定义如下:classSP{intn,k;public:SP(intn1,intk1){}intpower(intm,intn){}intfun(){}voidshow()};②类的主要成员函数的设计intpower(intm,intn){intp=1;//用for循环语句来实现求mn的值for(inti=1;in+1;i++)p=p*m;returnp;}intfun(intn,intk){s=0;//用for循环语句来实现公式的累加和for(intj=1;j=n;j++)s+=power(j,k);returns;}三、系统测试在主函数中初始化SP的对象s,并调用其成员函数show()输出测试结果。主函数定义如下:voidmain(){intn,k;cinnk;SPs(n,k);s.power(n,k);s.fun(n,k);s.show();}用以测试的数据为:23预期的输出结果为:9四、实践小结这道题值得注意的是在成员函数fun()中调用了函数power(),还有对for循环语句的熟练运用。五、参考文献[1]潘克勤,华伟,VisualC++程序设计北京:中国铁道出版社2008[2]张晓如,王芳,VisualC++程序设计解析与实训北京:中国铁道出版社2008六、源程序清单#includeiostream.hclassSP{intn,k,s;public:SP(intn1,intk1){n=n1;k=k1;}intpower(intm,intn){intp=1;for(inti=1;in+1;i++)p=p*m;returnp;}intfun(intn,intk){s=0;for(intj=1;j=n;j++)s+=power(j,k);returns;}voidshow(){cout和为sendl;}};voidmain(){intn,k;cinnk;SPs(n,k);s.power(n,k);s.fun(n,k);s.show();}实践任务三一、程序设计基本题建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有成员函数int*array:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb[],intm):构造函数,初始化成员数据。voidexchange():输出平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。~MOVE:析构函数。(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。二、系统设计1、概要设计根据数组中元素的个数开辟一个动态数组空间array,通过类MOVE的成员函数exchange()输出一维数组的平均值,并把数组中最大元素和最小元素的位置相互交换,并把新的数组放在开辟的动态数组空间中。程序结束前释放为array分配的动态空间。2、详细设计①类的定义如下:classMOVE{int*array;intn;public:MOVE(intb[],intm){}voidexchange(){}voidprint(){}~MOVE(){}};②类的主要成员函数的设计voidexchange(){floatp,s=0;for(inti=0;in;i++)s+=array[i];p=s/n;//求数组中所有元素之和的平均值inta,b,min=array[0],max=array[0];cout平均值:p'\n';for(i=0;in;i++){if(maxarray[i]){max=array[i];a=i;}}//求所有元素中的最大值for(i=0;in;i++){if(minarray[i]){min=array[i];b=i;}}//求所有元素中的最小值array[a]=min;array[b]=max;}三、系统测试在主函数中初始化MOVE的对象move,并调用其成员函数exchange()和print()输出测试结果。主函数定义如下:voidmain(){ints[]={21,65,43,87,12,84,44,97,32,55};MOVEmove(s,10);move.exchange();move.print();}用以测试的数据为:21654387128444973255预期的输出结果为:平均值:5421654387978444123255四、实践小结这道题主要是求数组中所有元素的平均值以及元素中的最大值和最小值,同时还要注意析构函数的运用。五、参考文献[1]潘克勤,华伟,VisualC++程序设计北京:中国铁道出版社2008[2]张晓如,王芳,VisualC++程序设计解析与实训北京:中国铁道出版社2008六、源程序清单#includeiostream.hclassMOVE{int*array;intn;public:MOVE(intb[],intm){n=m;array=newint[n];for(inti=0;in;i++)array[i]=b[i];}voidexchange(){floatp,s=0;for(inti=0;in;i++)s+=array[i];p=s/n;inta,b,min=array[0],max=array[0];cout平均值:p'\n';for(i=0;in;i++){if(maxarray[i]){max=array[i];a=i;}}for(i=0;in;i++){if(minarray[i]){min=array[i];b=i;}}array[a]=min;array[b]=max;}voidprint(){for(inti=0;in;i++)coutarray[i]'\t';cout'\n';}~MOVE(){if(array)delete[]array;}};voidmain(){ints[]={21,65,43,87,12,84,44,97,32,55};MOVEmove(s,10);move.exchange();move.print();}实践任务四一、程序设计基本题定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。具体要求如下:(1)私有成员函数char*str;inty:标记是否为回文字符串。(2)公有成员函数String(char*s):构造函数,用给定的参数s初始化数据成员str。Y初始化为0。voidhuiwen():判断str所指向的字符串是否为回文字符串。voidshow():在屏幕上显示字符串。(3)在主程序中定义字符串chars[]=“ababcedbaba”作为原始字符串
本文标题:江苏科技大学电信学院C++实践报告
链接地址:https://www.777doc.com/doc-7795428 .html