实践报告答案--江苏科技大学-C++(共14页).doc
精选优质文档-倾情为你奉上江苏科技大学 课程实践报告 设计题目: 程序设计(VC+)实践 设计时间 至 学院(系): 专业班级: 学生姓名: 学号 指导老师: 2013年12月 任务一一、实践任务2试建立一个类SP,求,另有辅助函数power(m,n)用于求。二、详细设计1、类的描述与定义(1)私有数据成员l int n,k:存放公式中n和k的值;(2)公有成员函数l SP(int n1,int k1):构造函数,初始化成员数据n和k。l int power(int m, int n):求mn。l int fun( ):求公式的累加和。l void show( ):输出求得的结果。2、主要函数设计在主程序中定义对象s,对该类进行测试。三、源程序清单#include <iostream.h>class SPint n,k;public:SP(int n1,int k1)n=n1;k=k1;int power(int m,int n)int p=1;for (int i=1;i<n+1;i+)p*=m;return p;int fun()int s=0;for (int i=1;i<n+1;i+)s+=power(i,k);return s;void A()cout<<"n="<<n<<",k="<<k<<",f(n,k)="<<fun()<<endl;void main()SP a(3,3);a.power(3,3);a.fun();a.A();四、实践小结掌握用循环语句求mn,和m!,熟练掌握函数的调用。五、运行结果任务二一、实践任务3建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。二、详细设计1、类的描述与定义(1)私有数据成员l float array20:一维整型数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(float b,int m):构造函数,初始化成员数据。l void average():输出平均值,并将数组中的元素按要求重新放置。l void print():输出一维数组。2、主要函数设计在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试。三、源程序清单#include<iostream.h>class MOVEfloat array20;int n;public:MOVE(float b,int m)n=m;for(int i=0;i<m;i+)arrayi=bi;void average()float t=0;for(int i=0;i<n;i+)t+=arrayi;float D=(t/n);cout<<"平均值为:"<<D<<endl;int j=n-1;for(i=0;i<j;i+,j-)while(arrayi<=D)i+;while(arrayj>D)j-;t=arrayi;arrayi=arrayj;arrayj=t;void print()for(int i=0;i<n;i+)cout<<arrayi<<'t'cout<<endl;void main()float b1=1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3;int num;num=sizeof(b1)/sizeof(float);MOVE s(b1,num);s.average();s.print();四、实践小结应熟练掌握数组与指针的应用。五、运行结果任务三一、实践任务4建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。二、详细设计1、类的描述与定义(1)私有数据成员l int *array:一维整型数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(int b,int m):构造函数,初始化成员数据。l void exchange():输出平均值,并将数组中的元素按要求重新放置。l void print():输出一维数组。l MOVE():析构函数。2、主要函数设计在主程序中用数据21,65,43,87,12,84,44,97,32,55对该类进行测试。三、源程序清单#include <iostream.h> class MOVE int *array; int n; public: MOVE(int b,int m) n=m; array=new intn; for(int i=0;i<n;i+) arrayi=bi; void exchange() int s=0,max,min,x,y; float ave; max=min=array0; for(int i=0;i<n;i+) s+=arrayi; if(arrayi>max)max=arrayi;x=i; if(arrayi<min)min=arrayi;y=i; ave=s/n; cout<<"平均值为:"<<ave<<endl; arrayy=max;arrayx=min; void print() for(int i=0;i<n;i+) cout<<arrayi<<" " MOVE() delete array; ; void main() int B=21,65,43,87,12,84,44,97,32,55; MOVE test(B,10); test.exchange(); test.print(); 四、实践小结学会求数组中最大元素与最小元素方法,并实现交换。五、运行结果任务四一、实践任务6定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“”是回文字符串。二、详细设计1、类的描述与定义(1)私有数据成员l char *str; l int y:标记是否为回文字符串。(2)公有成员函数l String (char *s) :构造函数,用给定的参数s初始化数据成员str。y初始化为0。l void huiwen () :判断str所指向的字符串是否为回文字符串。l void show( ) :在屏幕上显示字符串。2、主要函数设计在主程序中定义字符串char s=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。三、源程序清单#include<iostream.h>#include<string.h>class Stringchar *str;int y;public:String(char *s)str=new charstrlen(s)+1;strcpy(str,s);y=0;void huiwen()char *p1=str,*p2=str;while(*p2)p2+;p2-;for(;p1<p2;p1+,p2-)if(*p1!=*p2)y=1;break;void show()if(y)cout<<str<<"不是回文字符串"<<'n'else cout<<str<<"是回文字符串"<<'n'void main()String A("");A.huiwen();A.show();四、实践小结掌握判断回文字符串的一般形式。五、运行结果任务五一、实践任务11建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。二、详细设计1、类的描述与定义(1)私有数据成员l char str180 :存放被插入的字符串。l char str240 :存放待插入的字符串。(2)公有成员函数l STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。l void process():将str2中的字符串插入到str1中。l void print():输出插入后的字符串。2、主要函数设计在主程序中定义STRING类的对象test对该类进行测试。三、源程序清单#include<iostream.h>#include <string.h> class STRING char str180,str240; public: STRING(char *s1,char *s2) strcpy(str1,s1); strcpy(str2,s2); void process() int i=0,j=0; char t80; strcpy(t,str1); while(str2j) str1i+=tj; str1i+=str2j; j+; str1i='0' void print() cout<<str1<<endl; ; void main() char s180,s240; cout<<"请输入被插入字符串"<<endl; cin.getline(s1,79); cout<<"请输入待插入字符串"<<endl;cin.getline(s2,39); STRING test(s1,s2); test.process(); test.print(); 四、实践小结发现字符插入的规律,再依次放入相应字符位置。五、运行结果任务六一、实践任务14建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。二、详细设计1、类的描述与定义(1)私有数据成员l char *array:一维字符数组。l int n:数组中元素的个数。(2)公有成员函数l MOVE(char b,int m):构造函数,初始化成员数据。l void change():进行排序换位。l void print():输出一维数组。l MOVE():析构函数。2、主要函数设计在主程序中用数据"fdsUFfsTjfsKFEkWC"对该类进行测试。三、源程序清单#include<iostream.h>class MOVEchar*array;int n;public:MOVE(char b,int m)n=m;array=new charn;for(int i=0;i<n;i+)arrayi=bi;void change()char a;for(int i=1;i<n/2;i+)if(arrayi-1>='a'&&arrayi-1<='z')a=arrayi-1;for(int j=i-1;j<n;j+)arrayj=arrayj+1;arrayn-1=a;i-;void print()for(int i=0;i<n;i+)cout<<arrayi;cout<<endl;MOVE()if(array)deletearray;void main()char*arr="fdsUFfsTjfsKFEkWC"MOVE test(arr,17);test.change();test.print();四、实践小结利用临时数组,分别保存大写与小写字母,再实现功能。五、运行结果专心-专注-专业