已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.C+课程实验报告1340601119 林子扬1.试定义一个类STR,实现求两个字符串的交集。两个字符串的交集是指同时属于两个字符串的字符的集合,且该集合中的字符各不相同。具体要求如下: (1)私有数据成员: char s150,s250,s050;字符串s0用于存放字符串s1和字符串s2的交集。 (2)公有成员函数: STR(char *p1,char *p2);构造函数,分别用参数p1和p2初始化成员数组s1和s2。 int isin(char *p,char c);判断字符c是否出现在字符串p中,如果是,则返回值为1,否则返回0。 void fun();求成员数组s1和s2的交集,并将结果存放在成员数组s0中。提示:利用函数isin(char *,char)依次判断一个字符串中的每个字符是否包含于另一个字符串中,如果包含,且该字符不包含于成员数组s0中,则将该字符加入到成员数组s0中。 void print();按输出示例的格式输出所有数据成员。 (3)在主函数中对该类进行测试。 输出示例: 字符串1:abcdef123abc12 字符串2:acef123ace124 两个字符串的交集:acef123源程序代码:#include#includeclass STRchar s050,s150,s250;public:STR(char *p1,char *p2);int isin(char *p,char c);void fun();void print();STR:STR(char *p1,char *p2)strcpy(s1,p1);strcpy(s2,p2);s00=0;int STR:isin(char *p,char c)char *p0=p;while(*p0)if(*p0+=c) return 1;/后置自增参与后指向下一位return 0;void STR:fun()char *p0=s0,*p1=s1;while(*p1)if(isin(s2,*p1)&(!isin(s0,*p1)*p0+=*p1;*p0=0;p1+;/*for(char *p1=s1,*p0=s0;*p1;p1+) if(isin(s2,*p1)&(!isin(s0,*p1)*p0+=*p1;*p0=0;*/void STR:print()cout字符串1:s1endl;cout字符串2:s2endl;cout两个字符的交集:s0endl;void main()char str1=abcdef123abc12;char str2=acef123ace124;STR t(str1,str2);t.fun();t.print();运行结果:2.试定义一个类Array,实现由一个数组派生出另一个数组。派生规则如下:新数组的元素取值为原数组中相同位置元素的左、右两个相邻元素前后拼接后形成的整数(左邻元素在前,右邻元素在后)。规定最左(右)列元素的左(右)邻元素为该元素所在行的最右(左)侧的元素。具体要求如下:(1)私有数据成员: int a 34; 原数组。 int b 34; 派生数组。(2) 公有成员函数 Array(int t4,int n);构造函数,利用参数t的前n行元素初始化数据成员a。 int nn(int t1,int t2);返回t1,t2拼接后形成的整数(t1在前,t2在后)。 void fun();按题意生成新数组,并将结果存放到数据成员b中。 void print();按矩阵形式输出成员数组。(3)在主函数中对该类进行测试。输出示例:原数组:41 67 34 069 24 78 5862 64 5 45派生数组:67 4134 670 34415824 6978 2458 78694564 625 6445 562源程序代码:#include#includeclass Arrayint a34;int b34;public:Array(int t4,int n);int nn(int t1,int t2);void fun();void print();Array:Array(int t4,int n)for(int i=0;in;i+)for(int j=0;j4;j+)aij=tij;int Array:nn(int t1,int t2)int t=t2;while(t)t1*=10;t/=10;return t1+t2;void Array:fun()for(int i=0;i3;i+)for(int j=0;j4;j+)int c=j-1;int d=j+1;c=c3?0:d;bij=nn(aic,aid);/56void Array:print()cout原数组:endl;for(int i=0;i3;i+)for(int j=0;j4;j+)coutaijt;coutendl;cout派生数组:endl;for(i=0;i3;i+)for(int j=0;j4;j+)coutbijt;coutendl;void main()int t34=41,67,34,0,69,24,78,58,62,64,5,45;Array sz(t,4);sz.fun();sz.print();运行结果:3.试定义一个类NUM,实现将一维数组中各整数元素去掉其中相同数字后再对数组从小 到大排序。将一个整数去掉相同数字是指:如果一个整数中有相同的数字,则保留从左数起 ,第一次看到的那个数字,而将其他相同的数字去掉。例如:数字12324151中有三个1、两个2,则去掉相同的数字后变为12345。具体要求如下: (1)私有数据成员。 int a 5:存放需处理的数组。 (2)公有成员函数。 NUM(int t,int n):构造函数,用t初始化a,n为t的元素个数。 void sort(int t,int n):将数组t的元素从小到大排序。 int convert(int n):去除n中相同的数字并返回新得到的数。 void fun():将数组a的各元素去除相同的数字后从小到大排列。要求调用函数 convert()和sort()。 void print():输出数组a的所有元素。 (3)在主函数中对该类进行测试。 输入/输出示例(下划线部分为键盘输入): 输入5个整数:1213 65666 22313 12314 34435 处理前的数组为:1213 65666 22313 12314 34435 处理后的数组为:65 123 231 345 1234源程序代码:#includeclass NUMint a5;public:NUM(int t,int n);void sort();int convert(int n);void fun();void print();NUM:NUM(int t,int n)/30for(int i=0;in;i+)ai=ti;void NUM:sort()int i,j,k,t;for(i=0;i4;i+)k=i;for(j=i+1;j5;j+)/40if(aj0;i-)k=n;si=k%10;n/=10for(i=0;i5;i+)for(j=i+1;j5;j+)if(ai=j)for(k=j;k4;k+)ak=ak+1;*/int s5,i=4,j,k=0,t,b,c=0;while(n)si-=n%10;n/=10;for(j=i+1;j4-k;j+)t=j+1;while(t5-k)if(sj=st)for(b=t;b4-k;b+)sb=sb+1;k+;else t+;for(j=i+1;j5-k;j+)c=c*10+sj;return c;void NUM:fun()for(int i=0;i5;i+)ai=convert(ai);sort();void NUM:print()for(int i=0;i5;i+)coutait;coutendl;void main()int s5;cout请输入5个整数:;for(int i=0;isi;NUM t(s,5);cout处理前的数组为:;t.print();t.fun();cout处理后的数组为:;t.print();运行结果:4.试定义一个类STR,统计一个字符串中包含的句子数和单词数,规定单词之间以空格、”,”或”.”分隔,句子以”.”结束,具体要求如下 (1)私有数据成员char *s :指向待统计的字符串int m,n: 分别记录求得的单词数和句子数 (2)公有成员函数STR(char *t): 构造函数,用参数t初始化字符串svoid fun(): 按题意统计单词数,结果存放在数据成员m中,再统计句子数,结果存放在数据成员n中 void print(): 按输出示例的格式输出统计结果 STR(): 析构函数,实现必要的功能 (3)在主函数中对该类进行测试 输出示例: 字符串:I am a student. I am twenty. I com from china. 句子数:3 单词数:11源程序代码:#include#includeclass STRchar *s;int m,n;public:STR(char *t);void fun();void print();STR()delete s;STR:STR(char *t)s=new char strlen(t)+1;strcpy(s,t);void STR:fun()char *p=s;m=0;n=0;while(*p)if(*p=.) n+;if(*p= |*p=;|*p=,|*p=.) m+;while(*p= ) p+;p+;void STR:print()cout字符串:sendl;cout句子数:nendl;cout单词数:mendl;void main()char s100;cin.getline(s,100);STR t(s);t.fun();t.print();运行结果:5.试建立一个类PP,求出下列多项式的前n项的值。 具体要求如下:(1)私有数据成员1.int n:前若干项的项数。2.double x:存放x的值。3.double *p:根据n的大小动态申请存放Pn(x) 前n项的数组空间。(2)公有成员函数1.PP(int num,double x1):构造函数,初始化数据成员n和x,使p指向动态申请的数组空间。2.PP():析构函数,释放p指向的动态内存空间。3.double fun(int n1,double x):递归函数,用于求多项式 的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。4.void process( ):完成求前n项的工作,并将它们存放到p指向的动态数组中。5.void show( ):输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3) 在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。源程序代码:#includeclass ppint n;double x;double *p;public:pp(int num,double x1);pp();double fun(int n1,double x);void process();void show();pp:pp(int num,double x1)n=num;x=x1;p=new doublenum+1;pp:pp()delete p;double pp:fun(int n1,double x)if(n1=0)return 1;if(n1=1)return x;if(n11)return (2*n1-1)*x*fun(n1-1,x)-(n1-1)*fun(n1-2,x)/n1;void pp:process()int i;for(i=0;i=n;i+)*(p+i)=fun(i,x);void pp:show()coutn=ntx=xendl;for(int i=0,m=1;in;i+,m+)cout*(p+i)t;if(m%4=0)coutn;void main()int num;double x1;cout请依次输入num和x1的值numx1;pp items(num,x1);cess();items.show();运行结果:6.试建立一个类SP,求 ,另有辅助函数power(m,n)用于求 。具体要求如下:(1)私有成员数据。1.int n,k:存放公式中n和k的值;(2)公有成员函数。1.SP(int n1,int k1):构造函数,初始化成员数据n和 power(int m, int n):求 fun( ):求公式的累加和。4.void show( ):输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。源程序代码:#includeclass SPint n,k;public:SP(int n1,int k1);int power(int m,int n);int fun();void show();SP:SP(int n1,int m1)n=n1;k=m1;int SP:power(int m,int n)int i;if(n=0)return 1;elsefor(i=1;in;i+)m*=m;return m;int SP:fun()int y=0,x;for(x=1;x=n;x+)y+=power(x,k);return y;void SP:show()cout前n项的和为:fun()endl;void main()int n1,k1;cout输入n和k的值n1k1;SP s(n1,k1);s.fun();s.show();运行结果:7.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有数据成员1.int *array:一维整型数组。2.int n:数组中元素的个数。(2)公有成员函数3.MOVE(int b,int m):构造函数,初始化成员数据。4.void exchange():输出平均值,并将数组中的元素按要求重新放置。5.void print():输出一维数组。6.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();void print();MOVE();MOVE:MOVE(int b,int m)n=m;array=new intn;for(int x=0;xn;x+)arrayx=bx;void MOVE:exchange()float a=0;int i,*p1,*p2;for(i=0;in;i+)a+=arrayi;a/=n;cout数组的平均数为:aendl;p1=p2=&array0;for(i=0;in;i+)if(arrayi*p2)p2=&arrayi;i=*p1;*p1=*p2;*p2=i;void MOVE:print()int i,num=1;for(i=0;in;i+)coutarrayit;if(num%5=0)coutn;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);cout变化前数组为:endl;ff.print();ff.exchange();cout变化后数组为:endl;ff.print();运行结果:8.定义一个类Pal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025西南计算机有限责任公司招聘21人笔试考试参考题库及答案解析
- 2025云南昆明市寻甸县卫生健康系统第二批招聘编外人员40人参考考试试题及答案解析
- 2025四川宜宾临港投资建设集团有限公司下属子公司第五批项目制员工招聘3人备考笔试试题及答案解析
- 2025甘肃省新华书店有限责任公司招聘(57人)模拟笔试试题及答案解析
- 深度解析(2026)《GBT 25781-2010 1-萘胺》(2026年)深度解析
- 深度解析(2026)《GBT 25719-2010电液锤 技术条件》(2026年)深度解析
- 2025福建福清市明德幼儿园招聘笔试考试备考题库及答案解析
- 2025年安徽江淮汽车集团股份有限公司公开招聘工作人员1人考试笔试参考题库附答案解析
- 2025北方自动控制技术研究所招聘43人备考考试试题及答案解析
- 《两、三位数除以一位数》数学课件教案
- 项目分包制合同范本
- (2026.01.01施行)《生态环境监测条例》解读与实施指南课件
- 2025年及未来5年市场数据中国废旧轮胎循环利用市场深度分析及投资战略咨询报告
- 《科研伦理与学术规范》期末考试试题及答案2025
- 2025天津大学管理岗位集中招聘15人考试笔试备考题库及答案解析
- Unit 7 When Tomorrow Comes Section A (1a-1d) 课件 2025-2026学年人教版八年级英语上册
- 2025年影像成像原理考试题库
- 2025年智能制造工厂改造项目可行性研究报告及总结分析
- 国电投面试技巧与实战经验交流
- 律师事务所诉讼案件办案进度及当事人满意度绩效评定表
- 2025年公务员多省联考《申论》题(陕西A卷)及参考答案
评论
0/150
提交评论