• / 68
  • 下载费用:5 积分  

VC课程实践正确答案.doc

关 键 词:
VC 课程 实践 正确答案
资源描述:
江苏科技大学 课程实践报告设计题目: 程序设计(VC++)实践 设计时间: 至 学 院: 专业班级: 学生姓名: 学号 指导老师: 1.试建立一个类PP,求出下列多项式的前n项的值。 具体要求如下:(1)私有数据成员lint n:前若干项的项数。ldouble x:存放x的值。ldouble *p:根据n的大小动态申请存放Pn(x) 前n项的数组空间。(2)公有成员函数lPP(int num,double x1):构造函数,初始化数据成员n和x,使p指向动态申请的数组空间。l~PP():析构函数,释放p指向的动态内存空间。ldouble fun(int n1,double x):递归函数,用于求多项式 的第n1项。注意:将递归公式中的n用作函数参数。本函数供process函数调用。lvoid process( ):完成求前n项的工作,并将它们存放到p指向的动态数组中。lvoid show( ):输出n和x,并将前n项以每行4个数的形式输出到屏幕上。(3) 在主函数中完成对该类的测试。先输入num和x1,并定义一个PP类的对象items,用num和x1初始化items的成员n和x,调用items的成员函数,求出并输出多项式前num项的值。程序源代码#includeclass pp{int 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 double[num+1];}pp::~pp(){delete []p;}double pp::fun(int n1,double x){if(n1==0)return 1;if(n1==1)return x;if(n1>1)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(){cout<<"n="<>num>>x1;pp items(num,x1);items.process();items.show();}运行结果2.试建立一个类SP,求 ,另有辅助函数power(m,n)用于求 。具体要求如下:(1)私有成员数据。lint n,k:存放公式中n和k的值;(2)公有成员函数。lSP(int n1,int k1):构造函数,初始化成员数据n和k。lint power(int m, int n):求mn。lint fun( ):求公式的累加和。lvoid show( ):输出求得的结果。(3)在主程序中定义对象s,对该类进行测试。程序源代码#includeclass SP{int 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;i>n1>>k1;SP s(n1,k1);s.fun();s.show();}运行结果:3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员lfloat array[20]:一维整型数组。lint n:数组中元素的个数。(2)公有成员函数lMOVE(float b[],int m):构造函数,初始化成员数据。lvoid average():输出平均值,并将数组中的元素按要求重新放置。lvoid print():输出一维数组。(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。程序源代码#includeclass MOVE{float array[20];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;ia){ff[x]=array[i];x++;}for(i=0;iclass MOVE{int *array;int n;public:MOVE(int b[],int m);void exchange();void print();~MOVE();};MOVE::MOVE(int b[],int m){n=m;array=new int[n];for(int x=0;x*p2)p2=&array[i];}i=*p1;*p1=*p2;*p2=i;}void MOVE::print(){int i,num=1;for(i=0;iclass palindrome{int n;int y;public:palindrome(int x);void huiwen();void show();};palindrome::palindrome(int x){n=x;y=0;}void palindrome::huiwen(){int b[20],c[50],m,i,p=0,t1=1,t2=1;m=n;for(i=0;m>0;m/=10){p++;b[i]=m%10;i++;}for(i=0;i0;m/=2){p++;c[i]=m%2;i++;}for(i=0;i>a;palindrome p(a);p.huiwen();p.show();}运行结果:6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。具体要求如下: (1)私有数据成员 lchar *str; lint y:标记是否为回文字符串。 (2)公有成员函数lString (char *s) :构造函数,用给定的参数s初始化数据成员str。y初始化为0。lvoid huiwen () :判断str所指向的字符串是否为回文字符串。lvoid show( ) :在屏幕上显示字符串。(3)在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。程序源代码#include#includeclass string{char *str;int y;public:string(char *s);void huiwen();void show();};string::string(char *s){str=new char[strlen(s)];strcpy(str,s);y=0;}void string::huiwen(){char *p1,*p2;p2=p1=str;for(int i=0;str[i];i++,p2++);p2--;for(;p1!=p2;p1++,p2--){if(*p1!=*p2){y=0;break;}elsey=1;}}void string::show(){ cout<<”字符串为:”<#includeclass phalanx{int(*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;int y=n,i,j,x;p=new int[20][20];for(x=0;x=0;j--){p[i][j]=num;num++;}}}void phalanx::print(){int i,j,m=0;for(i=0;i>s>>m;phalanx pp(s,m);pp.process();pp.print();}运行结果8.建立一个MATRIX,生成并显示一个螺旋方阵。螺旋方阵如下图所示,起始数置于方阵的左上角,然后从起始数开始依次递增,按顺时针方向从外向里旋转填数而成。 具体要求如下:(1)私有数据成员lint a[20] [20]:二维整型数组存放螺旋方阵。lint startnum:螺旋方阵的起始数。lint n:存放方针的层数。(2)公有成员函数lMATRIX (int s, int m ):构造函数,初始化成员数据startnum和n。lvoid process():生成起始数为startnum的n行螺旋方阵。lvoid print():输出螺旋方阵。(3)在主程序中定义MATRIX类的对象t对该类进行测试。程序源代码#include#includeclass matrix{int a[20][20];int starnum;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++){a[i][j]=st;st++;} for(;i<(y-x-1);i++){a[i][j]=st;st++;} for(;j>x;j--){a[i][j]=st;st++;} for(;i>x;i--){a[i][j]=st;st++;}if(x==(y-1)/2)a[i][j]=st;}}void matrix::print(){int i,j;for(i=0;i>s>>m;matrix pp(s,m);pp.process();pp.print();}运行结果9.定义一个字符串类CString,并设计一个算法对该串中各个不同字符出现的频率进行统计。具体要求如下: (1)私有数据成员 lchar *str:指向要统计的字符串。lchar (*p)[2]:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。lint size:存放字符串中出现的所有不同的字符的个数。 (2)公有成员函数lCString (char *s) :根据s参数初始化数据成员str;p和size初始值为0。lvoid Count():p根据s所指字符串长度分配空间。然后把str所指字符串中的每个字符放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:可以借助临时数组或指针来实现)。lvoid Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。l~CString():释放动态分配的空间。(3)在主程序中定义字符串char s[]=”abdabcdesffffd”。定义一个CString类对象test,用s以初始化test,完成对该类的测试。程序源代码#include#includeclass cstring{char*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 char[strlen(str)][2];char n;char *p1,*p2;for(int i=0;str[i];i++){n=\0;p1=&str[i];for(int m=0;str[m];m++){p2=&str[m];if(*p1==*p2)n++;p2++;}p[i][0]=str[i];p[i][1]=n;}}void cstring::show(){for(int i=0;i#includeclass cstring{char *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 char[strlen(s)+1];str1=new char[strlen(s1)+1];str2=new char[strlen(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;str[i];i++){if(str[i]==str1[0]){for(n1=i,n2=0;str1[n2];n1++,n2++)if((str[n1]!=str1[n2])||(str[n1]==\0)){y=0;break;}if(y==1){char pp[100];for(int x=0,p=i;x<(strlen(str1));p++,x++){str[p]=str2[x];}flag=1;}}}}void cstring::show(){if(flag==1)cout<<"改后"<#includeclass STRING{char str1[80];char str2[40];public:STRING(char *s1,char *s2);void process();void print();};STRING::STRING(char *s1,char *s2){for(int i=0;i<80;i++)str1[i]=s1[i];for(int j=0;j<40;j++)str2[j]=s2[j];}void STRING::process(){char s[40];strcpy(s,str1);int i=0,j=0;while(str2[i]){str1[j++]=str2[i];str1[j++]=s[i];i++;}str1[j]=\0;}void STRING::print(){cout<<"交叉后的字符串为:";cout<#includeclass STRING{char str1[60];char str2[40];char str3[100];public:STRING(char *s1,char *s2);void process();void print();};STRING::STRING(char *s1,char *s2){for(int i=0;i<60;i++)str1[i]=s1[i];for(int j=0;j<40;j++)str2[j]=s2[j];}void STRING::process(){ int i=0,j=0,x;while(str1[i]&&str2[i]){str3[j++]=str2[i]; str3[j++]=str1[i];i++;}x=i;if(str2[x]) while(str2[x]) str3[j++]=str2[x++];if(str1[i]) while(str1[i]) str3[j++]=str1[i++];str3[j++]=\0;}void STRING::print(){cout<<"合并后的字符串为:";cout<class MOVE{int array[20];int n;public:MOVE(int b[],int m);void change();void print();};MOVE::MOVE(int b[],int m){n=m;for(int i=0;i#includeclass move{char*array;int n;public:move(char b[],int m);void change();void print();~move();};move::move(char b[],int m){array=new char[strlen(b)+1];n=m;strcpy(array,b);}void move::change(){char *p;int m=0;p=new char[strlen(array)];strcpy(p,array);for(int i=0;p[i];i++)if(p[i]<=Z&&p[i]>=A)array[m++]=p[i];for(i=0;p[i];i++)if(p[i]<=z&&p[i]>=a)array[m++]=p[i];}void move::print(){cout<<"改后字符串为:"<>b>>m;move pp(b,m);pp.change();pp.print();}运行结果:15.定义一个一维数组类Carray,并根据给定算法实现对原始一维数组进行线性变换。这里给定的线性变换算法为:T(bx) = bT(x) + i; 其中,b为变换常量,x为变量,i为当前类中成员数组的下标值。根据该算法,原始数组在变化后,当前数组元素的值是由常量b和i下标来决定的。具体要求如下: (1)私有数据成员 lint *a:指针a指向一个动态分配的原始数组。lint n:n表示该数组的大小。lint b:线性变换的常量。 (2)公有成员函数lCarray (int a[ ],int n,int x) :用给定的参数a、n和x初始化数据成员a、n和b。缺省都设置为0。lvoid Transform () :根据上述变化算法,求解数组变换。lvoid Show( ) :在屏幕上显示数组元素。l~ Carray () :释放动态分配的空间。(3)在主程序中定义数组int arr[ ]={1,2,3,4,5,6,7,8,9,10}作为原始数组,int b;由键盘输入,作为线性变换的常量。定义一个Carray类对象test,用arr初始化test,完成对该类的测试。程序源代码#includeclass carray{int *a;int n;int b;public:carray(int a[],int n,int x);void transform();void show();~carray();};carray::carray(int a[],int n=0,int x=0){this->a=new int[n];this->n=n;b=x;for(int i=0;ia[i]=a[i];}}void carray::transform(){for(int i=0;i>b;carray test(arr,m,b);test.transform();test.show();}运行结果:16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为:F=W*fTf为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 具体要求如下: (1)私有数据成员 lint (*a)[4]:a指向方阵数组。lint w[4][4]:w为变换矩阵。lint m:m表示方阵的行和列数。 (2)公有成员函数lCMatrix (int a[][4],int m) :用给定的参数a和m 初始化数据成员a和m;对变换矩阵w进行初始化,要求必须用循环实现。lvoid Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内。lvoid show( ) :在屏幕上显示数组元素。l~ CMatrix () :释放动态分配的空间。(3) 在主程序中定义数组int arr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。定义一个CMatrix类对象test,用arr初始化test,完成对该类的测试。程序源代码:#include#includeclass cmatrix{int (*a)[4];int w[4][4];int m;public:cmatrix(int a[][4],int m);void transform();void show();~cmatrix();};cmatrix::cmatrix(int a[][4],int m){this->a=new int [4][4];for(int i=0;i<4;i++)for(int j=0;j<4;j++)this->a[i][j]=a[i][j];this->m=m;for(int p=0;p<4;p++)for(int q=0;q<4;q++)if((p+q!=3)&&(p-q!=0))w[p][q]=0;else w[p][q]=1;}void cmatrix::transform(){int b[4][4],i,j;for(i=0;i<4;i++)for(j=0;j<4;j++)b[i][j]=a[j][i];for(i=0;i<4;i++)for(j=0;j<4;j++)a[i][j]=w[i][0]*b[0][j]+w[i][1]*b[1][j]+w[i][2]*b[2][j]+w[i][3]*b[3][j];}void cmatrix::show(){cout<<"变换后的数组是:"<class sin{int x;int n;public:sin(int x,int n);int power(int q);int mi(int m,int n);int fun();void show();};sin::sin(int x,int n){this->x=x;this->n=n;}int sin::power(int q){for(int i=1;i<=q;i++)q*=i;return q;}int sin::mi(int m,int n){for(int i=1;i
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:VC课程实践正确答案.doc
链接地址:https://www.renrendoc.com/p-30889851.html

当前资源信息

门外

编号: 20191109111144953

类型: 共享资源

格式: DOC

大小: 931.50KB

上传时间: 2019-12-13

关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2846424093   微信号:renrenwenkuwang   人人文档上传用户QQ群:460291265   

[email protected] 2020-2023  renrendoc.com 人人文库版权所有   联系电话:0512-65154990

备案号:苏ICP备12009002号-5  经营许可证:苏B2-20200052  苏公网安备:32050602011097号

           

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