资料收集于网络,如有侵权请联系网站删除只供学习与交流江苏科技大学课程实践报告设计题目:程序设计(VC++)实践设计时间:至学院:专业班级:学生姓名:学号指导老师:资料收集于网络,如有侵权请联系网站删除只供学习与交流1.试建立一个类PP,求出下列多项式的前n项的值。具体要求如下:(1)私有数据成员intn:前若干项的项数。doublex:存放x的值。double*p:根据n的大小动态申请存放Pn(x)前n项的数组空间。(2)公有成员函数PP(intnum,doublex1):构造函数,初始化数据成员n和x,使p指向动态申请的数组空间。~PP():析构函数,释放p指向的动态内存空间。doublefun(intn1,doublex):递归函数,用于求多项式的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。voidprocess():完成求前n项的工作,并将它们存放到p指向的动态数组中。voidshow():输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3)在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。程序源代码#includeiostream.hclasspp{intn;doublex;double*p;public:pp(intnum,doublex1);~pp();doublefun(intn1,doublex);voidprocess();voidshow();};pp::pp(intnum,doublex1){n=num;x=x1;p=newdouble[num+1];}pp::~pp(){delete[]p;}doublepp::fun(intn1,doublex){if(n1==0)return1;资料收集于网络,如有侵权请联系网站删除只供学习与交流if(n1==1)returnx;if(n11)return((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1;}voidpp::process(){inti;for(i=0;i=n;i++){*(p+i)=fun(i,x);}}voidpp::show(){coutn=n'\t'x=xendl;for(inti=0,m=1;in;i++,m++){cout*(p+i)'\t';if(m%4==0)cout'\n';}}voidmain(){intnum;doublex1;coutputinnumandx1endl;cinnumx1;ppitems(num,x1);items.process();items.show();}运行结果资料收集于网络,如有侵权请联系网站删除只供学习与交流2.试建立一个类SP,求,另有辅助函数power(m,n)用于求。具体要求如下:(1)私有成员数据。intn,k:存放公式中n和k的值;(2)公有成员函数。SP(intn1,intk1):构造函数,初始化成员数据n和k。intpower(intm,intn):求mn。intfun():求公式的累加和。voidshow():输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。程序源代码#includeiostream.hclassSP{intn,k;public:SP(intn1,intk1);intpower(intm,intn);intfun();voidshow();};SP::SP(intn1,intk1){n=n1;k=k1;}intSP::power(intm,intn){inti;if(n==0)return1;elsefor(i=1;in;i++)m*=m;returnm;}intSP::fun(){inty=0,x;for(x=1;x=n;x++)y+=power(x,k);returny;}voidSP::show(){cout前n项的和为:fun()endl;资料收集于网络,如有侵权请联系网站删除只供学习与交流}voidmain(){intn1,k1;cout输入n1和k1的值endl;cinn1k1;SPs(n1,k1);s.fun();s.show();}运行结果:3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员floatarray[20]:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(floatb[],intm):构造函数,初始化成员数据。voidaverage():输出平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。程序源代码#includeiostream.hclassMOVE{floatarray[20];intn;public:MOVE(floatb[],intm);voidaverage();voidprint();};MOVE::MOVE(floatb[],intm){资料收集于网络,如有侵权请联系网站删除只供学习与交流inti;n=m;for(i=0;im;i++)array[i]=b[i];}voidMOVE::average(){inti,x;floata=0;for(i=0;in;i++)a+=array[i];a/=n;cout平均值为aendl;floatff[20];for(i=0,x=0;in;i++)if(array[i]a){ff[x]=array[i];x++;}for(i=0;in;i++)if(array[i]a){ff[x]=array[i];x++;}for(i=0;in;i++)array[i]=ff[i];}voidMOVE::print(){intq,p=1;for(q=0;qn;q++){coutarray[q]'\t';if(p%5==0)cout'\n';p++;}}voidmain(){floatb[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};intm=9;MOVEaa(b,m);资料收集于网络,如有侵权请联系网站删除只供学习与交流aa.average();aa.print();}运行结果4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有数据成员int*array:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb[],intm):构造函数,初始化成员数据。voidexchange():输出平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。~MOVE():析构函数。(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。程序源代码#includeiostream.hclassMOVE{int*array;intn;public:MOVE(intb[],intm);voidexchange();voidprint();~MOVE();};MOVE::MOVE(intb[],intm){n=m;array=newint[n];for(intx=0;xn;x++)array[x]=b[x];}voidMOVE::exchange(){floata=0;资料收集于网络,如有侵权请联系网站删除只供学习与交流inti,*p1,*p2;for(i=0;in;i++)a+=array[i];a/=n;coutTheaverageofthenumberis:aendl;p1=p2=&array[0];for(i=0;in;i++){if(array[i]*p1)p1=&array[i];if(array[i]*p2)p2=&array[i];}i=*p1;*p1=*p2;*p2=i;}voidMOVE::print(){inti,num=1;for(i=0;in;i++){coutarray[i]'\t';if(num%5==0)cout'\n';num++;}}MOVE::~MOVE(){delete[]array;}voidmain(){intb[]={21,65,43,87,12,84,44,97,32,55},n=10;MOVEff(b,n);ff.exchange();ff.print();}运行结果资料收集于网络,如有侵权请联系网站删除只供学习与交流5.定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员intn:整型数字。inty:标记是否为回文数。(2)公有成员函数Palindrome(intx):构造函数,根据x参数初始化数据成员n,y初始化为0。voidhuiwen():判断数n是否为绝对回文数。voidshow():若该数为回文数,则在屏幕显示。(3)在主程序中定义inta,由键盘输入数字。定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。程序源代码#includeiostream.hclasspalindrome{intn;inty;public:palindrome(intx);voidhuiwen();voidshow();};palindrome::palindrome(intx){n=x;y=0;}voidpalindrome::huiwen(){intb[20],c[50],m,i,p=0,t1=1,t2=1;m=n;for(i=0;m0;m/=10){p++;b[i]=m%10;i++;}for(i=0;ip;i++)if(b[i]!=b[p-i-1]){t1=0;break;}for(i=0,m=n,p=0;m0;m/=2)资料收集于网络,如有侵权请联系网站删除只供学习与交流{p++;c[i]=m%2;i++;}for(i=0;ip;i++)if(c[i]!=c[p-i-1]){t2=0;break;}if(t1&&t2)y=1;}voidpalindrome::show(){if(y==0)cout该数不是回文数!endl;elsecout该回文数是:nendl;}voidmain(){inta;cout输入a的值endl;cina;palindromep(a);p.huiwen();p.show();}运行结果:6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。具体要求如下:(1)私有数据成员char*str;inty:标记是否为回文字符串。(2)公有成员函数String(char*s):构造函数,用给定的参数s初始化数据成员str。y初始化为0。voidhuiwen():判断str所指向的字符串是否为回文字符串。资料收集于网络,如有侵权请联系网站删除只供学习与交流voidshow():在屏幕上显示字符串。(3)在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。程序源代码#includeiostream.h#includestring.hclassstring{char*str;inty;public:string(char*s);voidhuiwen();void