江苏科技大学课程实践报告设计题目:程序设计(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{private:intn;doublex;double*p;public:PP(intnum,doublex1);~PP();doublefun(intn1,doublex);voidprocess();voidshow();};PP::PP(intnum,doublex1){n=num;x=x1;p=newdouble[n+1];}PP::~PP(){delete[]p;}doublePP::fun(intn1,doublex){p[n1]=((2*n1-1)*x*p[n1-1]-(n1-1)*p[n1-2])/n1;returnp[n1];}voidPP::process(){p[0]=1;p[1]=x;intk=n;for(k=2;k=n;k++){fun(k,x);}}voidPP::show(){coutn'\t'xendl;for(intk=0;k=n;k++){coutp[k]'\t';if((k+1)%4==0)coutendl;}}voidmain(void){intnum,x1;coutn=;cinnum;cout'\n'x=;cinx1;PPitems(num,x1);items.process();items.show();}编译执行结果为:0.n=12x=81281895.5126817680.42535833.70448e+0065.48207e+0078.19069e+0081.23283e+0101.86653e+0112.8395e+0124.33678e+013Pressanykeytocontinue13.建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。具体要求如下:(1)私有数据成员intarray[20]:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(intb[],intm):构造函数,初始化成员数据。voidchange():进行循环换位。voidprint():输出一维数组。(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。程序内容如下:#includeiostream.hclassMOVE{intarray[20];intn;public:MOVE(intb[],intm){for(inti=0;i20;i++)array[i]=b[i];n=m;}voidchange(){intb[10];for(inti=0;in-3;i++)b[i+3]=array[i];for(;in;i++)b[i+3-n]=array[i];for(intk=0;kn;k++)array[k]=b[k];}voidprint(){for(inti=0;in;i++)coutarray[i]'\t';coutendl;}};voidmain(){intb[]={21,65,43,87,12,84,44,97,32,55};MOVEmove(b,10);move.change();move.print();}执行结果:97325521654387128444Pressanykeytocontinue20.定义一个方阵类Array,实现对方阵进行逆时针90度旋转。如图所示。1234481216567837111591011122610141314151615913具体要求如下:(1)私有数据成员inta[4][4]:用于存放方阵。(2)公有成员函数Array(inta1[][4],intn):构造函数,用给定的参数a1初始化数据成员a。voidxuanzhuan():实现对方阵a进行逆时针90度的旋转。voidshow():在屏幕上显示数组元素。(3)在主程序中定义数组intb[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。定义一个Array类对象test,用b初始化test,完成对该类的测试。程序内容如下:#includeiostream.hclassArray{inta[4][4];public:inti,j,k,l;Array(inta1[][4],intn){for(i=0;i4;i++)for(j=0;j4;j++)a[i][j]=a1[i][j];n=4;}voidxuanzhuan(){intb[4][4];for(i=0;i4;i++)for(j=0;j4;j++)b[4-1-j][i]=a[i][j];for(k=0;k4;k++)for(l=0;l4;l++)a[k][l]=b[k][l];}voidshow(){for(i=0;i4;i++){for(j=0;j4;j++){if(a[i][j]10)couta[i][j];elsecouta[i][j];}coutendl;}}};voidmain(){intb[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};Arraytest(b,4);cout原二维数组为:endl;test.show();test.xuanzhuan();cout旋转后的二维数组为:endl;test.show();}编译执行结果为:原二维数组为:12345678910111213141516旋转后的二维数组为:48121637111526101415913Pressanykeytocontinue30.建立一个矩阵类Array,对二维数组中左下三角的全部元素(包括对角线上的元素)作如下变换:(1)若该数不是素数则保持不变;(2)若该数是素数,则用大于它的最小素数替换该数。并统计二维数组中左下三角的全部元素(包括对角线上的元素)中的素数个数。具体要求如下:(1)私有数据成员intx[4][4]:存储需要处理的二维数组的各元素值。intcount:存储左下三角元素中素数的个数。(2)公有成员函数构造函数:进行初始化x数组和count的值。intfun(int);判断一个数是否为素数的函数。intencode():对x数组中左下三角的全部元素(包括对角线上的元素)逐一进行判断,若该数不是素数则保持不变,若该数是素数,则用大于它的最小素数替换该数。voidprint():按行输出矩阵的值。(3)编写一个程序测试该类,说明(声明)Array对象A,将一个矩阵存入对象A中,并输出矩阵的值,使用以下测试数据:364175641785910变换后的矩阵为8791012197201223112041421234142129程序内容如下:#includeiostream.h#includeiomanip.hclassArray{private:intx[4][4];intcount;public:Array(intb[4][4]);intfun(int);voidencode();voidprint();};Array::Array(intb[4][4]){for(inti=0;i4;i++){for(intj=0;j4;j++)x[i][j]=b[i][j];}count=0;}intArray::fun(intm){for(inti=2;im;i++){if(m%i==0)return0;}return1;}voidArray::encode(){for(inti=0;i4;i++)for(intj=0;j=i;j++)if(fun(x[i][j])){count++;intk=x[i][j]+1;while(!fun(k)){k++;}x[i][j]=k;}}voidArray::print()for(inti=0;i4;i++){for(intj=0;j4;j++)coutsetw(10)x[i][j];coutendl;}}voidmain(){inta[4][4]={3,6,4,17,8,5,9,10,12,19,7,20,4,14,21,23};Arraytest(a);cout原矩阵:endl;test.print();test.encode();cout变换后的矩阵:endl;test.print();}原矩阵:364178591012197204142123变换后的矩阵:5641787910122311204142129Pressanykeytocontinue