vc课程实践正确答案.doc_第1页
vc课程实践正确答案.doc_第2页
vc课程实践正确答案.doc_第3页
vc课程实践正确答案.doc_第4页
vc课程实践正确答案.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、江苏科技大学课程实践报告设计题目 :程序设计 (VC+)实践设计时间 :至学院:专业班级 :学生姓名 :学号指导老师 :1试建立一个类PP,求出下列多项式的前n 项的值。具体要求如下:(1)私有数据成员int n:前若干项的项数。double x:存放 x 的值。double *p:根据 n 的大小动态申请存放Pn(x)前 n 项的数组空间。(2)公有成员函数PP(int num,double x1):构造函数,初始化数据成员n 和x,使p 指向动态申请的数组空间。 PP():析构函数,释放p 指向的动态内存空间。double fun(int n1,double x):递归函数,用于求多项式的

2、第 n1 项。注意:将递归公式中的n 用作函数参数。本函数供process 函数调用。void process( ):完成求前n 项的工作,并将它们存放到p 指向的动态数组中。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(in

3、t 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;

4、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;coutput in num and x1numx1;pp items(num,x1);();();运行结果2试建立一个类SP,求,另有辅助函数power(m,n)用于求。具体要求如下:(1)私有成员数据。int n, k:存放公式中n 和k 的值;(2)公有成员函数。SP(int n1,int k1)int power(int

5、m, int n):构造函数,初始化成员数据:求 mn。n 和k。int fun( )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 k1)n=n1;k=k1;int SP:power(int m,int n)int i;if(n=0)return 1;elsefor(i=1;in;i+)m*=m;retu

6、rn 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 输入 n1 和 k1 的值 n1k1;SP s(n1,k1);();();运行结果:3建立一个类 MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员float array20:一维整型数组。int n:数组中元素的个数。(2)公有成员函数MOVE(float b,

7、int m):构造函数,初始化成员数据。void average():输出平均值,并将数组中的元素按要求重新放置。void print():输出一维数组。(3)在主程序中用数据,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+)arrayi=bi;void MOVE:average()int i,x;float a=0;for(i=0;

8、in;i+)a+=arrayi;a/=n;cout 平均值为 aendl;float ff20;for(i=0,x=0;in;i+)if(arrayia)ffx=arrayi;x+;for(i=0;ia)ffx=arrayi;x+;for(i=0;in;i+)arrayi=ffi;void MOVE:print()int q,p=1;for(q=0;qn;q+)coutarrayqt;if(p%5=0)coutn;p+;void main()float b=,3,;int m=9;MOVE aa(b,m);();();运行结果4建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要

9、求如下:(1)私有数据成员int *array:一维整型数组。int n:数组中元素的个数。(2)公有成员函数MOVE(int b,int m):构造函数,初始化成员数据。void exchange():输出平均值,并将数组中的元素按要求重新放置。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();void print();MO

10、VE();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;coutThe average of the number is: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+

11、)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);();();运行结果5定义一个类Palindrome ,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员int n:整型数字。int y: 标记是否为回文数。(2)公有成员函数Palindrome (int x):构造函数,根据x 参数初始化数据成员

12、n, yvoid huiwen ():判断数n 是否为绝对回文数。void show( ):若该数为回文数,则在屏幕显示。( 3)在主程序中定义int a,由键盘输入数字。定义一个Palindrome初始化 p,完成对该类的测试。程序源代码初始化为类对象0。p,用a#includeclass palindromeint n;int y;public:palindrome(int x);void huiwen();void show();palindrome:palindrome(int x)n=x;y=0;void palindrome:huiwen()int b20,c50,m,i,p=0,

13、t1=1,t2=1;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-1)t2=0;break;if(t1&t2)y=1;void palindrome:show()if(y=0)cout该数不是回文数! endl;else cout该回文数是: nendl;void main()int a;cout 输入 a 的值 a;palindrome p(a);();();运行结果:6定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符

14、串左右对称。例如字符串“123321”是回文字符串。具体要求如下:( 1)私有数据成员char *str;int y:标记是否为回文字符串。( 2)公有成员函数String (char *s)void huiwen ()void show( ):构造函数,用给定的参数s 初始化数据成员:判断 str所指向的字符串是否为回文字符串。:在屏幕上显示字符串。str。y初始化为0。( 3)在主程序中定义字符串char s=” ababcedbaba ”作为原始字符串。定义一个String类对象 test ,用 s 初始化 test ,完成对该类的测试。程序源代码#include#includeclas

15、s stringchar *str;int y;public:string(char *s);void huiwen();void show();string:string(char *s)str=new charstrlen(s);strcpy(str,s);y=0;void string:huiwen()char *p1,*p2;p2=p1=str;for(int i=0;stri;i+,p2+);p2-;for(;p1!=p2;p1+,p2-)if(*p1!=*p2)y=0;break;elsey=1;void string:show()cout”字符串为:” strendl;if(y=

16、0)cout字符串不是回文数! endl;else coutyendl;void main()char s=ababcedbaba;string test(s);();();运行结果:7建立一个类 PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。具体要求如下:(1)私有数据成员int (*p)20:指向按照折叠规律存放方阵的二维整型数组。int startnum:折叠方阵的起始数。int n:存放方针的层数。(2)公有成员函数PHALANX (int s, int m ):构造函数,初始化成员数据

