1、VC课程实践正确答案1江苏科技大学课程实践报告设计题目: 程序设计(VC+)实践 设计时间: 至 学 院: 专业班级: 学生姓名: 学号 指导老师: 1试建立一个类 PP,求出下列多项式的前 n项的值。具体要求如下:(1)私有数据成员intn:前若干项的项数。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 项的值。程序源代码#i ncludeclass ppint n;double x; double *p;public:pp(i nt nu
3、 m,double x1);pp();double fun (i nt n 1,double x);void process();void show();pp:pp(i nt nu m,double x1)n=num;x=x1;p=new double nu m+1;pp:pp()delete p;double pp:f un (i nt n 1,double x)if(n 1=0)return 1;if(n 1=1)return x;if(n 11)return (2* n1-1)*x*fu n(n 1-1,x)-( n1-1)*fu n(n 1-2,x)/n1; void pp:proce
4、ss()int i;for(i=0;i=n ;i+)*(p+i)=fu n( i,x);void pp:show()coutvv n=n vtvvx=vxvve ndl;for(i nt i=0,m=1;i n ;i+,m+)coutv*(p+i)vvt; if(m%4=0)coutn;void mai n()int num;double x1;coutput in num and x1x1;pp items( nu m,x1);items.process();items.show();运行结果C:Use rsp z qD esfccto pD mb ugCppl. exeput innum
5、and xlDpbFl =6x=S15373053525Pressany kwy to continue2.试建立一个类 SP,求,另有辅助函数 power(m,n)用于求 具体要求如下:(1 )私有成员数据。intn , k:存放公式中n和k的值;(2 )公有成员函数。SP(int n 1,int k1):构造函数,初始化成员数据 n和k。int power(int m, int n):求 mn。int fun():求公式的累加和。void show():输出求得的结果。(3)在主程序中定义对象 s,对该类进行测试。程序源代码#i ncludeclass SPint n ,k;public:
6、SP(i nt n1,int k1);int power(i nt m,i nt n);int fun();void show();SP:SP(i nt n 1,i nt k1)n=n1;k=k1;int SP:power(i nt m,i nt n)int i;if(n=O)return 1;elsefor(i=1;i n ;i+) m*=m;return m;int SP:fu n()int y=0,x;for(x=1;x=n; x+) y+=power(x,k);return y;void SP:show()cout前 n 项的和为:fun()endl;void mai n()int n
7、1,k1;cout输入 n1 和 k1 的值k1;SP s( n1,k1);s.fu n();s.show();运行结果:3建立一个类 MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平 均值的元素放到数组的右边。具体要求如下:(1)私有数据成员float array20:维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(float b,i nt m):构造函数,初始化成员数据。void average。:输出平均值,并将数组中的元素按要求重新放置。void print():输出一维数组。(3)在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.
8、6,9.2,2.3对该类进行测试。程序源代码#i ncludeclass MOVEfloat array20;int n;public:MOVE(float b,i nt m);void average();void prin t();MOVE:MOVE(float b,i nt m)int i;n=m;for(i=0;im;i+)arrayi=bi;void MOVE:average()int i,x;float a=0;for(i=0;i n;i+)a+=arrayi;a/=n;cout平均值为aendl;float ff20;for(i=0,x=0;i n;i+)if(arrayia)f
9、fx=arrayi; x+; for(i=0;i a)ffx=arrayi; x+;for(i=0;i n ;i+) arrayi=ffi;void MOVE:pri nt()int q,p=1; for(q=0;qn; q+)coutarrayqvvt;if(p%5=0)coutn;p+;void mai n()float b=1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3; int m=9;MOVE aa(b,m);aa.average(); aa.pri nt();运行结果d,CUserspzqDeskQpDebugCppl.exEsags直为 5-4333341-3
10、3 4.63-329.17.4 5.62any Icej/ to cont inue4建立一个类 MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1)私有数据成员int *array : 一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(i nt b,i nt m):构造函数,初始化成员数据。void exchange():输出平均值,并将数组中的元素按要求重新放置。void print():输出一维数组。 MOVE():析构函数。(3)在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。 程序源代码#i nclude
11、class MOVEint *array;int n;public:MOVE(i nt b,i nt m);void excha nge();void prin t();MOVE();MOVE:MOVE( int b,i nt m)n=m;array=new intn;for(i nt x=0;x n; x+) arrayx=bx;void MOVE:excha nge()float a=0;int i,*p1,*p2;for(i=0;i n;i+)a+=arrayi;a/=n;coutThe average of the nu mber is:ae ndl; p1=p2=&array0;fo
12、r(i=0;i*p2)p2=&arrayi;i=*p1;*p1=*p2;*p2=i;void MOVE:pri nt()int i,num=1;for(i=0;i n;i+)coutarrayivvt;if(n um%5=0)coutn;nu m+;MOVE:MOVE()delete array;void mai n()int b=21,65,43,87,12,84,44,97,32,55,n=10; MOVE ff(b, n);ff.excha nge();ff.pri nt();运行结果# * C: U s e rspzqDes kto p D e bu gC p pl. exe The
13、average of the numhEr is:5421 65 43 87 97 84 44 12 32 55 Press any kev to continue5定义一个类 Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否 为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员int n :整型数字。int y :标记是否为回文数。(2)公有成员函数Palindrome (int x):构造函数,根据 x参数初始化数据成员 n,y初始化为0。void huiwen ():判断数n是否为绝对回文数。void show():
14、若该数为回文数,则在屏幕显示。(3)在主程序中定义int a,由键盘输入数字。定义一个 Palindrome类对象p,用a初始化p,完成对该类的测试。程序源代码#i ncludeclass pali ndromeint n;int y;public:pali ndrome(i nt x);void huiwe n();void show();pali ndrome:pali ndrome(i nt x)n=x;y=0;void pali ndrome:huiwe n()int b20,c50,m,i,p=0,t1=1,t2=1;m=n;for(i=0;m0;m/=10)p+;bi=m%10;i
15、+;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 pali ndrome:show()if(y=0)cout该数不是回文数! e ndl; else cout该回文数是: ne ndl;void mai n()int a;cout输入 a 的值 a;pali ndrome p(a);p.huiwe n();p.show();运行结果: R C: Use rspzq Deskt o p De bu gC ppl.exe丨u回 A输入艮的值412345654321该数
16、不绝对是回文数!Press any key to continue6.定义一个字符串类 String ,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“ 123321 ”是回文字符串。具体要求如下:(1)私有数据成员char *str;int y :标记是否为回文字符串。(2)公有成员函数String (char *s):构造函数,用给定的参数 s初始化数据成员str。y初始化为0。void huiwen ():判断str所指向的字符串是否为回文字符串。void show():在屏幕上显示字符串。(3)在主程序中定义字符串 char s= ” ababced
17、babd作为原始字符串。 定义一个 String类对象test,用s初始化test,完成对该类的测试。程序源代码#i nclude#i ncludevstri ng.h class stri ngchar *str; int y;public:stri ng(char *s);void huiwe n();void show();stri ng:stri ng(char *s) str=new charstrle n( s);strcpy(str,s);y=0; void stri ng:huiwe n()char *p1,*p2;p2=p1=str;for(i nt i=0;stri;i+,
18、p2+);p2-;for(;p1!=p2;p1+,p2-)if(*p1!=*p2)y=0;break;else y=1; void stri ng:show() cout v”字符串为:” vvstrvve ndl;if(y=0)cout字符串不是回文数! e ndl; else coutvvyvve ndl;void mai n()char s=ababcedbaba;stri ng test(s);test.huiwe n(); test.show();IZZI运行结果:rspzqDe 5 kto pD ebugCppl. exe为 iababcedbaba丨 1. L屛?串不是回文数!.
19、Press an if key to con 七:in me7.建立一个类 PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的 生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。具体要求如下:(1)私有数据成员int (*p)20:指向按照折叠规律存放方阵的二维整型数组。int start num :折叠方阵的起始数。int n :存放方针的层数。(2)公有成员函数PHALANX (i nt s, i nt m ):构造函数,初始化成员数据。void process():生成起始数为 start num的n行方阵。void print():输出折叠
20、方阵。 PHALANX():析构函数。(3 )在主程序中对该类进行测试。程序源代码#i nclude#i ncludevioma nip.hclass phala nxin t(*p)20;int star num;int n;public:phala nx(i nt s,i nt m);void process();void prin t();phala nx();phala nx:phala nx(i nt s,i nt m)star num=s;n=m;void phala nx:process()int num=star num;int y=n ,i,j,x;p=new in t202
21、0;for(x=0;xy;x+)for(i=0,j=x;i=0;j-)pij=num; nu m+;void phala nx:pri nt()int i,j,m=0;for(i=0;i n;i+)for(j=0;j n ;j+) coutsetw(5)pij;coutn;phala nx:phala nx()delete p;void mai n()int s,m;cout输入 s 和 m 的值 sm;phala nx pp(s,m);pp.process();pp.pri nt();运行结果CiXUsersXpzqXDesktopVDebugCppLexe输入直和m的值D1 61 2510
22、1726 :4 31118279 8712192816 151413202925 242322213036 3534333231Press an :key tocont inue&建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵 的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。具体要求如下:(1)私有数据成员int a20 20:二维整型数组存放螺旋方阵。int start num :螺旋方阵的起始数。int n :存放方针的层数。(2)公有成员函数MATRIX (int s, i nt m ):构造函数,初始化成员数据 start num
23、和n。void process。:生成起始数为 start num的n行螺旋方阵。void print():输出螺旋方阵。(3)在主程序中定义 MATRIX类的对象t对该类进行测试。 程序源代码#i nclude#i ncludevioma nip.hclass matrixint a2020;int star num;int n;public:matrix(i nt s,i nt m);void process();void prin t();matrix:matrix(i nt s,i nt m)star num=s;n=m;void matrix:process() int st=sta
24、r num;int i,j,x=O,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:pri nt()int i,j;for(i=0;i n;i+)for(j=0;j n ;j+) coutsetw(8)aij; coutn;void mai n()int s,m;cout输入 s 和 m 的值 sm;matrix pp(s,m); pp.process(); pp.pri
25、 nt();运行结果C:U sersp2qDe s kto pD ebu gC ppi. exeH4-dCk I删人直和m白勺值1 7123456724252627282982340414243309223948494431102138474&4532112637363534331219181716151413Pressan i/keytocontinue9.定义一个字符串类 CString ,并设计一个算法对该串中各个不同字符出现的频率进行统计。 具体要求如下:(1)私有数据成员char *str :指向要统计的字符串。char (*p)2:动态分配二维空间,用以存放 str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的 ASCII值存放;在输出次数时,输出该 ASCII字符对应的ASCII值即可)。int
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1