还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
江苏科技大学 课程实践报告 设计题目:程序设计VC++实践设计时间2014-3-1至2014-4-1学院系:船舶与海洋工程专业班级:船海一班学生姓名:程尉学号1240101108指导老师张晓如 实践任务一第1题
一、程序设计基本题试建立一个类PP,求出下列多项式的前n项的值1n=0Pnx=xn=12n-1xPn-1x-n-1Pn-2xn1具体要求如下
(1)私有数据成员intn:前若干项的项数doublex:存放x的值double*p根据n的大小动态申请存放Pnx前n项的数组空间
(2)共有成员函数PPintnum,doublex1构造函数,初始化数据成员n和x,使p指向动态申请的数据空间~PP析构函数,释放p指向的动态内存空间doublefunintn1,doublex递归函数,用于求多项式Pnx的第n1项注意将递归公式中的n用作函数参数本函数供pro__ss函数调用voidpro__ss完成求前n项的工作,并将它们存放发到p指向的动态数组中voidshow输出n和x,并将前n项以每行4个数的形式输出到屏幕上
(3)在主函数中完成对该类的测试先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,并输出多项式前num项的值
二、系统设计
1、概要设计通过类PP的成员函数pro__ss来求多项式Pnx的前n项的值,其中用fun函数来求第n项的值,根据n的大小来给数据成员p分配动态空间,程序结束前释放为items分配的动态空间
2、详细设计
①类的定义如下classPP{intn;doublex;double*p;public:PPintnumdoublex1{}voidpro__ss{}voidshow{}};
②类的主要成员函数的设计doublefunintn1doublex//设计函数来求Pnx{ifn1==0return1;elseifn1==1returnx;return2*n1-1*x*funn1-1x-n1-1*funn1-2x/n1;}
三、系统测试用以测试的数据为34预期的输出结果为n=3x=
41423.5154
四、实践小结这道题主要是把题目看懂,其实只是一些简单的函数定义而已
五、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
六、源程序清单#includeiostream.hclassPP{intn;doublex;double*p;public:PPintnumdoublex1{n=num;x=x1;p=newdouble[n+1];}~PP{ifpdelete[]p;}doublefunintn1doublex{ifn1==0return1;elseifn1==1returnx;return2*n1-1*x*funn1-1x-n1-1*funn1-2x/n1;}voidpro__ss{forinti=0;in+1;i++{p[i]=funix;}}voidshow{coutn=n\tx=x\n;forinti=0;in+1;i++{coutp[i]\t;ifi+1%4==0cout\n;}}};void__in{intnum;doublex1;cinnumx1;PPitemsnumx1;items.funnumx1;items.pro__ss;items.show;}实践任务二(第2题)
一、程序设计基本题试建立一个类SP,求fn,k=1k+2k+3k+…+nk,另有辅助函数powerm,n用于求mn具体要求如下
(1)私有成员函数intn,k存放公式中n和k的值;
(2)公有成员函数SPintn1,intk1构造函数,初始化成员数据n和kintpowerintm,intn求mnintfun求公式的累加和voidshow输出求得的结果
(3)在主程序中定义对象s,对该类进行测试
二、系统设计
1、概要设计通过类SP的成员函数power()求出m的n次方的值,再通过成员函数fun调用power函数求出fnk的值
2、详细设计
①类的定义如下classSP{intn,k;public SPintn1,intk1{}intpowerintm,intn{}intfun{}voidshow};
②类的主要成员函数的设计intpowerintmintn{intp=1;//用for循环语句来实现求mn的值forinti=1;in+1;i++p=p*m;returnp;}intfunintnintk{s=0;//用for循环语句来实现公式的累加和forintj=1;j=n;j++s+=powerjk;returns;}
三、系统测试用以测试的数据为23预期的输出结果为9
四、实践小结这道题值得注意的是在成员函数fun中调用了函数power还有对for循环语句的熟练运用
五、____
[1]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
六、源程序清单#includeiostream.hclassSP{intnks;public:SPintn1intk1{n=n1;k=k1;}intpowerintmintn{intp=1;forinti=1;in+1;i++p=p*m;returnp;}intfunintnintk{s=0;forintj=1;j=n;j++s+=powerjk;returns;}voidshow{cout和为sendl;}};void__in{intnk;cinnk;SPsnk;s.powernk;s.funnk;s.show;}实践任务三(第3题)
1、程序设计基本题建立一个类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:MOVEintb[]intm{}voidexchange{}voidprint{}~MOVE{}};
②类的主要成员函数的设计voidexchange{floatps=0;forinti=0;in;i++s+=array[i];p=s/n;//求数组中所有元素之和的平均值intabmin=array
[0]__x=array
[0];cout平均值:p\n;fori=0;in;i++{if__xarray[i]{__x=array[i];a=i;}}//求所有元素中的最大值fori=0;in;i++{ifminarray[i]{min=array[i];b=i;}}//求所有元素中的最小值array[a]=min;array[b]=__x;}
三、系统测试用以测试的数据为21654387128444973255预期的输出结果为平均值5421654387978444123255
四、实践小结这道题主要是求数组中所有元素的平均值以及元素中的最大值和最小值,同时还要注意析构函数的运用
五、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
六、源程序清单#includeiostream.hclassMOVE{int*array;intn;public:MOVEintb[]intm{n=m;array=newint[n];forinti=0;in;i++array[i]=b[i];}voidexchange{floatps=0;forinti=0;in;i++s+=array[i];p=s/n;intabmin=array
[0]__x=array
[0];cout平均值:p\n;fori=0;in;i++{if__xarray[i]{__x=array[i];a=i;}}fori=0;in;i++{ifminarray[i]{min=array[i];b=i;}}array[a]=min;array[b]=__x;}voidprint{forinti=0;in;i++coutarray[i]\t;cout\n;}~MOVE{ifarraydelete[]array;}};void__in{ints[]={21654387128444973255};MOVEmoves10;move.exchange;move.print;}实践任务四(第6题)
1、程序设计基本题定义一个字符串类String实现判断该字符串是否为回文字符串所谓回文字符串,是指该字符串左右对称例如字符串“123321”是回文字符串具体要求如下
(1)私有成员函数char*str;inty标记是否为回文字符串
(2)公有成员函数String(char*s)构造函数,用给定的参数s初始化数据成员strY初始化为0voidhuiwen()判断str所指向的字符串是否为回文字符串voidshow()在屏幕上显示字符串
(3)在主程序中定义字符串chars[]=“abab__dbaba”作为原始字符串定义一个String类对象test,用s初始化test,完成对该类的测试
二、系统设计
1、概要设计通过回文函数来进行判断,然后将函数判断结果进行输出
2、详细设计
①类的定义如下classString{char*str;intb;public:Stringchar*s{}voidhuiwen{}voidshow{}~String{}};
②类的主要成员函数的设计voidhuiwen{char*p1=str*p2=str;while*p2p2++;p2--;for;p1p2;p1++p2--//判断str所指向的字符串是否为if*p1!=*p2回文字符串//{b=1;break;}}
三、系统测试用以测试的字符串为abab__dbaba预期的输出结果为abab__dbaba不是回文字符串
四、实践小结这道题困难在于用指针来操作字符串,定义了两个指针,分别指向字符串的首尾,通过比较两个指针所指的字符是否相等来判断是否为回文字符串
五、____
[1]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
六、源程序清单#includeiostream.h#includestring.hclassString{char*str;intb;public:Stringchar*s{str=newchar[strlens+1];strcpystrs;b=0;}voidhuiwen{char*p1=str*p2=str;while*p2p2++;p2--;for;p1p2;p1++p2--if*p1!=*p2{b=1;break;}}voidshow{ifbcoutstr不是回文字符串\n;elsecoutstr是回文字符串\n;}~String{ifstrdelete[]str;}};void__in{char*s=abab__dbaba;Stringtests;test.huiwen;test.show;}实践任务五(第4题)
一、程序设计基本题建立一个类MOVE实现将数组中大写字母元素放在小写字母元素的左边具体要求如下1私有数据成员●char*array一维字符数组●intn数据中元素的个数2公有成员函数●MOVEcharb[]intm构造函数,初始化成员数据●voidchange进行排序换位●voidprint输出一维数组●~MOVE析构函数3在主程序中用数据“fdsUFfsTjfsKFEkWC”对该类进行测试
二、系统设计
1、概要设计为array开辟一个动态数组空间,通过类MOVE的成员函数change来实现将数组中的大写字母元素放在小写字母元素的左边的功能程序结束前释放为array分配的动态空间
2、详细设计类的定义如下classMOVE{char*array;intn;public:MOVEcharint;voidchange;voidprint;~MOVE;};
三、系统测试用以测试的数据为FdsUFfsTjfsKFEkWC预期输出结果为UFTKFEWCfdsfsjfsk
4、实践小结这道题和之前的一道题有点类似,
五、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
[2]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
六、源程序清单#includeiostream.hclassMOVE{char*array;intn;public:MOVEcharb[]intm{n=m;array=newchar[n];forinti=0;in;i++array[i]=b[i];}voidchange{chara;forinti=1;in/2;i++{ifarray[i-1]=aarray[i-1]=z{a=array[i-1];forintj=i-1;jn;j++{array[j]=array[j+1];}array[n-1]=a;i--;}}}voidprint{forinti=0;in;i++coutarray[i];coutendl;}~MOVE{ifarraydelete[]array;}};void__in{char*arr=fdsUFfsTjfsKFEkWC;MOVEtestarr17;test.change;test.print;}实践任务六(第19题)
一、程序设计基本题定义一个方阵类Array,实现对方阵进行顺时针90度旋转如图所示1234139515678141062910111215117313141516161284具体要求如下
(1)私有成员函数inta
[4]
[4]用于存放方阵
(2)公有成员函数Arrayinta1[]
[4]intn构造函数,用给定的参数a1初始化数据成员avoidxuanzhuan实现对方阵a进行顺时针90度的旋转intfun求公式的累加和voidshow在屏幕上显示数组元素
(3)在主程序中定义数组intb[]
[4]={12345678910111213141516}作为原始数组定义一个Array类对象test,用b初始化test,完成对该类的测试在主程序中定义对象s,对该类进行测试
二、系统设计
1、概要设计通过类的成员函数xuanzhuan来实现对方阵a进行顺时针90度的旋转,旋转后再放入二维数组中
2、详细设计
①类的定义如下classArray{inta
[4]
[4];public:Arrayinta1[]
[4]intn{}voidxuanzhuan{}voidshow{}};
②类的主要成员函数的设计voidxuanzhuan{intb
[4]
[4];//定义一个临时数组来存放a数组forinti=0;i4;i++{forintj=0;j4;j++{b[i][j]=a[i][j];}}forintx=0;x4;x++//旋转后的数组行等于3减去之前的{列,列为之前的行//forinty=0;y4;y++a[x][y]=b[3-y][x];}}
三、系统测试用以测试的数组为12345678910111213141516预期的输出结果为13951141062151173161284
四、实践小结这道题可以举一反三,通过这道题的运算可以方便以后旋转类的基本设计
五、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
[2]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
六、源程序清单#includeiostream.hclassArray{inta
[4]
[4];public:Arrayinta1[]
[4]intn{forinti=0;in;i++forintj=0;j4;j++{a[i][j]=a1[i][j];}}voidxuanzhuan{intb
[4]
[4];forinti=0;i4;i++{forintj=0;j4;j++{b[i][j]=a[i][j];}}forintx=0;x4;x++{forinty=0;y4;y++a[x][y]=b[3-y][x];}}voidshow{forinti=0;i4;i++{forintj=0;j4;j++{couta[i][j]\t;}cout\n;}}};void__in{intb[]
[4]={12345678910111213141516};Arraytestb4;test.xuanzhuan;test.show;}实践任务七(改错第7题)
一、改错基本题以下程序统计一个字符串中包含某个字符的单词所出现的次数这里假设单词之间由一个或多个空格分隔,且在判断字符是否相等时不区分大小字母请改正其中的错误程序正确的运行结果为字符串“Iamastudent.MynameisTony.Iamtwenty.”中包含字符‘T’的单词有3个含有错误的源程序如下#includeiostream.hcharconvertcharc{ifc=Ac=Zreturnc+a-A;returnc;}intsearchchar*strcharch{intcount=0flag=0;for;*str;str++{ifflag||*str=={flag=1;while*str++==;str--;forchar*str1=str;*str==*str;str1++{ifconvert*str==convertch{count++;returncount;}}}}returncount;}void__in{charstr
[50]=Iamastudent.MynameisTony.Iamtwenty.ch=T;cout字符串\str\中包含字符\ch\的单词有searchstrch个endl;}
二、系统测试运行结果字符串“Iamastudent.MynameisTony.Iamtwenty.”中包含字符‘T’的单词有3个
三、实践小结运行结果这题十分简单
四、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
[2]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
五、源程序清单#includeiostream.hcharconvertcharc{ifc=Ac=Zreturnc+a-A;returnc;}intsearchchar*strcharch{intcount=0flag=0;for;*str;str++{while*str++==;str--;for;*str!=*str;str++ifconvert*str==convertchflag=1;ifflag==1{flag=0;count++;}}returncount;}void__in{charstr
[44]=Iamastudent.MynameisTony.Iamtwenty.ch=T;cout字符串\str\中包含字符\ch\的单词有searchstrch个endl;}实践任务八(改错第1题)
一、改错基本题以下程序中函数fun(inta[]intN)的功能是删除数组中a的前N个元素中重复的元素,并返回所删除元素的总数请改正其中的错误程序正确的运行结果为处理前的数组为4133124344处理后的数组为4132
二、系统测试运行结果为处理前的数组为4133124344处理后的数组为4132
三、实践小结较为简单
四、____
[1]潘克勤,华伟,VisualC++程序设计北京中国铁道出版社2008
[2]张晓如,王芳,VisualC++程序设计解析与实训北京中国铁道出版社2008
五、源程序清单#includeiostream.hintfunint*aintN{intcn=0;forinti=0;iN-n;i++{c=a[i];forintj=i+1;jN-n;j++ifa[j]==c{forintk=j;kN-n;k++a[k]=a[k+1];n++;j--;}}returnn;}voidprintinta[]intn{forinti=0;in;i++couta[i]\t;coutendl;}void__in{inta
[10]={4133124344}b
[6]={121321};intn=funa10;cout数组a处理后的数组为;printa10-n;n=funb6;cout数组b处理后的数组为;printb6-n;}。