17、。void process():生成起始数为startnum的 n 行方阵。void print():输出折叠方阵。 PHALANX( ) :析构函数。( 3)在主程序中对该类进行测试。程序源代码#include#includeclass phalanxint(*p)20;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

18、;int y=n,i,j,x;p=new int2020;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;cout 输入 s 和 m的值 sm;phalanx pp(s,m);();();运行结果8建立一个 MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开

19、始依次递增,按顺时针方向从外向里旋转填数而成。具体要求如下:(1)私有数据成员int a20 20int startnum:二维整型数组存放螺旋方阵。:螺旋方阵的起始数。int n:存放方针的层数。(2)公有成员函数MATRIX (int s, int m ):构造函数,初始化成员数据startnumvoid process():生成起始数为startnum的 n 行螺旋方阵。void print():输出螺旋方阵。和 n。( 3)在主程序中定义 MATRIX类的对象 t 对该类进行测试。程序源代码#include#includeclass matrixint a2020;int starnu

20、m;int n;public:matrix(int s,int m);void process();void print();matrix:matrix(int s,int m)starnum=s;n=m;void matrix:process()int st=starnum;int i,j,x=0,y=n;for(;x=(y-1)/2;x+)for(i=x,j=x;j(y-x-1);j+)aij=st;st+;for(;ix;j-)aij=st;st+;for(;ix;i-)aij=st;st+;if(x=(y-1)/2)aij=st;void matrix:print()int i,j;f

21、or(i=0;in;i+)for(j=0;jn;j+)coutsetw(8)aij;coutn;void main()int s,m;cout 输入 s 和 m的值 sm;matrix pp(s,m);();();运行结果9定义一个字符串类 CString ,并设计一个算法对该串中各个不同字符出现的频率进行统计。具体要求如下:( 1)私有数据成员char *str:指向要统计的字符串。char (*p)2:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数 (次数在存放时,用该数字对应的ASCII 值存放; 在输出次数时,输出该ASCII 字符对应的 ASCII 值即可)。i

22、nt size:存放字符串中出现的所有不同的字符的个数。( 2)公有成员函数CString (char *s):根据 s 参数初始化数据成员str ; p 和 size 初始值为0。void Count() : p 根据 s 所指字符串长度分配空间。然后把str所指字符串中的每个字符放入 p 数组中,设置每个字符的出现次数为1。根据 p 数组统计不同字符出现的频率,并求得 size 的实际大小。 最后根据size 的实际大小, 重新分配p 所指空间, 并把不同字符及其出现次数重新放回p 数组(提示:可以借助临时数组或指针来实现)。void Show():屏幕显示字符串、字符串的每个字符和与之对

23、应的次数。CString():释放动态分配的空间。( 3)在主程序中定义字符串 char s= ” abdabcdesffffd ”。定义一个 CString 类对象test ,用 s 以初始化test ,完成对该类的测试。程序源代码#include#includeclass 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

24、charstrlen(str)2;char n;char *p1,*p2;for(int i=0;stri;i+)n=0;p1=&stri;for(int m=0;strm;m+)p2=&strm;if(*p1=*p2)n+;p2+;pi0=stri;pi1=n;void cstring:show()for(int i=0;istrlen(str);i+)int m,x=1;for(m=0;mi;m+)if(pm0=pi0)x=0;break;if(x=1)coutpi0t(int)pi1endl;cstring:cstring()delete p;void main()char s=abda

25、bcdesffffd;cstring test(s);();();运行结果10定义一个字符串类CString ,并设计一个算法实现,给定关键字str1 在字符串 str 中出现时用关键字str2进行替换的功能。具体要求如下:( 1)私有数据成员char *str;原始字符串。char *str1;目标关键字。char *str2;替换关键字。int flag;标记替换是否完成替换。( 2)公有成员函数CString (char *s,char s1 ,char *s2):用给定的参数 s、 s1 和 s2相对应的初始化数据成员 str、 str1和 str2。 flag设置缺省 0。void

26、Replace ():判断 str字符串中是否出现 str1 ,若出现就用 str2替换,否则什么都不做。若替换成功了标记flag为 1,若替换不成功则标记flag为 0。void Show( ):若替换成功,则在屏幕上显示目标关键字、替换关键字和替换后的原始字符串;若不成功则显示原始字符串。 CString():释放动态分配的空间。( 3) 在主程序中定义字符串char s= ” Iam student,you are studenttoo,we areall student. ”作为原始字符串,定义char s1=” student”作为目标关键字,定义chars2=”teacher”作为

27、替换关键字。定义一个CString 类对象 test,用 s, s1 和 s2初始化test,完成对该类的测试。程序源代码#include#includeclass cstringchar *str;char *str1;char *str2;int flag;public:cstring(char*s,char s1,char *s2);void replace();void show();cstring();cstring:cstring(char*s,char s1,char *s2)str=new charstrlen(s)+1;str1=new charstrlen(s1)+1;st

