C程序设计实践报告_第1页
C程序设计实践报告_第2页
C程序设计实践报告_第3页
C程序设计实践报告_第4页
C程序设计实践报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C程序设计实践报告This manuscript was revised by the office on December 10, 2020.课程实践报告设计题目:程序设计(VC+)实践设计时间2013-1-至2013-1-学院(系):计算机科学与工程学院2013年1月一. 实践任务选择题LI,创新性题LI可只选择1题,仅选提高题应不少于3题,仅选基础 题应不少于6题,也可组合选题,还可自行选择感兴趣的题U (须经指导老师 审定)。对于提高题、创新题及游戏题可组成团队开发,但应制定详细的项LI 分工说明。二. 实验步骤及记录(题目,源程序代码及运行结果)1.与学号对应的题(必做题):基础题1

2、2题目:建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串 不等长)。例如将字符串“abcde”交义插入字符串“ABCDEFG”的结果为“aAbBcCdDeEFG” 或 “AaBbCcDdEeFG” 。具体要求如下:(1)私有数据成员char strl60:存放被插入的字符串。char str240:存放待插入的字符串。char str3100:存放插入后的字符串。(2)公有成员函数STRING (char *sl, char *s2 ):构造函数,用 si 和 s2 初始化 strl 和 str2ovoid process ():将str2中的字符串插入到strl中,存

3、放到str3中。void print():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。源程序代码:#includeiostreani hncludestring hclass STRINGchar strl60;char str240;char str3100:public:STRING(char *sl,char *s2) strcpy (strl, si);strcpy (str2, s2);void process () char *pl=strl, *p2二str2;for(int i=0;*p2;i=i+2)for (int k=strlen(

4、strl) :k=i;k-) strlk+l=strlk;*pl=*p2;pl二pl+2;P2+;void print () strcpy(str3,strl); coutstr3endl;void main() char sl60=ABCDEFG;char s240=z,abcde,/:cout原字符串:“ ,s2endl;cout,z交义插入后的字符串:;STRING test(sl,s2);test process ();test print ();运行结果:2-6为选做题,其中2, 3, 4为基础题;5, 6为提高题。2.基础题4题目:建立一个类MOVE,将数组中最大元素的值与最小元素

5、的值互换。具体要求如下:(1) 私有数据成员int * array: 一维整型数组。int n:数组中元素的个数。(2) 公有成员函数MOVE(int b, int m):构造函数,初始化成员数据。void exchange():输出平均值,并将数组中的元素按要求重新放置。 void print ():输出一维数组。MOVE ():析构函数。(3) 在主程序中用数据21, 65, 43, 87, 12, 84, 44, 97, 32, 55对该类进行测试。 源程序代码:#includeiost:reain hclass MOVEint *array;int n;public:MOVE (int

6、 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=arrayk: for(int i二0;in;i+) for(int j二i+1;jn;j+)辻(bj=bi)int temp=bi;bi二bj;bj二 temp;int max=b0, min=bn-l;for (int p=0;pn;p+)if(arraypj=max)arrayp二min; else if(arraypZ =min)arrayp.=max;void pri

7、nt () for(int i二0;in;i+) coutarray it ;coutendl;MOVE()delete nJ array;void main() int a10 = 21, 65, 43, 87, 12, 84, 44, 97, 32, 55; cout,/ 原数组:endl;for(int i=0;iclass CMatrix int (*a)4:int w44;int m;public:CMatrix(int a 4, int m) thism=m;this-a=new intthis-m4:for(int i二0;im;i+)for(int j=0;jm;j+) thi

8、s-aij=aij;for(i=0;i4;i+)for( int j二0;j4;j+)if (i+j=3| |i=j)wij=l; else wi j=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+)for (int q二0;q4;q+)ap q=wp 0*b0 q+wp l*bl q+wp 2*b2 q+wp 3 *b 3 q;void show() for (int i=0;i4;i+)for (int j二0;j4;j+) coutai j t,;coute

