江苏科技大学C++课程实践报告答案.docx
- 文档编号:10705306
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:93
- 大小:46.16KB
江苏科技大学C++课程实践报告答案.docx
《江苏科技大学C++课程实践报告答案.docx》由会员分享,可在线阅读,更多相关《江苏科技大学C++课程实践报告答案.docx(93页珍藏版)》请在冰豆网上搜索。
江苏科技大学C++课程实践报告答案
江苏科技大学-C++课程实践报告答案
江苏科技大学
课程实践报告
设计题目:
程序设计(VC++)实践
设计时间至
学院(系):
专业班级:
学生姓名:
学号
指导老师:
2013年12月
任务一
一、实践任务
2.试建立一个类SP,求
,另有辅助函数power(m,n)用于求
。
二、详细设计
1、类的描述与定义
(1)私有数据成员
●intn,k:
存放公式中n和k的值;
(2)公有成员函数
●SP(intn1,intk1):
构造函数,初始化成员数据n和k。
●intpower(intm,intn):
求mn。
●intfun():
求公式的累加和。
●voidshow():
输出求得的结果。
2、主要函数设计
在主程序中定义对象s,对该类进行测试。
三、源程序清单
#include
classSP
{
intn,k;
public:
SP(intn1,intk1)
{
n=n1;k=k1;
}
intpower(intm,intn)
{
intp=1;
for(inti=1;i p*=m; returnp; } intfun() { ints=0; for(inti=1;i s+=power(i,k); returns; } voidA() { cout<<"n="< } }; voidmain() { SPa(3,3); a.power(3,3); a.fun(); a.A(); }四、实践小结 掌握用循环语句求m^n,和m! ,熟练掌握函数的调用。 五、运行结果 任务三 一、实践任务 3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●floatarray[20]: 一维整型数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(floatb[],intm): 构造函数,初始化成员数据。 ●voidaverage(): 输出平均值,并将数组中的元素按要求重新放置。 ●voidprint(): 输出一维数组。 2、主要函数设计 在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。 三、源程序清单 四、实践小结 应熟练掌握数组与指针的应用。 五、运行结果 任务四 一、实践任务 4.建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int*array: 一维整型数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(intb[],intm): 构造函数,初始化成员数据。 ●voidexchange(): 输出平均值,并将数组中的元素按要求重新放置。 ●voidprint(): 输出一维数组。 ●~MOVE(): 析构函数。 2、主要函数设计 在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。 三、源程序清单 四、实践小结 学会求数组中最大元素与最小元素方法,并实现交换。 五、运行结果 任务六 一、实践任务 6.定义一个字符串类String,实现判断该字符串是否为回文字符串。 所谓回文字符串,是指该字符串左右对称。 例如字符串“123321”是回文字符串。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●char*str; ●inty: 标记是否为回文字符串。 (2)公有成员函数 ●String(char*s): 构造函数,用给定的参数s初始化数据成员str。 y初始化为0。 ●voidhuiwen(): 判断str所指向的字符串是否为回文字符串。 ●voidshow(): 在屏幕上显示字符串。 2、主要函数设计 在主程序中定义字符串chars[]=”ababcedbaba”作为原始字符串。 定义一个String类对象test,用s初始化test,完成对该类的测试。 三、源程序清单 四、实践小结 掌握判断回文字符串的一般形式。 五、运行结果 任务十一 一、实践任务 11.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。 例如将字符串“abcde”交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●charstr1[80]: 存放被插入的字符串。 ●charstr2[40]: 存放待插入的字符串。 (2)公有成员函数 ●STRING(char*s1,char*s2): 构造函数,用s1和s2初始化str1和str2。 ●voidprocess(): 将str2中的字符串插入到str1中。 ●voidprint(): 输出插入后的字符串。 2、主要函数设计 在主程序中定义STRING类的对象test对该类进行测试。 三、源程序清单 #include #include classSTRING{ private: charstr1[80];//存放被插入的字符串; charstr2[40];//存放待插入的字符串; public: STRING(char*s1,char*s2) { strcpy(str1,s1); strcpy(str2,s2); } voidprocess(); voidprint(); }; voidSTRING: : process() { inti,j; intn=strlen(str1); if(strlen(str2)>strlen(str1)) {//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法: abcde->abcde->空格处依次插入ABCDEFG->aAbBcCdDeEFG; for(i=n-1;i>0;i--) { str1[i+i]=str1[i];//被插入的字符串由最后一位开始各位向后移动i位; } for(i=1,j=0;i<2*n;i+=2,j++) { str1[i]=str2[j];//在空出的位置处依次插入字符串; } i--; for(;j<=strlen(str2);j++,i++) { str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入; } } else//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法: ABCDEFG->ABCDEFG->空格处插入abcde->AaBbCcDdEeFG; { for(i=n;i>strlen(str2)-1;i--) { str1[i+strlen(str2)]=str1[i];//比待插入的字符串长的部分均向后移strlen(str2)位; } for(i=strlen(str2)-1;i>0;i--) { str1[i+i]=str1[i];//之前的部分均向后移i位; } for(i=1,j=0;i<2*strlen(str2);i+=2,j++) { str1[i]=str2[j];//将待插入的字符串插入空格处,完成插入; } } } voidSTRING: : print()//输出插入后的字符串 { cout<<"插入后的字符串为: "< } voidmain()//测试 { STRINGtest("ABCDE","abcde"); test.process(); test.print(); } 四、实践小结 发现字符插入的规律,再依次放入相应字符位置。 五、运行结果 任务十二 一、实践任务 12.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。 例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG”或“AaBbCcDdEeFG”。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●charstr1[60]: 存放被插入的字符串。 ●charstr2[40]: 存放待插入的字符串。 ●charstr3[100]: 存放插入后的字符串。 (2)公有成员函数 ●STRING(char*s1,char*s2): 构造函数,用s1和s2初始化str1和str2。 ●voidprocess(): 将str2中的字符串插入到str1中,存放到str3中。 ●voidprint(): 输出插入后的字符串。 2、主要函数设计 在主程序中定义STRING类的对象test对该类进行测试。 三、源程序清单 #include #include classSTRING{ private: charstr1[60]; charstr2[40]; charstr3[100]; public: STRING(char*s1,char*s2) { strcpy(str1,s1); strcpy(str2,s2); } voidprocess(); voidprint(); }; voidSTRING: : process() { inti,j; intn=strlen(str1); if(strlen(str2)>strlen(str1)) {//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法: abcde->abcde->空格处依次插入ABCDEFG->aAbBcCdDeEFG; for(i=n-1;i>0;i--) { str1[i+i]=str1[i];//被插入的字符串由最后一位开始各位向后移动i位; } for(i=1,j=0;i<2*n;i+=2,j++) { str1[i]=str2[j];//在空出的位置处依次插入字符串; } i--; for(;j<=strlen(str2);j++,i++) { str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入; } } else//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法: ABCDEFG->ABCDEFG->空格处插入abcde->AaBbCcDdEeFG; { for(i=n;i>strlen(str2)-1;i--) { str1[i+strlen(str2)]=str1[i];//比待插入的字符串长的部分均向后移strlen(str2)位; } for(i=strlen(str2)-1;i>0;i--) { str1[i+i]=str1[i];//之前的部分均向后移i位; } for(i=1,j=0;i<2*strlen(str2);i+=2,j++) { str1[i]=str2[j];//将待插入的字符串插入空格处,完成插入; } } strcpy(str3,str1);//将str2中的字符串插入到str1中,存放到str3中; } voidSTRING: : print()//输出插入后的字符串 { cout<<"插入后的字符串为: "< } voidmain() { STRINGtest("abcde","ABCDEFG"); test.process(); test.print(); } 四、实践小结 发现字符插入的规律,再依次放入相应字符位置。 五、运行结果 任务十三 一、实践任务 13.建立一个类MOVE,对数组中元素进行循环换位,即每个元素后移三位,最后三个元素移到最前面。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●intarray[20]: 一维整型数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(intb[],intm): 构造函数,初始化成员数据。 ●voidchange(): 进行循环换位。 ●voidprint(): 输出一维数组。 2、主要函数设计 在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。 三、源程序清单 #include classMOVE{ private: intarray[20];//一维整型数组; intn;//数组中的元素个数; public: MOVE(intb[],intm) { for(inti=0;i array[i]=b[i]; n=m; } voidchange(); voidprint(); }; voidMOVE: : change()//进行循环换位,即每个元素后移3位,最后3个元素移到最前面; { inttem[3];//建立临时数组,用于存放最后3个元素; inti=0; while(i<3) { tem[2-i]=array[n-1-i];//将最后3个元素依次放入临时数组中; i++; } for(i=0;i { array[n-1-i]=array[n-1-3-i]; } for(i=0;i<3;i++)//将临时数组中存放的最后3个元素依次放入后移后的原数组中,完成循环换位; { array[i]=tem[i]; } } voidMOVE: : print()//输出一维数组; { for(inti=0;i cout< cout< } voidmain() { ints[]={21,65,43,87,12,84,44,97,32,55}; intn=sizeof(s)/sizeof(int); MOVEtest(s,n); test.print(); test.change(); test.print(); } 四、实践小结 利用临时数组先保存后3位,再依次把数放入对应位。 五、运行结果 任务十四 一、实践任务 14.建立一个类MOVE,实现将数组中大字字母元素放在小写字母元素的左边。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●char*array: 一维字符数组。 ●intn: 数组中元素的个数。 (2)公有成员函数 ●MOVE(charb[],intm): 构造函数,初始化成员数据。 ●voidchange(): 进行排序换位。 ●voidprint(): 输出一维数组。 ●~MOVE(): 析构函数。 2、主要函数设计 在主程序中用数据"fdsUFfsTjfsKFEkWC"对该类进行测试。 三、源程序清单 #include #include classMOVE{ char*array; intn; public: MOVE(charb[],intm) {n=m; array=newchar[n+1]; strcpy(array,b); } voidchange() { char*p1=newchar[strlen(array)+1];//用于存大写; char*p2=newchar[strlen(array)+1];//存小写; inti,j=0,k=0; for(i=0;i { if(array[i]>='A'&&array[i]<='Z') { p1[j]=array[i]; j++; } else{p2[k]=array[i];k++;} } p1[j]=p2[k]='\0'; strcat(p1,p2);//存放大写组与小写组拼接; strcpy(array,p1);//拷贝至array; delete[]p1; delete[]p2; } voidprint() { cout< } ~MOVE() {if(array) delete[]array; } }; voidmain() { charb[]="fdsUFfsTjfsKFEkWC"; intn; n=(sizeof(b)-1)/sizeof(char); MOVEtest(b,n); test.change(); test.print(); } 四、实践小结 利用临时数组,分别保存大写与小写字母,再实现功能。 五、运行结果 任务十五 一、实践任务 16.定义一个方阵类CMatrix,并根据给定算法实现方阵的线性变换。 方阵的变换形式为: F=W*fT f为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为 1001 0110 0110 1001 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int(*a)[4]: a指向方阵数组。 ●intw[4][4]: w为变换矩阵。 ●intm: m表示方阵的行和列数。 (2)公有成员函数 ●CMatrix(inta[][4],intm): 用给定的参数a和m初始化数据成员a和m;对变换矩阵w进行初始化,要求必须用循环实现。 ●voidTransform(): 根据上述变换算法,求出变换后的数组形式,存放在原始数组内。 ●voidshow(): 在屏幕上显示数组元素。 ●~CMatrix(): 释放动态分配的空间。 2、主要函数设计 在主程序中定义数组intarr[][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}作为原始数组。 定义一个CMatrix类对象test,用arr初始化test,完成对该类的测试。 三、源程序清单 #include classCMatrix{ private: int(*a)[4]; intw[4][4];//变换矩阵 intm;//表示方阵的行和列数; public: CMatrix(inta[][4],intm) { inti,j; this->a=newint[m][4]; this->m=m; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(i==j||i+j==4-1) w[i][j]=1; else w[i][j]=0; } } for(i=0;i { for(j=0;j<4;j++) { this->a[i][j]=a[i][j]; } } } voidTransform(); voidshow(); ~CMatrix() {if(a)delete[]a;} }; voidCMatrix: : Transform()//根据变换算法,求出变换后的数组形式,存放在原始数组内; { inti,j,k; for(i=0;i { for(j=i;j<4;j++) { k=a[i][j],a[i][j]=a[j][i],a[j][i]=k; } } intsum;//用来存放矩阵乘法中,行列中元素依次相乘的累加和; intturn[4][4];//临时数组,用来存放矩阵乘法所求得的值; for(i=0;i<4;i++)//实现矩阵的乘法; { for(j=0;j<4;j++) { sum=0; for(k=0;k<4;k++) { sum+=w[i][k]*a[k][j]; } turn[i][j]=sum; } } for(i=0;i<4;i++)//将临时数组的值存放入原始数组中; { for(j=0;j<4;j++) { a[i][j]=turn[i][j]; } } } voidCMatrix: : show()//在屏幕上显示数组元素; {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 江苏 科技大学 C+ 课程 实践 报告 答案