首页 程序设计实践教程

程序设计实践教程

举报
开通vip

程序设计实践教程程序设计实践教程 江苏科技大学 课程实践报告 设计题目: 程序设计(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指向动态申请的...

程序设计实践教程
程序设计实践教程 江苏科技大学 课程实践报告 设计题目: 程序设计(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):递归函数,用于求多项式 的第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项的值。 程序源代码 #include class 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)私有成员数据。 int n,k:存放公式中n和k的值; (2)公有成员函数。 SP(int n1,int k1):构造函数,初始化成员数据n和k。 int power(int m, int n):求mn。 int fun( ):求公式的累加和。 void show( ):输出求得的结果。 (3)在主程序中定义对象s,对该类进行测试。 程序源代码 #include class 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 m1) { n=n1; k=m1; } int SP::power(int m,int n) { int i; if(n==0)return 1; else for(i=1;i>n1>>k1; SP s(n1,k1); s.fun(); s.show(); } 运行结果: 3(建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平 均值的元素放到数组的右边。 具体要求如下: (1)私有数据成员 float array[20]:一维整型数组。 int n:数组中元素的个数。 (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 class 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;i class 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;i class 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)私有数据成员 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 #include class 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;} else y=1; } } void string::show() { cout<<”字符串为:”< #include class 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)私有数据成员 int a[20] [20]:二维整型数组存放螺旋方阵。 int startnum:螺旋方阵的起始数。 int n:存放方针的层数。 (2)公有成员函数 MATRIX (int s, int m ):构造函数,初始化成员数据startnum和n。 void process():生成起始数为startnum的n行螺旋方阵。 void print():输出螺旋方阵。 (3)在主程序中定义MATRIX类的对象t对该类进行测试。 程序源代码 #include #include class 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)私有数据成员 char *str:指向要统计的字符串。 char (*p)[2]:动态分配二维空间,用以存放str所指字符串中出现的字符及其出现的次数(次数在存放时,用该数字对应的ASCII值存放;在输出次数时,输出该ASCII字符对应的ASCII值即可)。 int size:存放字符串中出现的所有不同的字符的个数。 (2)公有成员函数 CString (char *s) :根据s参数初始化数据成员str;p和size初始值为0。 void Count():p根据s所指字符串长度分配空间。然后把str所指字符串中的每个字符放入p数组中,设置每个字符的出现次数为1。根据p数组统计不同字符出现的频率,并求得size的实际大小。最后根据size的实际大小,重新分配p所指空间,并把不同字符及其出现次数重新放回p数组(提示:可以借助临时数组或指针来实现)。 void Show():屏幕显示字符串、字符串的每个字符和与之对应的次数。 ~CString():释放动态分配的空间。 (3)在主程序中定义字符串char s[]=”abdabcdesffffd”。定义一个CString类对象test,用s以初始化test,完成对该类的测试。 程序源代码 #include #include class 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 #include class 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() { "< #include class 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< #include class 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 #include class 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)私有数据成员 int *a:指针a指向一个动态分配的原始数组。 int n:n表示该数组的大小。 int b:线性变换的常量。 (2)公有成员函数 Carray (int a[ ],int n,int x) :用给定的参数a、n和x初始化数据成员a、n和b。缺省都 设置为0。 void Transform () :根据上述变化算法,求解数组变换。 void Show( ) :在屏幕上显示数组元素。 ~ Carray () :释放动态分配的空间。 (3)在主程序中定义数组int arr[ ]={1,2,3,4,5,6,7,8,9,10}作为原始数组,int b;由键盘输 入,作为线性变换的常量。定义一个Carray类对象test,用arr初始化test,完成对该类的 测试。 程序源代码 #include class 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*fT f为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 1 具体要求如下: (1)私有数据成员 int (*a)[4]:a指向方阵数组。 int w[4][4]:w为变换矩阵。 int m:m表示方阵的行和列数。 (2)公有成员函数 CMatrix (int a[][4],int m) :用给定的参数a和m 初始化数据成员a和m;对变换矩阵w 进行初始化,要求必须用循环实现。 void Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内。 void show( ) :在屏幕上显示数组元素。 ~ 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 #include class 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>x>>n; sin test(x,n); test.show(); } 18(试建立一个类VAR,用于求n( )个数的均方差。均方差的计算公式为 ,其中平均值 为 。 具体要求如下: (1)私有成员数据。 double a[100]:用于存放输入的n个数。 int n:实际输入数的个数n。 (2)公有成员函数。 VAR(double x[], int n1):构造函数,初始化成员数据a和个数n。 double average(double x[], int n):求平均值,数组x具有n个元素。 void variance(double x[],int n):求均方差,数组x具有n个元素。 void show():输出求得的均方差。 (3)在主程序中定义一个对象test,对该类进行测试。 #include class var{ double a[100]; int n; public: var(double x[],int n1); double average(double x[],int n); void variance(double x[],int n); void show(); }; var::var(double x[],int n1) { for(int i=0;i #include class array{ int a[4][4]; public: array(int a1[][4],int n); void xuanzhuan(); void show(); }; array::array(int a1[][4],int n) { for(int i=0;i #include class array{ int a[4][4]; public: array(int a1[][4],int n); void xuanzhuan(); void show(); }; array::array(int a1[][4],int n) { for(int i=0;i class Num{ int *data; int span1,span2; int num; public: Num(int n1,int n2); int iscomposite(int x); void process(); void print(); ~Num(); }; Num::Num(int n1,int n2) { span1=n1; span2=n2; num=0; data=new int[n2-n1]; } int Num::iscomposite(int x) { for(int i=2;i>n1>>n2; Num test(n1,n2); test.process(); test.print(); } 22(建立一个类Saddle_point,求一个数组中的所有鞍点。提示:鞍点是这样的数组元素,其值在它所在行中为最大,在它所在列中为最小。 具体要求如下: (1)私有数据成员 int a[4][4]:存放二维数组元素。 int b[4][4]:存放二维数组中的鞍点值。 int num:存放鞍点个数。 (2)公有成员函数 Saddle_point(int data[][4]):构造函数,用参数int data[][4]初始化数组a,,同时初始化数组b与num 的值均为0。 void process( ):求数组a所有鞍点(如果有鞍点),把它们行、列、及值相应存放在数组b中,并将求出的鞍点个数赋给num。 void print( ):输出数组a、鞍点个数,与鞍点坐标及相应值。 (3)在主程序中定义数组int b[ ][4]={2, 6, 3, 4, 5, 6, 5, 5, 5, 7, 6, 7, 1, 9, 2, 7}作为原始数组。定义一个Saddle_point类对象fun。通过fun调用成员函数完成求鞍点及输出工作。 (4)#include (5)class var{ (6) double a[100]; (7) int n; (8)public: (9) var(double x[],int n1); (10) double average(double x[],int n); (11) void variance(double x[],int n); (12) void show(); (13)}; (14)var::var(double x[],int n1) (15){ (16) for(int i=0;i 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 是先求出两个分数 分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其约简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。求m、n最大公约数的一种方法为:将m、n较小的一个数赋给变量k,然后分别用{ k,k-1,k-2,„,1}中的数(递减)去除m和n,第一个能把m和n同时除尽的数就是m和n的最大公约数。假定m、n的最大公约数是v,则它们的最小公倍数就是m*n/v。试建立一个分数类Fract,完成两个分数相加的功能。 具体要求如下: (1)私有数据成员 int num,den :num为分子,den为分母。 (2)公有成员函数 Fract(int a=0,int b=1):构造函数,用a和b分别初始化分子num、分母den。 int ged(int m,int n):求m、n的最大公约数。此函数供成员add()函数调用。 Fract add(Fract f):将参数分数f与对象自身相加,返回约简后的分数对象。 void show( ):按照num/den的形式在屏幕上显示分数。 (3)在主程序中定义两个分数对象f1和f2,其初值分别是1/5和7/20,通过f1调用成员函数add完成f1和f2的相加,将得到的分数赋给对象f3,显示分数对象f3。 #include class fract{ int num,den; public: fract(int a=0,int b=1); int ged(int m,int n); fract add(fract f); void show(); }; fract::fract(int a,int b) { num=a; den=b; } int fract::ged(int m,int n) { for(int i=m;i>=1;i--) if(m%i==0&&n%i==0)return i; } fract fract::add(fract f) { int n,d,p,q; p=ged(den,f.den); d=den*f.den/p; n=num*f.den/p+f.num*den/p; q=ged(n,d); Return fract(n/q,d/q); } void fract::show() { cout<<"相加后的值为:"< #include #include class Num{ int data[25]; int num[10]; public: Num(); void process(); void print(); }; Num::Num() { srand(time(0)); for(int i=0;i<25;i++) data[i]=rand()%9; } void Num::process() { int i,x=0; for(i=0;i<10;i++) { for(int m=0,n=0;m<25;m++) if(data[m]==i) n++; num[x++]=n; } } void Num::print() { cout<<"随机数为:"< #include #include class Num{ char data[25]; int num[128]; public: Num(); void process(); void print(); }; Num::Num() { srand(time(0)); for(int i=0;i<25;i++) data[i]=rand()%128; } void Num::process() { int i,x=0; for(i=1;i<=128;i++) { for(int m=0,n=0;m<25;m++) if(data[m]==i) n++; num[x++]=n; } } void Num::print() { cout<<"输出随即字符串"<0) { cout< #include #include class num{ int data[25]; public: num(); void process(); void print(); }; num::num() { srand(time(0)); for(int i=0;i<25;i++) data[i]=rand()%128; } void num::process() { int m; for(int i=0;i<25;i++) for(int j=i;j<25;j++) if(data[i]>data[j]) { m=data[i]; data[i]=data[j]; data[j]=m; } } void num::print() { cout<<"排序后的数组为:"< class Num{ int data[10]; int prime[10]; int num; public: Num(int n[]); int isprime(int x); void process(); void print(); }; Num::Num(int n[]) { num=0; for(int i=0;i<10;i++) data[i]=n[i]; } int Num::isprime(int x) { for(int i=2;i class decompose{ int *a; int *num; int n; public: decompose(int m,int b[]); void print(); void primenum(); ~decompose(); }; decompose::decompose(int m,int b[]) { n=m; a=new int[n]; num=new int[n]; for(int i=0;i1;) { flag=1; for(int m=2;m>b; for(int i=0;i>number[i]; } decompose test(b,number); test.primenum(); test.print(); } 29(建立一个类SUM,输入5×5的二维数组,编写程序实现:求出两对角线上各元素的和, 求出对角线上行、列下标均为偶数的各元素的积,找出对角线上其值最大的元素以及它在数 组中的位置。 具体要求如下: (1)私有数据成员 int array[5][5]:二维整型数组。 int s:数组array两对角线元素的和。 int a:数组array对角线上行、列下标均为偶数的各元素的积 int b,m,n:数组array对角线上其值最大的元素以及它在数组中的位置。 (2)公有成员函数 SUM(int d[5][5]):构造函数,初始化成员数据。 void process1():求二维数组两对角线元素的和。 void process2():求二维数组两对角线上行、列下标均为偶数的各元素的积。 void process3():求二维数组两对角线上其值最大的元素和它在数组中的位置。 void print():输出二维数组(每行输出5个元素)及其它所求的值。 (3)在主程序中对该类进行测试。 #include #include #include class sum{ int array[5][5]; int s; int a; int b,m,n; public: sum(int d[5][5]); void process1(); void process2(); void process3(); void print(); }; sum::sum(int d[5][5]) { for(int i=0;i<5;i++) for(int j=0;j<5;j++) array[i][j]=d[i][j]; s=0; a=1; b=m=n=0; } void sum::process1() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4)s+=array[i][j]; } void sum::process2() { for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4) if(i%2==0&&j%2==0) a*=array[i][j]; } void sum::process3() { b=array[0][0]; for(int i=0;i<5;i++) for(int j=0;j<5;j++) if(i==j||(i+j)==4) if(b class array{ int x[4][4]; int count; public: array(int a[4][4]); int fun(int ); void encode(); void print(); }; array::array(int a[4][4]) { for(int i=0;i<4;i++) for(int j=0;j<4;j++) x[i][j]=a[i][j]; count=0; } int array::fun(int num) { for(int i=2;i const int m=3; const int k=4; const int n=3; class sum{ int a[m][k]; int b[k][n]; int (*c)[3]; public: sum(int aa[3][4],int bb[4][3]); ~sum(); void process(); void print(); }; sum::sum(int aa[3][4],int bb[4][3]) { int i,n; for(i=0;i<3;i++) for(n=0;n<4;n++) a[i][n]=aa[i][n]; for(i=0;i<4;i++) for(n=0;n<3;n++) b[i][n]=bb[i][n]; c=new int[3][3]; } sum::~sum() { delete []c; } void sum::process() { int i,n; for(i=0;i<3;i++) for(n=0;n<3;n++) c[i][n]=a[i][0]*b[0][n]+a[i][1]*b[1][n]+a[i][2]*b[2][n]+a[i][3]*b[3][n]; } void sum::print() { int i,n; cout<<"输出矩阵A:"< #include class sum{ char *p[5]; public: sum(char d[5][15]); void process1(); void print(); }; sum::sum(char d[5][15]) { for(int i=0;i<5;i++) p[i]=&d[i][0]; } void sum::process1() { char *p1,*p2,m; int x,n; for(int i=0;i<5;i++) { p1=p2=p[i]; for(n=0;n*p2) { m=*p1; *p1=*p2; *p2=m; } p1++; } } } void sum::print() { cout<<"修改后的字符串为:"< class integer_string{ int num; char *s; public: integer_string(int n); int f(); void fun(); void show(); ~integer_string(); }; integer_string::integer_string(int n) { num=n; } int integer_string::f() { int m=num,i; for(i=0;m>0;m/=10) i++; return i; } void integer_string::fun() { int m=num; s=new char[f()+1]; for(int i=0;m>0;m/=10) { s[f()-1-i]=m%10+'0'; i++; } s[i]='\0'; } void integer_string::show() { cout<<"字符串为:"<>b; integer_string test(b); test.fun(); test.show(); } 34(建立一个类String_Integer,把一个字符串中的数字字符转换为正整数。 具体要求如下: (1)私有数据成员 char *s:用动态空间存放字符串。 (2)公有成员函数 String_Integer(char *str):用参数str初始化数据成员s。 operator int():转换函数,数据成员s转换整数并返回该数。 void show():输出数据成员s。 ~String_Integer():释放动态空间。 (3)在主函数中对定义的类进行测试。定义字符数组,把由键盘输入的字符串“ab12 3c00d45ef”存入数组,并用该数组初始化类String_Integer的对象test,调用show函数输出 test的数据成员s,然后把对象test赋值给整型变量n并输出,转换结果如下所示(下划线 部分是从键盘输入的内容): 请输入字符串ab12 3c00d45ef :ab12 3c00d45ef 字符串为:ab12 3c00d45ef 转换得到的整数为:1230045 #include #include class string_integer{ char *s; public: string_integer(char*str); operator int(); void show(); ~string_integer(); }; string_integer::string_integer(char*str) { s=new char[strlen(str)+1]; strcpy(s,str); } string_integer::operator int() { int p=0; for(int i=0;s[i];i++) if('0'<=s[i]&&'9'>=s[i]) p=p*10+s[i]-'0'; return p; } void string_integer::show() { cout<<"字符串为:"< #include class Union{ int *set1,len1; int *set2,len2; int set[20],len; public: Union(int *s1,int l1,int *s2,int l2); int f(int num); void fun(); void show(); ~Union(); }; Union::Union(int *s1,int l1,int *s2,int l2) { set1=new int[l1]; len1=l1; for(int i=0;i class intersection{ int set[20]; int len; public: intersection(int *s,int l); intersection(); int f(int num); intersection operator&&(intersection t); void show(); }; intersection::intersection(int *s,int l) { for(int i=0;i #include #include class num{ int data[25]; public: num(); void process(); void print(); }; num::num() { srand(time(0)); for(int i=0;i<25;i++) { data[i]=rand()%10000; } } void num::process() { int m,n,p; for(n=0;n<25;n++) for(m=n;m<25;m++) if(data[n]>data[m]) { p=data[n]; data[n]=data[m]; data[m]=p; } } void num::print() { int n=0; cout<<"输出排序后的数组"< #define max 100 class sample{ int a[max]; int n; public: sample(); friend class process; }; sample::sample() { n=0; } class process{ public: void getdata(sample &s); void selectsort(sample &s); void disp(sample &s); }; void process::getdata(sample &s) { cout<<"输入数字的个数"<>s.n; for(int i=0;i>s.a[i]; } } void process::selectsort(sample &s) { int m,p; for(int i=0;is.a[m]) { p=s.a[i]; s.a[i]=s.a[m]; s.a[m]=p; } } void process::disp(sample &s) { cout<<"排序后的数组为:"<
本文档为【程序设计实践教程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_314871
暂无简介~
格式:doc
大小:675KB
软件:Word
页数:121
分类:企业经营
上传时间:2018-10-02
浏览量:12