1、c+课程实践江苏科技大学课程实践报告设计题目: 计算机程序设计实践(VC+) 设计时间 20011-3-6 至 2011-3-13 学院(系): 机械工程 专业班级: 机制3班 学生姓名: 郑杰 学号 0940202329 指导老师: 石亮 2011年03月任务一一、实践任务3建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。二、系统设计1、类的描述与定义(1)私有数据成员 float array20:一维整型数组。 int n:数组中元素的个数。(2)公有成员函数 MOVE(float b,int m):构造函数,初始化成员数据。 voi
2、d average():输出平均值,并将数组中的元素按要求重新放置。 void print():输出一维数组。2、主要函数设计在主程序中用数据1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3对该类进行测试。三、系统测试 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();四、实践小结 通过本题我学会了平均值的求法以及一组数的排序。五、参考文献1齐志昌。软件工程。北
3、京:高等教育出版社,20042钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#includeclass MOVEprivate: float array20; int n;public: MOVE(float b,int m) for(int i=0;im;i+) arrayi=bi; n=m; void a
4、verage(); void print(); MOVE() ;void MOVE:average() float ave=0; int i,j; for(i=0;in;i+) ave+=arrayi; ave/=n; coutaveendl; float turn20; j=0; for(i=0;in;i+) if(arrayi=ave) turnj=arrayi; j+; j=0; for(i=0;iave) turnn-1-j=arrayi; j+; for(i=0;in;i+) arrayi=turni; void MOVE:print()for(int i=0;in;i+) cout
5、arrayi ;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();任务二一、实践任务6定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。二、详细设计1、类的描述与定义(1)私有数据成员 char *str; int y:标记是否为回文字符串。(2)公有成员函数 String (char *
6、s) :构造函数,用给定的参数s初始化数据成员str。y初始化为0。 void huiwen () :判断str所指向的字符串是否为回文字符串。 void show( ) :在屏幕上显示字符串。2、主要函数设计在主程序中定义字符串char s=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。三、系统测试 void main()/测试; char s=ababcedbaba; String test(s); test.huiwen(); test.show();四、实践小结 掌握判断回文字符串的一般形式。五、参考文献1齐志昌。软
7、件工程。北京:高等教育出版社,20042钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#include#includeclass Stringprivate: char*str; int y;public: String(char*s) int n=strlen(s); str=new charn+1; st
8、rcpy(str,s); y=0; void huiwen(); void show(); String() if(str) delete str;void String:huiwen()/判断str所指向的字符串是否为回文字符串; int n,judge=0; n=strlen(str); for(int i=0;i(n/2);i+) if(stri=strn-1-i) judge+; if(judge=i) y=1;void String:show()/输出; if(y=1) couty=1,该字符串是回文数strendl; else couty=0,该字符串不是回文数strendl;vo
9、id main()/测试; char s=ababcedbaba; String test(s); test.huiwen(); test.show();任务三一、实践任务7建立一个类PHALANX,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。二、详细设计1、类的描述与定义(1)私有数据成员 int (*p)20:指向按照折叠规律存放方阵的二维整型数组。 int startnum:折叠方阵的起始数。 int n:存放方针的层数。(2)公有成员函数 PHALANX (int s, int m ):构造函数,初始
10、化成员数据。 void process():生成起始数为startnum的n行方阵。 void print():输出折叠方阵。 PHALANX( ):析构函数。2、主要函数设计在主程序中对该类进行测试。三、系统测试 void main() int s1,m1; couts1m1; PHALANX test(s1,m1); test.process(); test.print();四、实践小结根据折叠方阵的产生方式进行相应的逻辑循环实现。五、参考文献1齐志昌。软件工程。北京:高等教育出版社,20042钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓
11、林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#includeclass PHALANXprivate: int(*p)20; int startnum; int n;public: PHALANX(int s,int m) startnum=s; n=m; p=new intm20; void process(); void print(); PHALANX() if(p) deletep;void
12、PHALANX:process()/生成起始数为stratnum的n行螺旋方阵; int turn; turn=p00=startnum; int i,j; for(int k=n-2;k=0;k-)/按照折叠方阵的生成过程进行赋值; for(i=0,j=n-k-1;i=0;j-) pij=+turn; void PHALANX:print() for(int i=0;in;i+) for(int j=0;jn;j+) coutpijt; coutendl; void main() int s1,m1; couts1m1; PHALANX test(s1,m1); test.process()
13、; test.print();任务四一、实践任务11建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。二、详细设计1、类的描述与定义(1)私有数据成员 char str180 :存放被插入的字符串。 char str240 :存放待插入的字符串。(2)公有成员函数 STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。 void process():将str2中的字符串插入到str1中。 void
14、print():输出插入后的字符串。2、主要函数设计在主程序中定义STRING类的对象test对该类进行测试。三、系统测试 void main()/测试 STRING test(ABCDE,abcde); test.process(); test.print();四、实践小结 发现字符插入的规律,再依次放入相应字符位置。五、参考文献1齐志昌。软件工程。北京:高等教育出版社,20042钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学
15、出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#include#includeclass STRINGprivate: char str180;/存放被插入的字符串; char str240;/存放待插入的字符串;public: STRING(char*s1,char*s2) strcpy(str1,s1); strcpy(str2,s2); void process(); void print();void STRING:process() int i,j; int n=strlen(str1); if(strlen
16、(str2)strlen(str1) /当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:abcde-a b c d e-空格处依次插入ABCDEFG-aAbBcCdDeEFG; for(i=n-1;i0;i-) str1i+i=str1i;/被插入的字符串由最后一位开始各位向后移动i位; for(i=1,j=0;i2*n;i+=2,j+) str1i=str2j;/在空出的位置处依次插入字符串; i-; for(;jA B C D E FG-空格处插入abcde-AaBbCcDdEeFG; for(i=n;istrlen(str2)-1;i-) str1i+str
17、len(str2)=str1i;/比待插入的字符串长的部分均向后移strlen(str2)位; for(i=strlen(str2)-1;i0;i-) str1i+i=str1i;/之前的部分均向后移i位; for(i=1,j=0;i2*strlen(str2);i+=2,j+) str1i=str2j;/将待插入的字符串插入空格处,完成插入; void STRING:print()/输出插入后的字符串 cout插入后的字符串为:str1endl;void main()/测试 STRING test(ABCDE,abcde); test.process(); test.print();任务五一
18、、实践任务27建立一个类NUM,求指定数据范围内的所有素数(质数)。提示:素数定义是“只能被1和它本身整除的整数”,即质数。二、详细设计1、类的描述与定义(1)私有数据成员 int data10:依次存放原始数据。 int prime10:存放指定数据内所求出的所有素数。 int num:存放素数个数。(2)公有成员函数 NUM(int n ):构造函数,用参数n初始化data,同时初始化num为0。 int isprime (int x ):判断x是否为素数。若是素数,返回1,否则,返回0。 void process( ):求指定data数组中的所有素数,把它们依次存放在数组prime中,并
19、将求出的素数个数赋给num。 void print( ):输出求出的素数个数及所有素数,每行输出4个素数。2、主要函数设计在主函数中完成对该类的测试。定义NUM类对象test,通过test调用成员函数完成求素数及输出素数的工作。原始数据为4,5,9,11,36,29,31,101,56,199。三、系统测试 void main() int n=4,5,9,11,36,29,31,101,56,199; NUM test(n); test.process(); test.print(); 四、实践小结 应熟练掌握质数的判断方法五、参考文献1齐志昌。软件工程。北京:高等教育出版社,20042钱雪忠
20、。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#include#includeclass NUMprivate: int data10; int prime10; int num;public: NUM(int n) for(int i=0;i1) if(x=2|x=3) return 1; else for(in
21、t i=2;isqrt(x) return 1; else return 0;void NUM:process()/求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num; for(int i=0,j=0;i10;i+) if(isprime(datai) primej=datai;/存放指定数据内所求出的所有素数; j+; num+;/存放素数个数; void NUM:print()/输出求出的素数个数及所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num; cout素数个数为:numendl; for(int i=0;inum;i
22、+) coutprimeit; if(i+1)%4=0) coutendl; coutendl;void main() int n=4,5,9,11,36,29,31,101,56,199; NUM test(n); test.process(); test.print();任务六一、实践任务32建立一个类SUM,使用二维数组输入“Follow me”,“BASIC”,“Great wall”,“Fortran”,“Pascal”,将它们按从小到大的顺序排列后输出。二、详细设计1、类的描述与定义(1)私有数据成员 int *p5:存放二维数组每行的字符串的地址。(2)公有成员函数 SUM(in
23、t d55):构造函数,初始化成员数据。 void process1():对二维数组中存放的字符串进行排序。 void print():输出二维数组中排好序的字符串。2、主要函数设计在主程序中对该类进行测试。三、系统测试 void main() /每个字符串的值为该字符串的首元素地址,故将每个地址值转换为整型数值保存在整型数组中; Int d55=int(Follow me),int(BASIC),int(Great wall),int(Fortran),int(Pascal); SUM test(d); cout原字符串为:endl; test.print(); test.process1(
24、); cout排好序的字符串为:endl; test.print();四、实践小结掌握各数据类型之间的转化。五、参考文献1齐志昌。软件工程。北京:高等教育出版社,20042钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,20073张荣梅,梁晓林等。Visual C+实用教程。北京:中国铁道出版社,20084张岳新。Visual C+ 程序设计。苏州:苏州大学出版社,20075祁云嵩,刘永良,华伟。Visual C+ 程序设计解析与训练。华东理工大学出版社,2006六、源程序清单#include#includeclass SUMprivate: int*p5;/存放二维数组每行的字符串的地址;public: SUM(int d55) for(int i=0;i5;i+) pi=(int*)di0;/整型数组每行第0列保存字符串的地址(为int类型),故在赋值时需要转换为int*类型; void process1(); void print();void SUM:process1()/对二维数组中存放的字符串进行排序; int*t; for(int i=0;i5;i+) for(int j=i+1;j0)/将int*类型数据转换为char*类型,才可利用strcmp()函数对该地址值上的字符串比较,排序; t=pi; pi=pj; pj=t;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1