程序设计vc++实践课程实践报告精华版备考资料.docx
- 文档编号:22780406
- 上传时间:2023-04-27
- 格式:DOCX
- 页数:146
- 大小:985.87KB
程序设计vc++实践课程实践报告精华版备考资料.docx
《程序设计vc++实践课程实践报告精华版备考资料.docx》由会员分享,可在线阅读,更多相关《程序设计vc++实践课程实践报告精华版备考资料.docx(146页珍藏版)》请在冰豆网上搜索。
程序设计vc++实践课程实践报告精华版备考资料
xx科技大学
课程实践报告
设计题目:
程序设计(VC++)实践
设计时间至
学院(系):
专业班级:
学生姓名:
学号
指导老师:
2016年02月
任务一
一、实践任务
1.试建立一个类PP,求出下列多项式的前n项的值。
二、详细设计
1、类的描述与定义
(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个数的形式输出到屏幕上。
2、主要函数设计
在主函数中完成对该类的测试。
先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。
三、源程序清单
#include
classPP{
private:
intn;
doublex;
double*p;
public:
PP(intnum,doublex1)
{
n=num;
x=x1;
p=newdouble[n];
}
~PP()
{
if(p)delete[]p;
}
doublefun(intn1,doublex);
voidprocess();
voidshow();
};
doublePP:
:
fun(intn1,doublex)
{
if(n1==0)return1;
elseif(n1==1)returnx;
elseif(n1>1)return((2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x))/n1;
}
voidPP:
:
process()
{
for(inti=0;i { p[i]=fun(i,x); } } voidPP: : show() { cout<<"n="< for(inti=0;i { cout< if((i+1)%4==0)cout< } } voidmain() { intnum; doublex1; cout<<"请输入num和x1: "; cin>>num>>x1; PPitems(num,x1); items.process(); items.show(); } 四、实践小结 应熟练掌握递归函数的应用,写递归函数时应先进行递归结束条件的判定。 五、运行结果 任务二 一、实践任务 2.试建立一个类SP,求 ,另有辅助函数power(m,n)用于求 。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●intn,k: 存放公式中n和k的值; (2)公有成员函数 ●SP(intn1,intk1): 构造函数,初始化成员数据n和k。 ●intpower(intm,intn): 求mn。 ●intfun(): 求公式的累加和。 ●voidshow(): 输出求得的结果。 2、主要函数设计 在主程序中定义对象s,对该类进行测试。 三、源程序清单 #include classSP{ private: intn,k; public: SP(intn1,intk1) { n=n1; k=k1; } intpower(intm,intn); intfun(); voidshow(); }; intSP: : power(intm,intn) { ints=1; for(inti=0;i { s*=m; } returns; } intSP: : fun() { ints=0; for(inti=1;i<=n;i++) { s+=power(i,k); } returns; } voidSP: : show() { cout<<"f("< } voidmain() { intn1,k1; cout<<"请输入n1,k1: "; cin>>n1>>k1; SPs(n1,k1); s.fun(); s.show(); } 四、实践小结 掌握用循环语句求m^n,和m! ,熟练掌握函数的调用。 五、运行结果 任务三 一、实践任务 3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●floatarray[20]: 一维整型数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(floatb[],intm): 构造函数,初始化成员数据。 ●voidaverage(): 输出平均值,并将数组中的元素按要求重新放置。 ●voidprint(): 输出一维数组。 2、主要函数设计 在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。 三、源程序清单 #include classMOVE{ private: floatarray[20]; intn; public: MOVE(floatb[],intm) { for(inti=0;i { array[i]=b[i]; } n=m; } voidaverage(); voidprint(); ~MOVE() {}; }; voidMOVE: : average() { floatave=0; inti,j; for(i=0;i { ave+=array[i]; } ave/=n; cout< floatturn[20]; j=0; for(i=0;i { if(array[i]<=ave) { turn[j]=array[i]; j++; } } j=0; for(i=0;i { if(array[i]>ave) { turn[n-1-j]=array[i]; j++; } } for(i=0;i { array[i]=turn[i]; } } voidMOVE: : print() { for(inti=0;i { cout< } } voidmain() { floatb1[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}; intnum; num=sizeof(b1)/sizeof(float); MOVEs(b1,num); s.average(); s.print(); } 四、实践小结 应熟练掌握数组与指针的应用。 五、运行结果 任务四 一、实践任务 4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int*array: 一维整型数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(intb[],intm): 构造函数,初始化成员数据。 ●voidexchange(): 输出平均值,并将数组中的元素按要求重新放置。 ●voidprint(): 输出一维数组。 ●~MOVE(): 析构函数。 2、主要函数设计 在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。 三、源程序清单 #include classMOVE{ private: int*array; intn; public: MOVE(intb[],intm) { array=newint[m]; n=m; for(inti=0;i { array[i]=b[i]; } } voidexchange(); voidprint(); ~MOVE() { if(array)deletearray; } }; voidMOVE: : exchange() { floatave=0; for(inti=0;i { ave+=array[i]; } ave/=n; cout<<"平均值为"< intmax,min; max=min=array[0]; intm; for(i=0,m=0;i { if(array[i]>=max)m=i,max=array[i]; } intl; for(i=0,l=0;i { if(array[i] } i=array[m],array[m]=array[l],array[l]=i; } voidMOVE: : print() { for(inti=0;i cout< } voidmain() { inttext[]={21,65,43,87,12,84,44,97,32,55}; intnum; num=sizeof(text)/sizeof(int); MOVEs(text,num); s.print(); cout< s.exchange(); s.print(); } 四、实践小结 学会求数组中最大元素与最小元素方法,并实现交换。 五、运行结果 任务五 一、实践任务 5.定义一个类Palindrome,实现绝对回文数。 设计一个算法实现对任意整型数字判断是否为绝对回文数。 所谓绝对回文数,是指十进制数和二进制数均对称的数。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●intn: 整型数字。 ●inty: 标记是否为回文数。 (2)公有成员函数 ●Palindrome(intx): 构造函数,根据x参数初始化数据成员n,y初始化为0。 ●voidhuiwen(): 判断数n是否为绝对回文数。 ●voidshow(): 若该数为回文数,则在屏幕显示。 2、主要函数设计 在主程序中定义inta,由键盘输入数字。 定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。 三、源程序清单 #include classPalindrome{ private: intn; inty; public: Palindrome(intx) { n=x; y=0; } voidhuiwen(); voidshow(); }; voidPalindrome: : huiwen() { inti=0,j=0; intm; m=n; while(m) { m/=10; i++; } m=n; while(m) { m/=2; j++; } int*s10=newint[i]; int*s2=newint[j]; m=n; for(intk=0;k { s10[i-1-k]=m%10; m/=10; } m=n; for(k=0;k { s2[j-1-k]=m%2; m/=2; } intnum10=0; for(k=0;k { if(s10[i-1-k]==s10[k])num10++; elsebreak; } intnum2=0; for(k=0;k { if(s2[j-1-k]==s2[k])num2++; elsebreak; } if(num10==(i/2)&&num2==(j/2))y=1; } voidPalindrome: : show() { inti=0,j=0; intm; m=n; while(m) { m/=10; i++; } m=n; while(m) { m/=2; j++; } int*s10=newint[i+1]; int*s2=newint[j+1]; m=n; for(intk=0;k { s10[i-1-k]=m%10; m/=10; } m=n; for(k=0;k { s2[j-1-k]=m%2; m/=2; } if(y) { cout<<"该数为绝对回文数! : "< cout<<"十进制表示为: "; for(k=0;k cout< cout<<"二进制表示为: "; for(k=0;k cout< } else { cout<<"该数不是绝对回文数! : "< cout<<"十进制表示为: "; for(k=0;k cout< cout<<"二进制表示为: "; for(k=0;k cout< } cout< } voidmain() { inta; cout<<"请输入一个数字: "; cin>>a; Palindromep(a); p.huiwen(); p.show(); } 四、实践小结 将整型转换会整型数组类型,再进行回文数判断,从而实现回文数用数组判断的通用性。 五、运行结果 任务六 一、实践任务 6.定义一个字符串类String,实现判断该字符串是否为回文字符串。 所谓回文字符串,是指该字符串左右对称。 例如字符串“123321”是回文字符串。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●char*str; ●inty: 标记是否为回文字符串。 (2)公有成员函数 ●String(char*s): 构造函数,用给定的参数s初始化数据成员str。 y初始化为0。 ●voidhuiwen(): 判断str所指向的字符串是否为回文字符串。 ●voidshow(): 在屏幕上显示字符串。 2、主要函数设计 在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。 定义一个String类对象test,用s初始化test,完成对该类的测试。 三、源程序清单 #include #include classString{ private: char*str; inty; public: String(char*s) { intn=strlen(s); str=newchar[n+1]; strcpy(str,s); y=0; } voidhuiwen(); voidshow(); ~String() {if(str)delete[]str;} }; voidString: : huiwen()//判断str所指向的字符串是否为回文字符串; { intn,judge=0; n=strlen(str); for(inti=0;i<(n/2);i++) { if(str[i]==str[n-1-i])judge++; } if(judge==i)y=1; } voidString: : show()//输出; { if(y==1)cout<<"y=1,¸该字符串是回文数"< elsecout<<"y=0,该字符串不是回文数"< } voidmain()//测试; { chars[]="ababcedbaba"; Stringtest(s); test.huiwen(); test.show(); } 四、实践小结 掌握判断回文字符串的一般形式。 五、运行结果 任务七 一、实践任务 7.建立一个类PHALANX,生成并显示一个折叠方阵。 折叠方阵如下图所示。 折叠方阵的生成过程为: 起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int(*p)[20]: 指向按照折叠规律存放方阵的二维整型数组。 ●intstartnum: 折叠方阵的起始数。 ●intn: 存放方针的层数。 (2)公有成员函数 ●PHALANX(ints,intm): 构造函数,初始化成员数据。 ●voidprocess(): 生成起始数为startnum的n行方阵。 ●voidprint(): 输出折叠方阵。 ●~PHALANX(): 析构函数。 2、主要函数设计 在主程序中对该类进行测试。 三、源程序清单 #include classPHALANX{ private: int(*p)[20]; intstartnum; intn; public: PHALANX(ints,intm) { startnum=s; n=m; p=newint[m][20]; } voidprocess(); voidprint(); ~PHALANX() {if(p)delete[]p;} }; voidPHALANX: : process()//生成起始数为stratnum的n行螺旋方阵; { intturn; turn=p[0][0]=startnum; inti,j; for(intk=n-2;k>=0;k--)//按照折叠方阵的生成过程进行赋值; { for(i=0,j=n-k-1;i p[i][j]=++turn; i--; j--; for(;j>=0;j--) p[i][j]=++turn; } } voidPHALANX: : print() { for(inti=0;i { for(intj=0;j { cout< } cout< } } voidmain() { ints1,m1; cout<<"请输入该折叠方阵的起始数和行数"; cin>>s1>>m1; PHALANXtest(s1,m1); test.process(); test.print(); } 四、实践小结 根据折叠方阵的产生方式进行相应的逻辑循环实现。 五、运行结果 任务八 一、实践任务 8.建立一个MATRIX,生成并显示一个螺旋方阵。 螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●inta[20][20]: 二维整型数组存放螺旋方阵。 ●intstartnum: 螺旋方阵的起始数。 ●intn: 存放方针的层数。 (2)公有成员函数 ●MATRIX(ints,intm): 构造函数,初始化成员数据startnum和n。 ●voidprocess(): 生成起始数为startnum的n行螺旋方阵。 ●voidprint(): 输出螺旋方阵。 2、主要函数设计 在主程序中定义MATRIX类的对象t对该类进行测试。 三、源程序清单 #include classMATRIX{ private: inta[20][20]; intstartnum; intn; public: MATRIX(ints,intm) { startnum=s; n=m; } voidprocess(); voidprint(); }; voidMATRIX: : process()//生成起始数为startnum的n行螺旋方阵; { inti,j; intk; intturn=startnum; for(k=1;k<=n/2;k++)//逻辑性: 按照螺旋方阵的生成过程(按顺时针方向从外向里旋转填数),进行赋值; { for(i=k-1,j=k-1;j { a[i][j]=turn++; } j--; turn--; for(;i { a[i][j]=turn++; } i--; turn--; for(;j>=k-1;j--) { a[i][j]=turn++; } j++; turn--; for(;i>=k;i--)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 vc 实践 课程 报告 精华版 备考 资料