欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++程序设计与实践.docx

    • 资源ID:68461426       资源大小:288.88KB        全文页数:69页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++程序设计与实践.docx

    江苏科技大学课程实践报告设计题目:程序设计(VC+)实践设计时间:至学 院:专业班级:学生姓名:学号指导老师:1.试建立一个类PP,求出下列多项式的前n项的值。具体要求如下:(1)私有数据成员int n:前若干项的项数。double x:存放x的值。double *p:根据n的大小动态申请存放Pn(x)前n项的数组空间。(2)公有成员函数PP(int num,double xl):构造函数,初始化数据成员n和x,使p指向动态申请的数组空 间。PP():析构函数,释放p指向的动态内存空间。double fun(int nl,double x):递归函数,用于求多项式的第nl项。注意:将递归公式中 的n用作函数参数。本函数供process函数调用。void process():完成求前n项的工作,并将它们存放到p指向的动态数组中。void show():输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3)在主函数中完成对该类的测试。先输入num和xl,并定义个PP类的对象items, 用num和xl初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num 项的值。程序源代码#include<iostream.h>class ppint n;double x;double *p;public:pp(int num,double xl);PP();double fun(int nl,double x);void process();void show(););pp:pp(int num,double xl)(n=num;x=xl;p=new doublenum+l;)pp:pp()delete p;)double pp:fun(int nl,double x)if(nl=O)return 1;if(nl=l)return x;if(nl>l)return (2*nl-l)*x*fun(nl-l,x)-(nl-l)*fun(nl-2,x)/nl;)void pp:process()int i;for(i=0;i<=n;i+)*(p+i)=fun(i,x);)void pp:show()(cout«,n=,«n«At,«,x=H«x«endl;fbr(int i=0,m=l;i<n;i+,m+)(cout«*(p+i)«*t,;if(m%4=0)cout«'nr;)void main()(int num;double xl;cout«Mput in num and xl "vvendl;cin»num»xl;pp items(num,xl);items.process();items.show();)运行结果2.试建立一个类SP,求,另有辅助函数power(mm)用于求。 具体要求如下:(1)私有成员数据。int n, k:存放公式中n和k的值:(2)公有成员函数。SP(int nl,int kl):构造函数,初始化成员数据n和匕int power(int m, int n): 求 mn<>int fun():求公式的累加和。void show():输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。程序源代码#include<iostream.h>class SPint n,k;public:SP(int nljnt kl);int power(int m,int n);int fun();void show(););SP:SP(int nljnt ml)(n=nl;k=ml;int SP:power(int mjnt n)int i;if(n=O)return 1;elsefor(i=l;i<n;i+)m*=m;return m;)intSP:fun()(int y=Ozx;for(x=l;x<=n;x+) y+=power(x,k);return y;void SP:show()coutcv”前 n 项的和为:"«fun()«endl;void main()int nlzkl;cout<输入nl和kl的值,<<endl;cin»nl»kl;SPs(nlzkl);s.fun();s.show();运行结果:3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平 均值的兀素放到数组的右边。具体要求如下:(1)私有数据成员float array20: 维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(float b,int m):构造函数,初始化成员数据。void average():输出平均值,并将数组中的元素按要求重新放置。void print():输出维数组。(3)在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试。程序源代码#include<iostream.h>class 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;i<m;i+) arrayij=bij;void MOVE:average()(int i,x;float a=0;for(i=0;i<n;i+) a+=arrayi;a/=n;cout v v ” 平均值为 ” vvavvendl;float ff20;for(i=0,x=0;i<n;i+4-) if(arrayi<a) (ffx=arrayi;x+;)for(i=0;i<n;i+) if(arrayi>a) (ffx=arrayil;x+;)for(i=0;i<n;i+) arrayi=ffij;void MOVE:print()(int q,p=l;for(q=0;q<n;q+) (cou t«array qj«*t *; if(p%5=0)cou t«*n P+;)void main()(float b= 1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,23;int m=9;MOVE aa(b,m);aa.average(); aa.print();)运行结果I *C:U serspzqDeskto pDe bu gC ppl.exe"平均值为5.433331.334.82.36.29.17.45.69.2Pressany key to continue4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 具体要求如下:(1)私有数据成员int * array: 维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(int b,int m):构造函数,初始化成员数据。voidexchan():输岀平均值,并将数组中的元素按要求重新放置。void print():输出维数组。MOVE():析构函数。(3)在主程序中用数据21,65,43,87,12,84,44,97,32,55)对该类进行测试。 程序源代码#include<iostream.h>class MOVEint *array;int n;public:MOVE(intb,intm);void exchange();void print();-MOVE();;MOVE:MOVE(int b,int m)n=m;array=new intn;for(int x=0;x<n;x+) arrayx=bx;)void MOVE:exchange()float a=0;int i,*pl,*p2;for(i=0;i<n;i+)a+=arrayi;a/=n;cout«"The average of the number is:"«a«endl;pl=p2=&array0;for(i=0;i<n;i+)(if(arrayi<*pl)pl=&arrayi;if(arrayi>* p2)p2=&arrayi;i=*pl;*pl=*p2;*p2=i;)void MOVE:print()int iznum=l;for(i=0;i<n;i+)(cout«arrayi«'t'if(num%5=0)cout«'n'num+;)MOVE:-MOVE()delete array;void main()(int b=21,65,43,87,12,84,44,97,32,55,n=10;MOVE ff(b,n);ff.exchange();ff.print();)运行结果 *C:UserspzqDesktopDebugCppl.exe"The average of the number is:54 21654387978444123255Press any key to continue5.定义个类Palindrome»实现绝对回文数。设计个算法实现对任意整型数字判断是否 为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员intn:整型数字。inty:标记是否为回文数。(2)公有成员函数Palindrome (int x);构造函数,根据x参数初始化数据成员n, y初始化为0。void huiwen ():判断数n是否为绝对回文数。void show():若该数为回文数,则在屏幕显示。(3)在主程序中定义int a,由键盘输入数字。定义个Palindrome类对象p,用a初始 化P,完成对该类的测试。程序源代码#include<iostream.h>class palindromeint n;int y;public:palindrome(int x);void huiwen();void show(););palindrome:palindrome(int x)n=x;y=o;)void palindrome:huiwen()(int b20,c50,m,i,p=0,tl=l,t2=l;m=n;for(i=0;m>0;m/=10) (P+;bi=m%10;i+;)for(i=0;i<p;i+) if(bi!=bp-i-l) (tl=0;break;for(i=0,m=n,p=0;m>0;m/=2)P+;ci=m%2;i+;)for(i=0;i<p;i+)if(ci!=cp-i-l)|t2=0;break;)if(tl&&t2)y=l;)void palindrome:show()(if(y=0)cout<<"该数不是回文数! "«endl; elsecout该回文数是:"«n«endl;void main()(int a;coutc输入a的值"<<endl;cin»a;palindrome p(a);p.huiwen();p.show();)运行结果: ' 'C:UserspzqDesktopDebugCppl.exe"输入a的值该数不绝对是回文数!Press any key to continue6 .定义个字符串类String«实现判断该字符串是否为回文字符串。所谓回文字符串,是 指该字符串左右对称。例如字符串“12332是回文字符串。具体要求如下:(1)私有数据成员char *str;int y:标记是否为回文字符串。(2)公有成员函数String (char *s):构造函数,用给定的参数s初始化数据成员str。y初始化为0。void huiwen ():判断str所指向的字符串是否为回文字符串。void show():在屏幕上显示字符串。(3)在主程序中定义字符串char s=" ababcedbaba”作为原始字符串。定义个String 类对象test,用s初始化test,完成对该类的测试。程序源代码#include<iostream.h>#include<string.h>class stringchar *str;int y;public:string(char *s);void huiwen();void show(););string:string(char *s)(str=new charstrlen(s);strcpy(strzs);y=o;void string:huiwen()(char *pl,*p2;p2=pl=str;for(int i=O;stri;i+,p2+);P2-;for(;pl!=p2;pl+/p2-)(if(*pl!=*p2)y=O;break;elsey=i;)void string:show()(cout<字符串为:/z«str«endl;if(y0)cout字符串不是回文数! "«endl;else cout«y«endl;)void main()(char s 二" ababced baba"string test(s);test.huiwen();test.show();)运行结果: "C:UserspzqDesktopDebugCppl.exe"子将中$ : ababcedbaba手转雷不是回文数!Press any key to continue7 .建立一个类PHALANX,生成并显示个折叠方阵。折叠方阵如下图所示。折叠方阵的 生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。具体要求如下:(1)私有数据成员int(*p)2O:指向按照折叠规律存放方阵的二维整型数组。int startnum:折叠方阵的起始数。intn:存放方针的层数。(2)公有成员函数PHALANX (int s, int m):构造函数,初始化成员数据。void process():生成起始数为startnum的n行方阵。void print():输出折叠方阵。 PHALANX():析构函数。(3)在主程序中对该类进行测试。程序源代码#include<iostream.h>#include<iomanip.h>class phalanxint(*p)2O;int starnum;int n;public:phalanx(int s,int m);void process();void print();phalanx(););phalanx:phalanx(int s,int m)starnum=s;n=m;)void phalanx:process()(int num=starnum;int y=n,i,j,x;p=new int2020;for(x=0;x<y;x+)(for(i=0,j=x;i<x;i+)|pij=num;num+;for(;j>=0;j-)(pij=num;num+;)void phalanx:print()(int i,j,m=0;for(i=0;i<n;i+)(for(j=0;j<n;j+)(cout«setw(5)«pij;cout«'n')phalanx:phalanx()|delete p;void main()(int s,m;cout«"输入 s 和 m 的值"<<endl;cin»s»m;phalanx pp(s,m);pp.process();pp.print();)运行结果8 .建立一个MATRIX,生成并显示个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵 的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。具体要求如下:(1)私有数据成员int a20 20:二维整型数组存放螺旋方阵。int startnum:螺旋方阵的起始数。int n:存放方针的层数。(2)公有成员函数MATRIX (int s, int m):构造函数,初始化成员数据startnum和n。void process():生成起始数为startnum的n行螺旋方阵。void print():输出螺旋方阵。(3)在主程序中定义MATRIX类的对象t对该类进行测试。程序源代码#include<iostream.h>#include<iomanip.h>class matrixinta2020;int starnum;int n;public:matrix(int sjnt m);void process();void print();;matrix:matrix(int sjnt 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=xj=x;j<(y-x-l);j+)|aij=st;st+;)for(;i<(y-x-l);i+)(aij=st;st+;)for(;j>x;j-)aij=st;st+;)for(;i>x;i-)aij=st;st+;)if(x=(y-l)/2)aij=st;)void matrix:print()(int i,j;for(i=0;i<n;i+)(for(j=0;j<n;j+)cout«setw(8)«aij; cout«'n')void main()|int s,m;cout输入s和m的值”"endl;cin»s»m;matrix pp(s,m); pp.process(); PPprint();运行结果9 .定义个字符串类CString,并设计个算法对该串中各个不同字符出现的频率进行统计。 具体要求如下:(1)私有数据成员char*str:指向要统计的字符串。char (*p)2J:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的 次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符 对应的ASCII值即可)。int size;存放字符串中出现的所有不同的字符的个数。(2)公有成员函数CString (char *s):根据s参数初始化数据成员str; p和size初始值为。void Count(): p根据s所指字符串长度分配空间。然后把str所指字符串中的每个字符 放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求 得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其 出现次数重新放回P数组(提示:可以借助临时数组或指针来实现)。void Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。-CStringO;糅放动态分配的空间。(3)在主程序中定义字符串charsabdabcdesffffd定义个CString类对象test, 用s以初始化test,完成对该类的测试。程序源代码#include<iostream.h>#include<string.h>class cstringchar*str;char(*p)2;int size;public:cstring(char *s);void count();void show();cstring(););cstring:cstring(char*s)P=0;size=0;str=s;void cstring:count()p=new charstrlen(str)2;char n;char *pl,*p2;for(int i=O;stri;i+)n='0'pl=&stri;for(int m=0;strm;m+)(p2=&strm;if(*pl=*p2)n+;p2+;piO=stri;pil=n;void cstring:show()for(int i=O;i<strlen(str);i+)(intfor(m=0;m<i;m+)(if(pm0=pi0)(x=0;break;)if(x=l)cout«pi0«'t'«(int)pil«endl;)cstring:cstring()delete p; void main()chars="abdabcdesffffd"cstring test(s);test.count();test.show();10.定义个字符串类CString,并设计一个算法实现,给定关健字strl在字符串str中出现 时用关键字str2进行替换的功能。具体要求如下:(1)私有数据成员char *str;原始字符串。char *strl;冃标关键字。char *str2i替换关键字。int flagi标记替换是否完成替换。(2)公有成员函数CString (char *s,char si ,char *s2)Z用给定的参数s、si和s2相对应的初始化数据成 员str, str!和str2o flag设置缺省void Replace ():判断str字符串中是否出现strl,若出现就用str2替换,否则什么都不 做。若替换成功了标记flag为1,若替换不成功则标记flag为0。voidShowO :若替换成功,则在屏幕上显示目标关键字、替换关键字和替换后的原始 字符串;若不成功则显示原始字符串。-CStringO :样放动态分配的空间。(3) 在主程序中定义字符串 char s=w I am student, you are student too, we are all student.”作为原始字符串,定义charsl=" student”作为目标关键字,定义char s2= "teacher" 作为替换关键字。定义个CString类对象test,用s, si和s2初始化test,完成对该类的测 试。程序源代码#include<iostream.h>#include<string.h>class cstringchar *str;char *strl;char *str2;int flag;public:cstring(char*szchar sl,char *s2);void replace();void show();cstring();;cstring:cstring(char*s,char sl,char *s2)(str=new charstrlen(s)+l;strl=new charstrlen(sl)+l;str2=new charstrlen(s2)+l;strcpy(str;s);strcpy(strl,sl);strcpy(str2,s2);flag=O;void cstring:replace()int i/nl/n2/y=l;for(i=0;stri;i+)(if(stri=strlO)(for(nl=i/n2=0;strln2;nl+/n2+)if(strnl!=strln2)| |(strnl='O')y=o; break; )if(y=i)(char pp100;for(int x=O/p=i;x<(strlen(strl);p+/x+) strp=str2x; flag=l;)void cstring:show()if(flag=l) cout改后” <<str<<endl;else cout<< “未改" v<str«endl;)cstring:cstring()delete str;delete strl;delete str2;void main()char s="l am student,you are student too,we are all student."char sin'student"char s2 。=”teacher”;cstring test(s,sl,s2);test.replace();test.show();运行结果 *C:UserspzqDesktopDebugCppl.exe"改后I an teacher,srou are teacher too,we are all teacher. Press any key to continue11.建立一个STRING,将一个字符串交叉插入到另个字符串中(假定两字符串等长)。例如将字符串“abcde” 交叉插入字符串“ABCDE ”的结果为"aAbBcCdDeE ”或 "AaBbCcDdEe".具体要求如下:(1)私有数据成员charstrl(80:存放被插入的字符串。charstr240:存放待插入的字符串。(2)公有成员函数STRING (char *sl, char *s2 ):构造函数,用 si 和 s2 初始化 strl 和 str2。void process():将str2中的字符串插入到strI中。void print():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。 程序源代码#include<iostream.h>#include<string.h>class STRINGchar strl80;char str240;public:STRING(char *sl,char *s2);void process();void print(););STRING:STRING(char*sl,char *s2)(for(int i=0;i<80;i+)strli=sli;for(int j=0;j<40;j+)str2j=s2j;)void STRING:process()(char s40;strcpy(s,strl);int i=0,j=0;while(str2i)(strlj+=str2i;strlj+=si;i+;)strlj='O') void STRING:print()|cout交叉后的字符串为: cout«strl«endl;) void main()(char strl80,str240;cout输入字符串!"«end!;cin.getline(strl,39);coutv"输入字符串2"«endl;cin.getline(str2,39);STRING test(strlzstr2);test.process();test.print();)运行结果 "C:UserspzqDesktopDebugCppl.exe*输入字符串1abcdefg输入字符串2ABCDEPG交叉后的字符串为:AaBbCcDdEeFfGgPress any key to continue12.建立一个STRING,将一个字符串交叉插入到另个字符串中(假定两字符串不等长)。 例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或 “AaBbCcDdEeFG”。具体要求如下:(1)私有数据成员charstrl60:存放被插入的字符串。charstr240:存放待插入的字符串。charstr3 100:存放插入后的字符串。(2)公有成员函数STRING (char *s 1, char *s2 ):构造函数,用 si 和 s2 初始化 strl 和 str2。void process():将str2中的字符串插入到str!中,存放到str3中。void print():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。程序源代码#include<iostream.h>#include<string.h>class STRINGchar strl60;char str240;char str3100;public:STRING(char *slzchar *s2);void process();void print();;STRING:STRING(char *sl,char *s2) for(int i=0;i<60;i+) strli=sli;for(int j=0;j<40;j+) str2j=s2j;)void STRING:process()int i=O,j=O,x;while(strli&&str2i)str3j+=str2i;str3j+=strli;i+;)x=i;if(str2x) while(str2x) str3j+=str2x+;if(strli) while(strli) str3j+=strli+;str3j+='O,;)voidSTRING:print()coutvc"合并后的字符串为:cout«str3«endl;void main()char strl60,str240;cout输入字符串lH«endl;cin.getline(strl,59);cout输入字符串2"«endl;cin.getline(str2,39);STRING test(strlzstr2);test.process();test.print();)运行结果 "C:UserspzqDesktopDebugCppl.exe输入字符串1abcdefg输入字符串2ABCDEFGHIJKLMN合并后的字符串为:AaBbCcDdEeFfGgH IJKLMNPress any key to continue13 .建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元 素移到最前面。具体要求如下:(1)私有数据成员int array20: 一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(int b,int m):构造函数,初始化成员数据。void change():进行循环换位。void print():输出维数组。(3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。程序源代码#include<iostream.h>class MOVEint array20;int n;public:MOVE(int bJnt m);void change();void print();;MOVE:MOVE(int bJnt m)n=m;for(int i=0;i<n;i+) arrayi=bi;)void MOVE:change()int a20;for(int i=0;i<n-3;i+)ai+3=arrayi;aO=arrayi+;al=arrayi+;a2=arrayi;for(i=0;i<n;i+) arrayi=ai;void MOVE:print()(for(int i=0;i<n;i+)cout«arrayi<<'t:'cout«endl;void main()intb20=

    注意事项

    本文(c++程序设计与实践.docx)为本站会员(无***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开