28、r2=new charstrlen(s2)+1;strcpy(str,s);strcpy(str1,s1);strcpy(str2,s2);flag=0;void cstring:replace()int i,n1,n2,y=1;for(i=0;stri;i+)if(stri=str10)for(n1=i,n2=0;str1n2;n1+,n2+)if(strn1!=str1n2)|(strn1=0)y=0;break;if(y=1)char pp100;for(int x=0,p=i;x(strlen(str1);p+,x+)strp=str2x;flag=1;void cstring:sho

29、w()if(flag=1) else coutcout 改后 strendl;未改 strendl;cstring:cstring()delete str;delete str1;delete str2;void main()char s=I am student,you are student too,we are all student.;char s1=student;char s2=teacher;cstring test(s,s1,s2);();();运行结果11建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。例如将字符串 “ abcde” 交叉插入字

30、符串 “ ABCDE”的结果为 “ aAbBcCdDeE”或“AaBbCcDdEe”。具体要求如下:(1)私有数据成员char str180char str240:存放被插入的字符串。:存放待插入的字符串。(2)公有成员函数STRING (char *s1, char *s2 ):构造函数,用s1 和 s2void process():将 str2中的字符串插入到str1中。void print():输出插入后的字符串。初始化str1和 str2。( 3)在主程序中定义 STRING类的对象 test 对该类进行测试。程序源代码#include#includeclass STRINGchar

31、str180;char str240;public:STRING(char *s1,char *s2);void process();void print();STRING:STRING(char *s1,char *s2)for(int i=0;i80;i+)str1i=s1i;for(int j=0;j40;j+)str2j=s2j;void STRING:process()char s40;strcpy(s,str1);int i=0,j=0;while(str2i)str1j+=str2i;str1j+=si;i+;str1j=0;void STRING:print()cout 交叉后

32、的字符串为: ;coutstr1endl;void main()char str180,str240;cout 输入字符串 1endl;(str1,39);cout 输入字符串 2endl;(str2,39);STRING test(str1,str2);();();运行结果12建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。例如将字符串“abcde ”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。具体要求如下:(1)私有数据成员char str160:存放被插入的字符串。char str240:存放待插入

33、的字符串。char str3100 :存放插入后的字符串。(2)公有成员函数STRING (char *s1, char *s2 ):构造函数,用s1 和 s2 初始化 str1和 str2void process():将 str2中的字符串插入到str1中,存放到str3中。void print():输出插入后的字符串。( 3)在主程序中定义 STRING类的对象 test 对该类进行测试。程序源代码#include#includeclass STRINGchar str160;char str240;char str3100;public:STRING(char *s1,char *s2)

34、;void process();void print();STRING:STRING(char *s1,char *s2)for(int i=0;i60;i+)str1i=s1i;for(int j=0;j40;j+)str2j=s2j;void STRING:process()int i=0,j=0,x;while(str1i&str2i)str3j+=str2i;str3j+=str1i;i+;x=i;if(str2x) while(str2x) str3j+=str2x+;if(str1i) while(str1i) str3j+=str1i+;str3j+=0;void STRING:

35、print()cout 合并后的字符串为: ;coutstr3endl;void main()char str160,str240;cout 输入字符串 1endl;(str1,59);cout 输入字符串 2endl;(str2,39);STRING test(str1,str2);();();运行结果13建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。具体要求如下:(1)私有数据成员int array20:一维整型数组。int n:数组中元素的个数。(2)公有成员函数MOVE(int b,int m):构造函数,初始化成员数据。void chang

36、e()void print():进行循环换位。:输出一维数组。(3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。程序源代码#includeclass MOVEint array20;int n;public:MOVE(int b,int m);void change();void print();MOVE:MOVE(int b,int m)n=m;for(int i=0;in;i+)arrayi=bi;void MOVE:change()int a20;for(int i=0;in-3;i+)ai+3=arrayi;a0=arrayi+;a1=ar

37、rayi+;a2=arrayi;for(i=0;in;i+)arrayi=ai;void MOVE:print()for(int i=0;in;i+)coutarrayit;coutendl;void main()int b20=21,65,43,87,12,84,44,97,32,55;MOVE p(b,10);();();运行结果14建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。具体要求如下:(1)私有数据成员char *array:一维字符数组。int n:数组中元素的个数。(2)公有成员函数MOVE(char b,int m):构造函数,初始化成员数据。void

38、change():进行排序换位。void print():输出一维数组。MOVE():析构函数。( 3)在主程序中用数据 fdsUFfsTjfsKFEkWC 对该类进行测试。程序源代码#include#includeclass movechar*array;int n;public:move(char b,int m);void change();void print();move();move:move(char b,int m)array=new charstrlen(b)+1;n=m;strcpy(array,b);void move:change()char *p;int m=0;p=new charstrlen(array);strcpy(p,array);for(int i=0;pi;i+)if(pi=A)arraym+=pi;for(i=0;pi;i+)if(pi=a)arraym+=pi;void move:print()cout 改后字符串为: arrayendl;move:move()delete array;void m

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论