9、ndl;CMatrixO delete Lm_ a;;void main() int arr 4 = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16; cout原始方阵:endl;for(int i=0;iclass SINprivate: int x; int n;public:SIN(int x, int n) this-x=x;this-n=n;int power(int q) int s=l;if (ql) s=s*q;q_;return s;int mi(int m, int n)int temp二1;for (int i=

10、l;iclass Rectangle protected:int 1, w;int s;public:Rectangle(int x,int y) 1 二X;w二 y;virtual void fun()s=l*w;virtual void show()cout,z长方形的长为:宽为:*fun();p-show();Cuboid bl (2, 3, 4);p二&bl;p-fun();p-show();运行结果:6.提高题10题弘设计一个程序,查询2000年1月1日(星期六)后的某天是星期儿,具体要求 如下:(1) 定义函数int leap(int year):判断某年year是否为润年。能够被

11、400 整除,或者能够被4整除但不能衩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(): 访问私有成员mo

12、nth;int get.day ():访问私有成员day;void show():以指定格式输出数据成员。(4) 定义类week,判断某天是星期几私有数据成员date dl; 日期类的对象,表示某日int ml 12; /存储非润年每月的天数31, 28, 31, 30, 31, 30, 31,31, 30, 31, 30, 31 int m212;/存储润年每月的天数31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 int w;/表示用0表示星期天,1表示星期一,以此类推6表示星期六 公有成员函数week(int y, int m, int d,

13、int *pl, int *p2):构造函数,用y, m, d 初始化日 期,用pl,p2分别初始化ml, m2;int days ():计算dl距2000年1月1日的时间间隔(天数);void fun():根据days ()的计算结果判断dl是星期儿(求以06表示w的 值);void print ():输出判断结果。(5) 在主函数中对定义的类进行测试。从键盘输入一个日期,并检查输入数据 的合法性,然后用输入的数据和表示每月天数的数组初始化week类的对象w, 调用相关成员函数,输出判断结果。程序运行结果如下:请输入要查询的日期(年月日):2009 9 152009/9/15,是星期二。源程

14、序代码:#include int leap(int year)if (year%400=0year%100!=0 & year%4=0)return 1:else return 0;int f (int y, int m, int d, int *ml, int *m2) 辻(m=lm=3 m=5I m=7: m二二8 m=10 m=12)&d31)return 0;else 辻(m=4 m二二6 m=9 ml 1)&d30)return 0;else return 1:while(leap(y) if(m=2&(d=28| d=30)return 0;else return 1;while(

15、!(leap(y)辻(m=2&(d=29d=30)return 0;else return 1:class dateint 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,z/,month,/,day, ;;class weekdate dl;int ml12;int m212;int w;public

16、:week (int y, int m, int d, int *pl, int *p2) : dl (y, m, d) for(int i=0;i12;i卄)mli二pli;for(int j二0;j12;j+)m2i=p2i;w二 0;int days () int i, j, result = 0;for (j=2000; jdl. get_year () ; j+) result+= (leap (j) +365);for (i=l; id 1. get_month () ; i+) if (i=l I I i=31 I i=51 I i=71 | i=81 I i=101 | i=1

17、2)result+=31; else if (i=4 i i6 i i9 i i=ll) 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=0;break; case 2:w=l;break; case 3:w=2;break; case 4:w=3;break; case 5:w=4;break;case6:w=5;break; voidprint () s

18、witch (w) case 6:cout,z是星期六。break;0:cout,z是星期天。1 : COUtZ,是星期一。2: cout,z 是星期二。3:cout,/是星期三。4: cout,/是星期四o5: coutz,是星期五。casecasecasecasecase case;break; ;break;break; ;break;break; ;break;void main() int ml12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int m212 = 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;coutz/请输入要查询的日期(年月日): int a, b, c;cinabc; coutendl;f (a, b, c, ml, m2);week w(a, b, c, ml, m2);date M(a, b, c);M. show();w.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论