c++程序设计与实践.pdf
《c++程序设计与实践.pdf》由会员分享,可在线阅读,更多相关《c++程序设计与实践.pdf(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、江苏科技大学课程实践报告设计题目:程序设计(VC+)实践 设计时间:至-学 院:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _专业班级:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _学生姓名:学号指导老师:_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _-1.试建立一个类P P,求出下列多项式的前n 项的值。具体要求如下:(1)私有数据成员int n:前若干项的项数。double x
2、:存 放 x 的值。double*p:根据n 的大小动态申请存放Pn(x)前 n 项的数组空间。(2)公有成员函数PP(int num,double xl):构造函数,初始化数据成员n 和 x,使 p 指向动态申请的数组空间。P P。:析构函数,释 放 p 指向的动态内存空间。double fun(int nl,double x):递归函数,用于求多项式的第n l项。注意:将递归公式中的 n 用作函数参数。本函数供process函数调用。void process():完成求前n 项的工作,并将它们存放到p 指向的动态数组中。voidshowO:输出n 和 x,并将前n 项以每行4 个数的形式输
3、出到屏幕上。(3)在主函数中完成对该类的测试。先输入num和 x l,并定义一个PP类的对象items,用 num和 x l 初始化items的成员n 和 x,调用items的成员函数,求出并输出多项式前num项的值。程序源代码#includeclass ppint n;double x;double*p;public:pp(int num,double xl);ppO;double fun(int nl,double x);void process();void show(););pp:pp(int num,double xl)(n=num;x=xl;p=new doublefnum+11;
4、)pppp()(delete p;)double pp:fun(int nl,double x)if(nl=O)return 1;if(nl=l)return x;if(nll)return(2*n 1-1)*x*fun(n 1-1,x)-(n 1 -1)*fiin(n 1-2,x)/n 1;void pp:process()int i;for(i=0;i=n;i+)*(p+i)=fun(i,x);void pp:show()(co u tnn=H n,t,x=,x e n d l;for(int i=O,m=l;ivn;i+,m+)cout*(p+i),t,;if(m%4=0)cout,n,
5、;void main()int num;double xl;co u tHput in num and xl Hendl;cinnum xl;pp items(num,xl);items.process();items.show();运行结果*C:UserspzqDesktopDebugCppl.exeput in nun and xl65n=6 x=51 5 37 3052641 23525 Press any key to continue2.试建立一个类SP,求,另有辅助函数p o w e r(m,n)用 于 求。具体要求如下:(1)私有成员数据。i n t n,k:存放公式中n和k的值
6、;(2)公有成员函数。S P(i n t n l,i n t k l):构造函数,初始化成员数据n和k。i n t p o w e r(i n t m,i n t n):求 mn。i n t f u n():求公式的累加和。v o i d s h o w():输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。程序源代码#includeclass SPint n,k;public:SP(int nljnt kl);int power(int m,int n);int fun();void show(););SP:SP(int nl,int ml)(n=nl;k=ml;)int SP:p
7、ower(int mjnt n)(inti;if(n=O)return 1;elsefor(i=l;in;i+)m*=m;return m;)int SP:fun()(int y=0,x;for(x=l;x=n;x+)y+=power(x,k);return y;)void SP:show()cout”前 n 项的和为:fun()endl;void main()int nl,kl;coutv输入 nl 和 kl 的值endl;cin n l k l;SPs(nlzkl);s.fun();s.show();)运行结果:1 .C:UserspzqDesktopDebugCppLexe输入n l和k
8、 l的值53前n项的和为:979P ress any key to continue3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员f l o a t a r r a y 2 0 1:一维整型数组。i n t n:数组中元素的个数。(2)公有成员函数M O V E(f l o a t b ,i n t m):构造函数,初始化成员数据。v o i d a v e r a g e():输出平均值,并将数组中的元素按要求重新放置。v o i d p r i n t():输出一维数组。(3)在主程序中用数据 1
9、.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3 对该类进行测试。程序源代码#includeclass MOVEfloat array20;int n;public:MOVE(float b,int m);void average();void print(););MOVE:MOVE(float b,int m)int i;n=m;for(i=0;im;i+)arrayij=bij;void MOVE:average()(int i,x;float a=0;for(i=0;in;i+)a+=arrayi;a/=n;cout 平均值为 a e n d l;float ff20J;
10、for(i=0,x=0;in;i+)if(arrayija)ffx=arrayi;x+;)for(i=0;ia)ffx=arrayi;x+;)for(i=0;in;i+)array ij=ffi;)void MOVE:print()(int q,p=l;for(q=0;qn;q+)(cou tarray q t;if(p%5=0)cout,n,;P+;)void main()(float b=136.2,3,9.1,4.8,74,5.6,9.2,2.3;int m=9;MOVE aa(b,m);aa.average();aa.print();运行结果4,建立一个类M O V E,将数组中最大元
11、素的值与最小元素的值互换。具体要求如下:(1)私有数据成员int*array:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(int b,int m):构造函数,初始化成员数据。voidexchange():输出平均值,并将数组中的元素按要求重新放置。void print():输出一维数组MOVE。:析构函数。(3)在主程序中用数据 21,65,43,87,12,84,44,97,32,55 对该类进行测试。程序源代码#includeclass MOVEint*array;int n;public:MOVE(int b,int m);void exchange();voi
12、d print();MOVE(););MOVE:MOVE(int bJnt m)(n=m;array=new intn;for(int x=0;xn;x+)arrayx=bx;)void MOVE:exchange()float a=0;int i,*pl,*p2;for(i=0;in;i+)a+=arrayi;a/=n;coutThe average of the number is:aendl;pl=p2=&array0;for(i=0;in;i+)(if(arrayi*p2)p2=&arrayi;)i=*pl;*pl=*p2;*p2=i;)void MOVE:print()(int i,
13、num=l;for(i=0;in;i+)(coutarrayit;if(num%5=0)coutn;num+;)MOVE:MOVE()delete array;void main()(intb=21,65,43,87,12,84,44,97z32,55,n=10;MOVEff(b,n);ff.exchange();ff.print();运行结果r -C:UserspzqDesktopDebugCppl.exeThe average of the nunber is:5421 65 43 87 9784 44 12 32 55Press any key to continue5.定义一个类Pal
14、indrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员intn:整型数字。inty:标记是否为回文数。(2)公有成员函数Palindrome(int x):构造函数,根据x 参数初始化数据成员n,y 初始化为0。void huiwen():判断数n 是否为绝对回文数。voidshow():若该数为回文数,则在屏幕显示。(3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome类对象p,用 a 初始化 P,完成对该类的测试。程序源代码#includeclass pal
15、indromeint n;int y;public:palindrome(int x);void huiwen();void show();;palindrome:palindrome(int x)n=x;y=o;)void palindrome:huiwen()(intb20,c50,m,i,p=0,tl=l,t2=l;m=n;for(i=0;m0;m/=10)(P+;bi=m%10;i+;for(i=0;i0;m/=2)P+;ci=m%2;i+;)for(i=0;ip;i+)if(ci!=cp-i-l)(t2=0;break;)if(tl&t2)y=l;)void palindrome:s
16、how()(if(y=0)cout”该数不是回文数!endl;else cout”该回文数是:nendl;)void main()(int a;cout“输入 a 的值“endl;cina;palindrome p(a);p.huiwen();p.show();)运行结果:C:UserspzqDesktopDebugCppl.exe输入a的值12345654321该数不绝对是回文数!Press any key to continue6.定义一个字符串类S tring,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。具体要求如下:(
17、1)私有数据成员char*str;inty:标记是否为回文字符串。(2)公有成员函数String(char*s):构造函数,用给定的参数s 初始化数据成员str。y 初始化为0。void huiwen():判断str所指向的字符串是否为回文字符串。void show():在屏幕上显小字符串。(3)在主程序中定义字符串char s=n ababcedbaba”作为原始字符串。定义一个String类对象te s t,用 s 初始化te s t,完成对该类的测试。程序源代码#include#includeclass stringchar*str;int y;public:string(char*s)
18、;void huiwen();void show(););string:string(char*s)(str=new charstrlen(s);strcpy(str,s);y=o;)void string:huiwen()(char*pl,*p2;p2=pl=str;for(int i=O;stri;i+zp2+);p2一;for(;pl!=p2;pl+,p2-)(if(*pl!=*p2)y=O;break;elsey=i;)void string:show()(cout”字符串为:,/strendl;if(y=0)cout 字符串不是回文数!endl;else coutyendl;void
19、 main()(char s=ababced baba;string test(s);test.huiwen();test.show();)运行结果:1*C:UserspzqDesktopDebugCppl.exeD 回字符串为:ababcedbaba季特雷京是回文数!Press any key to continue7.建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。具体要求如下:(1)私有数据成员int(*p)20:指向按照折叠规律存放方阵的二维整型数组。int startnum:折
20、叠方阵的起始数。intn:存放方针的层数。(2)公有成员函数PHALANX(int s,intm):构造函数,初始化成员数据。void process():生成起始数为startnum的 n 行方阵。void print():输出折叠方阵。PHALANX。:析构函数。(3)在主程序中对该类进行测试。程序源代码#include#includeclass phalanxint(*p)2O;int starnum;int n;public:phalanx(int s,int m);void process();void print();phalanx();;phalanx:phalanx(int s
21、,int m)starnum=s;n=m;)void phalanx:process()int num=starnum;int y=n,i,j,x;p=new int2O2O;for(x=0;xy;x+)(for(i=0,j=x;i=0;j-)pij=num;num+;)void phalanx:print()(int i,j,m=0;for(i=0;in;i+)(for(j=0;jn;j+)(coutsetw(5)pij;)coutn;)phalanx:phalanx()(delete p;)void main()(int s,m;coutvc输入 s 和 m 的值endl;cinsm;ph
22、alanx pp(s,m);pp.process();PP-print();运行结果 *C:UserspzqDesktopDebugCppl.exe输入s和m的值1 612510172643611182?987121928161514132029252423222130363534333231Pressany key tocontinue8.建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。具体要求如下:(1)私有数据成员int a20 20:二维整型数组存放螺旋方阵。int startnum:
23、螺旋方阵的起始数。intn:存放方针的层数。(2)公有成员函数MATRIX(int s,int m):构造函数,初始化成员数据startnum和 n。void process():生成起始数为startnum的 n 行螺旋方阵。void print():输出螺旋方阵(3)在主程序中定义MATRIX类的对象t 对该类进行测试。程序源代码#include#includeclass matrixint a2020;int starnum;int n;public:matrix(int sjnt m);void process();void print();;matrix:matrix(int sjn
24、t m)starnum=s;n=m;)void matrix:process()int st=starnum;int i,j,x=O,y=n;for(;x=(y-l)/2;x+)(for(i=x,j=x;j(y-x-l);j+)|aij=st;st+;)for(;ix;j-)aij=st;st+;)for(;ix;i-)(aij=st;st+;)if(x=(y-l)/2)aij=st;)void matrix:print()(int i,j;for(i=0;in;i+)(for(j=0;jn;j+)coutsetw(8)aij;coutn;)void main()(int s,m;cout输入
25、 s 和 m 的值 C:UserspzqDesktopDebugCppl,exe口 回输入s和m的值1 71234567242526272829823404142433092239484944311021384746453211203?363534331219181716151413Press any keytocontinue9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。具体要求如下:(1)私有数据成员char*str:指向要统计的字符串。char(*p)2:动态分配二维空间,用以存放s tr所指字符串中出现的字符及其出现的次数(次数在存放时,用该
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 程序设计 实践
限制150内