版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程实践报告设计题目:程序设计(VC+)实践设计时间2013-1-至2013-1-学院(系):计算机科学与工程学院2013年1月一. 实践任务选择题目,创新性题目可只选择1题,仅选提高题应不少于3题,仅选基础题应不少于 6题,也可组合选题,还可自行选择感兴趣的题目(须经指导老师审定)。对于提高题、创 新题及游戏题可组成团队开发,但应制定详细的项目分工说明。二. 实验步骤及记录(题目,源程序代码及运行结果)1.与学号对应的题(必做题):基础题12题目:建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串不 等长)。例如将字符串“abcde”交叉插入字符串“ABCDEFG”的结
2、果为 “aAbBcCdDeEFG” 或 “AaBbCcDdEeFG”。具体要求如下:(1)私有数据成员char strl60:存放被插入的字符串。char str240:存放待插入的字符串。char str3100:存放插入后的字符串。(2)公有成员函数STRING (char *sl, char *s2 ):构造函数,用 si 和 s2 初始化 strl 和 str2o void process ():将str2中的字符串插入到str 1中,存放到str3中。void print ():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。源程序代码:#incl
3、ude<>#include<> class STRINGchar strl60;char str240;char str3100;public:STRING(char *sl,char *s2) strcpy(strl,si);strcpy (str2,s2);void process () char *pl二stri, *p2二str2;for (int i=0;*p2;i=i+2) for(int k=strlen(strl);k=i;k-) strlk+l=strlk;*pl=*p2;pl二pl+2;p2+;void print () strcpy(str3,st
4、rl);cout«s tr3endl;;void main () char sl60=ABCDEFG"char s240="abcde"cout«,/原字符串:/z«sl«,z ,z«s2«endl;cout«/z交叉插入后的字符串:";STRING test (si,s2);0;0;运行结果:2-6为选做题,其中2, 3, 4为基础题;5, 6为提高题。2.基础题4题目:建立一个类MOVE,将数组中最大元素的值与最小元素的值互换。具体要求如下:(1) 私有数据成员int *array
5、: 一维整型数组。int n:数组中元素的个数。(2) 公有成员函数MOVE(int b, int m):构造函数,初始化成员数据。void exchange ():输出平均值,并将数组中的元素按要求重新放置。void print ():输出一维数组。、MOVE():析构函数。(3) 在主程序中用数据21, 65, 43, 87,12, 84, 44, 97, 32, 55对该类进行测试。 源程序代码:ncludeclass MOVEint *array:int n;public:MOVE (int b, int m) n=m;array=new intm;for(int i=0;i<n
6、;i+)array i=bi;void exchange ();int b10;for (int k=0;k<n;k+)bk=arrayk;for (int i=0;i<n;i+)for (int j=i+l;j<n;j+) if (bj>二bi) int temp=bi; bi=bj; bj=temp;int max二b 0, min二b nT;for (int p=0;pn;p+)if (arrayp=max)arrayp=min;else if(arrayp=min)arrayp=max;void print () for(int i=0;i<n;i+)co
7、ut«arrayi<<*t ;cout<<endl;M0VE() delete narray;;void main () int a10 = 21, 65, 43, 87, 12, 84, 44, 97, 32, 55;cout«/,原数组:"endl;for (int i=0;i<10;i+) cout«ai «* t'cout<<endl;cout«z,交换最大值和最小值后的数组:"endl;MOVE al(a, 10);0;0;运行结果:3.基础题16题目:定义一个方阵
8、类CMatrix,并根据给定算法实现方阵的线性变换。方阵的变换形式为:F=W*fif为原始矩阵,fT为原始矩阵的转置,w为变换矩阵,这里设定为10 0 10 1100 11010 0 1具体要求如下:(1) 私有数据成员int (*a) 4 : a指向方阵数组。int w4 4 : w为变换矩阵。int m: m表示方阵的行和列数。(2) 公有成员函数CMatrix (int a4,int m):用给定的参数a和m初始化数据成员a和m; 对变换矩阵w进行初始化,要求必须用循环实现。void Transform ():根据上述变换算法,求出变换后的数组形式,存放在 原始数组内。void show
9、():在屏幕上显示数组元素。P 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,完成对该类的测试。 源程序代码:nclude>class CMatrixint (*a) 4;int w44;int m;public:CMatrix(int a 4, int m) this->m=m;this>a=new intthis->m4;for (int i
10、二0;ithis-m;i+)for(int j=0;j<this>m;j+)this->ai j二ai j;for(i=0;i<4;i+) for( int j=0;j<4;j+)if(i+j=3| |i=j)wij=l;else wi j=0;void Transform() int b44;for(int i=0;i<m;i+) for (int j=0;j<m;j+)for(int p=0;p<4;p+)for (int q二0;q4;q+)ap q=wp 0*b0 q+wp l*bl q+wp 2*b2 q+wp 3*b3 q; void
11、 show() for (int i=0;i<4;i+) for (int j=0;j<4;j+) cout«ai j«,t'cout«endl;CMatrixO delete ma;;void main () int arr 4 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16;cout«yz原始方阵:,<<endl;for (int i=0;i<4;i+)for (int j=0;j<4;j+)cout«arri j«,t
12、39;cout<<endl;cout<<"变换后的方阵:"<endl;CMatrix test(arr, 4);0;0;运行结果4.基础题17题目:17.定义一个类 SIN,求 sin (.¥)= X /l- .Y3 / 3J+.Y5 / 5I-.Y7 / 7!+. + (-1) n*l -Y(2/T-l) / (2n 1) !具 体要求如下:(1) 私有成员数据。int x:输入公式中x的值,求sin(x)。int n:输入公式中n的值。(2) 公有成员函数。SIN(int x, int n ):构造函数,用于初始化x和n的值。in
13、t power ( int q):求q!的值。1 int mi ( int m, int n):求加的值。1 int fun():用于求 SIN(X)的值。1 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 (q<=l)return 1: while (q>l) s二s*q;q;retu
14、rn s;int mi(int m, int n)int temp二1;for(int i=l;i<=n;i+)temp*=m;return temp;int fun () int result=0;for (int i=0;i<=n;i+) result+=mi(-1, i)*mi(x, 2*i+l)/power(2*i+l);return result:void show() cout<<,sin (,<<x<</,)的结果为:/z«fun () <<endl;;void main () int x, n;cout<
15、;</,输入一个整数 x,<<endl:cin>>x;cout<</,输入一个整数 n"«endl;cin>>n;SIN test (x, n);0;运行结果:5.提高题9题目:设计一个程序通过虚函数求长方形的面积和长方体的表面积,具体要求如下:(1) 定义长方形类Rectangle保护的数据成员int 1, w;高题 10题目:设计一个程序,查询2000年1月1日(星期六)后的某天是星期几,具体要求如 下:(1) 定义函数int leap(int year):判断某年year是否为润年。能够被400整除,或 者能够被4
16、整除但不能衩100整除的年份是润年。(2) 定义函数int f (int y, int m, int d, int *ml, 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:int get_d
17、ay ():访问私有成员day;void show():以指定格式输出数据成员。(4) 定义类week,判断某天是星期几私有数据成员date dl; 日期类的对象,表示某日int ml 12; 存储非润年每月的天数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 *pl, int *p
18、2):构造函数,用y, m, d 初始化日期,用pl, p2分别初始化ml, m2;int days ():计算dl距2000年1月1日的时间间隔(天数);void fun():根据days ()的计算结果判断dl是星期几(求以0、6表示w的值);void print ():输出判断结果。(5) 在主函数中对定义的类进行测试。从键盘输入一个日期,并检查输入数据的 合法性,然后用输入的数据和表示每月天数的数组初始化week类的对象w, 调用相关成员函数,输出判断结果。程序运行结果如下:请输入要查询的日期(年月日):2009 9 152009/9/15,是星期二。源程序代码:include <
19、;>int leap(int year)if (year%400=0 | | year%100!=0 && year%40) return 1;else return 0;int f (int y, int m, int d, int *ml, int *m2) if(m=l|m=3|m=5|m=7|m=8|m=10|m=12)&&d>31)return 0; else if (m4| |m6| |m9| |mll)&&d>30)return 0;else return 1;while(leap(y)辻(m=2&&
20、;(d=28|d>=30)return 0;else return 1:while(!(leap(y)辻(m=2&&(d=29|d>=30)return 0;else return 1:class dateint year, month, day;public:date (int y, int m, int d) yearly;month=m;day=d;int get_year()return year;int get_month()return month;int get_day()return day;void show() cout<<year&
21、lt;</z/,z<<month<</z/,<<day«/z,";class weekdate dl:int ml12;int m212;int w;public:week (int y, int m, int d, int * pl, int *p2) : dl (y, m, d) for(int i二0;i12;i+) ml i=pl i;for (int j二0;j12;j+)m2i=p2i;w=0;int days () int i,j, result 二 0;for(j=2000;j<();j+)resuIt+= (
22、leap (j) +365);for(i=l;i<();i+)if (i=l | | i=3 | | i二二5 | | i=7 | | i二二8 | | i二二 101 | i=12) result+二31;else if (i=41 |i=61 |i=91 |i=ll)resuIt+=30; else if(i=2)result+=(28+leap(j);result=result+()1;return result:void fun() switch (days () %7) case 0:w=6;break;case 1:w=0;break;case 2:w=l;break;case 3:w=2;break;case 4:w=3;break;case 5:w=4;break;case 6:w=5;break;void print () switch(w)case 6:cout<<z,是星期六o ; break;case 0:cout«z,是星期天o /z;break;ca
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业设备拆解合同
- 购销合同门禁系统的设计思路
- 环保型污水处理技术
- 实物担保借款协议格式
- 土地平整招标资料
- 建筑场地土方填筑招标
- 快乐中秋安全同行
- 借款合同范本的简化版
- 投标保函申请流程
- 砂石购销合同范本
- 支撑梁拆除安全协议书
- 2024-2030年中国充血性心力衰竭(CHF)治疗设备行业市场发展趋势与前景展望战略分析报告
- 五年级道德与法治上册说课稿《古代科技 耀我中华(第一课时) 》部编版
- 小学语文大单元设计论文
- Unit 6 教学教学设计 2024-2025学年人教版七年级英语上册
- Visio商业图表制作分析智慧树知到期末考试答案章节答案2024年上海商学院
- 竞争性谈判工作人员签到表及竞争性谈判方案
- 山东省淄博市张店区2023-2024学年九年级上学期1月期末化学试题(含解析)
- 厦门旅游课件
- 人工智能导论智慧树知到期末考试答案章节答案2024年哈尔滨工程大学
- 单位食堂供餐方案(2篇)
评论
0/150
提交评论