


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程实践报告设计题目 : 程序设计 (VC+) 实践设计时间 2013-1- 至 2013-1-学院 (系): 计算机科学与工程学院2013年1月一 实践任务选择题目,创新性题目可只选择 1 题,仅选提高题应不少于 3 题,仅选基础题应 不少于 6 题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定) 。 对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项目分工说明。二实验步骤及记录(题目,源程序代码及运行结果)1. 与学号对应的题(必做题) :基础题 12题目:建立一个STRING将一个字符串交叉插入到另一个字符串中(假定两字符串不等长)。例如将字符串“ abcde” 交叉
2、插入字符串“ ABCDEF”G 的结果为“ aAbBcCdDeEFG或“ AaBbCcDdEeF”具体要求如下:1)私有数据成员char str160:存放被插入的字符串。char str240 :存放待插入的字符串。char str3100 :存放插入后的字符串。(2)公有成员函数STRING (char *s1, char *s2 ) :构造函数,用 s1 和 s2 初始化 str1 和 str2 。void process() :将 str2 中的字符串插入到 str1 中,存放到 str3 中。void print() :输出插入后的字符串。(3)在主程序中定义 STRING类的对象t
3、est对该类进行测试。源程序代码:#include#includeclass STRINGchar str160;char str240;char str3100;public:STRING(char *s1,char *s2)strcpy(str1,s1);strcpy(str2,s2);void process()char *p1=str1,*p2=str2;for(int i=0;*p2;i=i+2)for(int k=strlen(str1);k=i;k-)str1k+1=str1k;*p1=*p2;p1=p1+2;p2+;void print()strcpy(str3,str1);c
4、outstr3endl;void main()char s160=ABCDEFG;char s240=abcde;cout 原字符串: s1 s2endl;cout 交叉插入后的字符串: ;STRING test(s1,s2);cess();test.print();运行结果:2-6 为选做题,其中 2,3,4为基础题; 5,6 为提高题。2. 基础题 4题目: 建立一个类 MOV,E 将数组中最大元素的值与最小元素的值互换。 具体要求如下:( 1)私有数据成员int *array :一维整型数组。int n :数组中元素的个数。(2)公有成员函数MOVE(int b,int
5、m):构造函数,初始化成员数据。void exchange() :输出平均值,并将数组中的元素按要求重新放置。void print() :输出一维数组。MOVE():析构函数。( 3)在主程序中用数据 21,65,43,87,12,84,44,97,32,55对该类进行测试源程序代码:#includeclass MOVEint *array;int n;public:MOVE(int b,int m)n=m;array=new intm;for(int i=0;in;i+) arrayi=bi;void exchange()int b10;for(int k=0;kn;k+) bk=array
6、k;for(int i=0;in;i+)for(int j=i+1;j=bi)int temp=bi;bi=bj;bj=temp;int max=b0,min=bn-1;for(int p=0;pn;p+)if(arrayp=max)arrayp=min;else if(arrayp=min)arrayp=max;void print()for(int i=0;in;i+)coutarrayit;coutendl;MOVE()delete narray; ;void main()int a10=21,65,43,87,12,84,44,97,32,55;cout 原数组: endl;for(i
7、nt i=0;i10;i+)coutait;coutendl;cout 交换最大值和最小值后的数组: endl;MOVE a1(a,10);a1.exchange();a1.print();运行结果:3. 基础题 16题目:定义一个方阵类 CMatrix ,并根据给定算法实现方阵的线性变换。方阵的变换形式 为:F=W*fTf 为原始矩阵, fT 为原始矩阵的转置,w 为变换矩阵,这里设定为1 0 0 10 1 1 00 1 1 01 0 0 1 具体要求如下:( 1)私有数据成员int (*a)4: a 指向方阵数组。int w44: w 为变换矩阵。int m : m 表示方阵的行和列数。(
8、2)公有成员函数:用给定的参数a和m初始化数据成员a和mCMatrix (int a4,int m)对变换矩阵 w 进行初始化,要求必须用循环实现。void Transform () :根据上述变换算法,求出变换后的数组形式,存放在原始数组内。void show( ) :在屏幕上显示数组元素。l CMatrix () :释放动态分配的空间。( 3)在主程序中定义数组 intarr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 作为原始数组。定义一个 CMatrix 类对象 test ,用 arr 初始化 test ,完成对该类的测试 源程序代码:#includ
9、eclass CMatrixint (*a)4;int w44;int m;public:CMatrix(int a4,int m)this-m=m;this-a=new intthis-m4;for(int i=0;im;i+)for(int j=0;jm;j+)this-aij=aij;for(i=0;i4;i+)for( int j=0;j4;j+) if(i+j=3|i=j)wij=1; else wij=0;void Transform()int b44;for(int i=0;im;i+)for(int j=0;jm;j+) bij=aji;for(int p=0;p4;p+)fo
10、r(int q=0;q4;q+)apq=wp0*b0q+wp1*b1q+wp2*b2q+wp3*b3 q;void show()for(int i=0;i4;i+)for(int j=0;j4;j+)coutaijt;coutendl;CMatrix()delete ma;void main()int arr4=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;cout 原始方阵: endl;for(int i=0;i4;i+)for(int j=0;j4;j+)coutarrijt;coutendl;cout 变换后的方阵: endl;CMatrix test(a
11、rr,4);test.Transform();test.show();运行结果4. 基础题 17题目:n+117.定义一个类 SIN,求 sin( x) = x /1- x3 / 3!+ x5 / 5!- x7 / 7!+.+ (-1)x(2 n-1) /(2 n -1)! 具 体要求如下:1)私有成员数据。int x:输入公式中x 的值,求 sin(x) 。int n:输入公式中n 的值。2)公有成员函数SIN(int x, int n ):构造函数,用于初始化 x勺值int power( int q)求 q! 的值。l int mi( int m,int n):求mn勺值。l int fu
12、n( ):用于求 SIN(X) 的值。l void show( ) :输出求得的结果。3)在主程序中定义对象 test ,对该类进行测试 源程序代码:#include class SIN private: int x; int n;public:SIN(int x, int n)this-x=x;this-n=n;int power(int q)int s=1;if(q1)s=s*q;q-;return s;int mi(int m, int n)int temp=1;for(int i=1;i=n;i+)temp*=m;return temp;int fun()int result=0;fo
13、r(int i=0;i=n;i+)result+=mi(-1,i)*mi(x,2*i+1)/power(2*i+1);return result;void show()coutsin(x) 的结果为 :fun()endl;void main()int x, n;cout 输入一个整数 xx;cout 输入一个整数 nn;SIN test(x,n);test.show();运行结果:5提高题 9题目:设计一个程序通过虚函数求长方形的面积和长方体的表面积,具体要求如下:( 1)定义长方形类 Rectangle保护的数据成员int l,w; / 表示长方形的长和宽int s; / 表示长方形的面积公
14、有的构造函数Rectangle(int x,int y): 初始化长方形的长和宽;公有的虚函数virtual void fun():求长方形的面积;virtual void show():输出长方形的长、宽和面积。( 2)定义长方形类 A 的公有派生类 Cuboid ,表示长方体类私有的数据成员int h; / 表示长方体的高公有的构造函数:Cuboid(int x,int y,int z): 初始化长方体的长、宽和高。公有函数void fun(): 求长方体的表面积;void show(): 输出长方体的长、宽、高和表面积。(3)在主函数中对定义的类进行测试,要求定义长方形对象al (长为2
15、,宽为3), 长方体对象bl (长、宽、咼分别为2, 3, 4),通过基类的指针p分别求长方形 的面积和长方体的表面积,输出数据成员,并体现运行的多态性。源程序代码:#include class Rectangle protected:int l,w;int s;public:Rectangle(int x,int y)l=x;w=y;virtual void fun() s=l*w;virtual void show()cout 长 方形 的 长 为 : lt宽 为 : wt 面 积 为 :sendl;class Cuboid:public Rectangleint h;public:Cub
16、oid(int x,int y,int z):Rectangle(x,y)h=z;void fun()s=2*(w*l+w*h+h*l);void show()cout 长 方 体 的 长 为 : lt 宽 为 : wt 高 为 :ht 表面积为: sfun(); p-show();Cuboid b1(2,3,4); p=&b1; p-fun(); p-show();运行结果:6. 提高题 10题目:设计一个程序,查询 2000 年1 月 1 日(星期六)后的某天是星期几,具体要求如 下:( 1)定义函数 int leap(int year) :判断某年 year 是否为润年。能够被 400
17、整除, 或者能够被 4 整除但不能衩 100 整除的年份是润年。( 2)定义函数 int f(int y,int m,int d,int *m1,int *m2) :判断输入的日期是否 合法,其中y、m d分别表示年、月、日,ml表示非润年每月的天数,m2表示润年每月的天数。(3)定义类date,表示日期私有数据成员int year,month,day; / 分别表示某年某月某日公有成员函数:date(int y,int m,int d):构造函数,用形参分别初始化数据成员;int get_year() :访问私有成员 year ;int get_month() :访问私有成员 month;i
18、nt get_day() :访问私有成员 day ;void show() :以指定格式输出数据成员。(4)定义类week,判断某天是星期几私有数据成员date d1; / 日期类的对象,表示某日int m112;/存储非润年每月的天数 31,28,31,30,31,30,31,31,30,31,30,31int m212;/存储润年每月的天数 31,29,31,30,31,30,31,31,30,31,30,31int w;/ 表示用 0 表示星期天, 1 表示星期一,以此类推 6 表示星期六 公有成员函数week(int y,int m,int d,int *p1,int *p2):构造函
19、数,用 y,m,d 初始化日期,用p1,p2 分别初始化 m1, m2;int days() :计算 d1 距 2000 年1 月 1 日的时间间隔(天数);void fun():根据days()的计算结果判断di是星期几(求以06表示w的值);void print() :输出判断结果。5)在主函数中对定义的类进行测试。从键盘输入一个日期,并检查输入数据的调用相关成员函数,输出判断结果。程序运行结果如下:请输入要查询的日期(年月日): 2009 9 152009/9/15 ,是星期二。源程序代码:#include int leap(int year)if(year%400=0 | year%1
20、00!=0 & year%4=0)return 1;else return 0;int f(int y,int m,int d,int *m1,int *m2)if(m=1|m=3|m=5|m=7|m=8|m=10|m=12)&d31)return 0; else if(m=4|m=6|m=9|m=11)&d30)return 0;else return 1;while(leap(y)if(m=2&(d=28|d=30)return 0;else return 1;while(!(leap(y)if(m=2&(d=29|d=30)return 0;else return 1;class dat
21、eint year,month,day;public:date(int y,int m,int d)year=y;month=m;day=d;int get_year()return year;int get_month()return month;int get_day()return day;void show()coutyear/month/day,;class weekdate d1;int m112;int m212;int w;public:week(int y,int m,int d,int *p1,int *p2):d1(y,m,d)for(int i=0;i12;i+)m1i
22、=p1i;for(int j=0;j12;j+)m2i=p2i;w=0;int days()int i,j, result = 0;for(j=2000;jd1.get_year();j+)result+=(leap(j)+365);for(i=1;id1.get_month();i+)if(i=1|i=3|i=5|i=7|i=8|i=10|i=12)result+=31;else if(i=4|i=6|i=9|i=11)result+=30;else if(i=2)result+=(28+leap(j);result=result+d1.get_day()-1;return result;void fun()switch(days()%7)case 0:w=6;break;case 1:w=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产品三维建模与结构设计(SolidWorks)课件:搅拌器的运动仿真和分析
- 量化交易策略考试考题及答案
- 校招电气工程师笔试题目及答案
- 有效复习网络管理员考试的试题及答案
- 软件设计师考试历年试题及答案总结
- 企业战略及其实现方式试题及答案
- 网络性能监测工具试题及答案
- 突发事件应对考试试题及答案
- 2025年信息处理考试的核心内容
- 网络管理员考试备考心得试题及答案
- 电力工程电缆敷设记录表
- 调机品管理规定
- DB63∕T 1683-2018 青海省农牧区公共厕所工程建设标准
- 专题21 当代世界发展的特点与主要趋势含答案解析2023年山东历史新高考【3年真题+1年模考】
- 六年级下册数学课件--总复习《图形的运动》北师大版.--共20张PPT
- 加油站操作员职业技能鉴定试习题库(中级工版)
- 最新房地产开发预算表
- 弱电智能化物业人员人员培训记录
- 线性代数期末试题同济大学第五版附答案
- 家庭住房情况查询申请表
- 最新民间非盈利组织财务报表(资产负债表)EXCEL版
评论
0/150
提交评论