《面向对象程序设计.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计.docx(14页珍藏版)》请在优知文库上搜索。
1、1.iaochenguniversity计算机学院实验报告1.20142015学年第1学期【一、基本信息】【实验课程】面向对象程序设计【设课形式】独立也非独立口【课程学分】2【实验项目】C+对C的扩充【项目类型】基础3综合口设计口研究创新其它【项目学时】2【学生姓名】高伟建【学号】2013204547【系别专业】计算机科学与技术【实验班组】2013级1班组合【同组学生】【实验室名】A309【实验日期】2014.11.18【报告日期】2014.11.18【二、实验教师对报告的最终评价及处理意见】实验成绩:(涂改无效)指导教师签名:年月日注:要将实验项目、实验课程的成绩评定及课程考核办法明确告知学
2、生,并报实验管理中心备案【三、实验预习】实验目的和要求:1、了解在面向过程程序设计中C+对C语言的扩充与增强,并善于在编写程序过程中应用这些新的功能;2、熟悉在EC1.iPSe集成开发环境下编辑、编译、连接和运行C+程序的方法;3、熟悉C+程序的结构和编程方法。实验内容和原理或涉及的知识点(综合性实验):1、验证大于等于4小于等于IOOoO的偶数均可分解微量素数之和,并打印分解形式。2、编写程序进行模拟仿真。在码头酒馆和游船之间搭了一条长20米,宽4米的跳板,醉酒的船员和游客回艇时必须通过这个跳板。通过跳板时,有三种可能的结果:向前走,回到游船上休息,不再出来;转身回到酒馆,重新开始喝酒,不再
3、出来;左右乱晃,落入水中淹死。果醉酒者每次走一步,一步走1米。而且他们向前走的概率是0.7,向左走、向右走和向后走的概率各为0.1。现在假设开始时他们都是站在酒馆的门口,编写程序模拟出若干个醉酒者的最终行为结果。3、编写程序解决JoSePhUS问题。Josephus问题是说,一群小孩围坐成一圈,现在任意取一个数n,从当前编号为一的孩子开始数起,依次数到n(因为围成了一圈,所以可以不停的数下去),这时被数到n的孩子离开,然后圈子缩小一点。如此重复进行,小孩数不断减少,圈子也不断缩小。最后所剩的那个小孩就是胜利者。请找出这个胜利者。4、编写程序实现五子棋棋游戏。五子棋的规则为:双方各执一色棋子,轮
4、流下子(将子放在棋盘的任一未下子的点上),直到有一方的棋子有5个排成一线(无论是横、竖还是斜均可),则棋局结束,该方胜利。O实验条件(实验设备、软件、材料等):1、装有WindOWS操作系统的微型计算机;2、EC1.iPSe集成开发环境和CDT插件;3、MinGW编译环境。实验设计方案(实验方法、步骤、操作过程、设计型实验、实验数据记录表格):1、熟悉在ECIiPSe集成开发环境下编辑、编译、连接和运行C+程序的方法。2、借助流程图对程序进行“自顶向下、逐步求精”的结构化分析。3、熟悉C+中ConSt、引用、new、de1.ete的用法。4、利用“筛法”生成素数表。5、实现模拟仿真要利用随机值
5、函数。实验预习成绩(涂改无效)合格口不合格口【四、实验过程、数据和实验结果记录】实验方法、步骤、操作过程的记录描述或程序代码。实验过程中输入/输出数据、程序运行结果的记录。(可加附页)实验1.1#inc1.ude#inc1.ude#defineM100()11、验证大于等于4小于等于I(XX)O的偶数均可分解微量素数之和,并打印分解形式。voidCreatPrime1.ist(int*Prime1.ist)for(inti=0;iM;+i)Prime1.isti=1;Prime1.istO=Prime1.ist1=0;fbr(inti=2;i*iM;+i)if(Prime1.isti=1.)f
6、or(intj=2*i;jM;j+=i)Prime1.istj=O;voidPrint1.ist(int*Prime1.ist)intm=1.;for(inti=4;m&(i=M-1);i+=2)for(intj=2;j=i2;+j)if(Prime1.istj&Prime1.isti-j)(std:couti=,j+ij=i2)std:coutThisconc1.usionisworning;m=0;)intmain()(intPrime1.ist1.IO(XX);CreaiPrime1.ist(Prime1.ist);Print1.ist(Prime1.ist);return0;实验1.2
7、#inc1.ude#inc1.ude#inc1.udeintdrunkar()(intx=-20;inty=0;intstep=O;whi1.e(fabs(x)=20&fabs(y)=2)switch(rand()%10)caseO:y=y-1;break;case 1: y=y+1;break;case 2: x=x-I;break;case 3: case4:case5xase6:case7:case8:case9:x=x+I:step=step+1;if(x-20)std:coutstep,步后,人回到酒馆喝酒。20)std:coutstep步后,一人走到游船上。std:end1.;re
8、turn2;e1.sestd:coutstep步后,一人掉到水里。std:end1.;return3;intmain()(intn,A=O,B=O,C=O;std:CoUI”醉酒人数为:”;std:cinn;fbr(inti=1.;i=n;i+)switch(drunkar()case 1: A+;break;case 2: B+;break;case 3: C+;break;s1.d:CoUIA人回到酒馆喝酒。std:CoUtB人走到游船上。;std:CoUtC人掉到水里。”;return0;tota1.+;COUt最后剩余的是:i+1.end1.;returnO;实验1.4#inc1.ud
9、e#inc1.ude# defineX20# defineY20# defineN5usingnamespacestd;intisWin(intaXY,inttype);voidcreat(intaXYJ);voidprint(intaXY);voidmyse1.f(intaXY,int&t,int&x,int&y);voidcomputer(intaXY,int&t,intx,inty);intmain()intaXx,y,t;creat(a);print(a);for(inti=O;i=(X-I)*(Y-1);i+)(if(i%2=O)(COUt请输入落子的坐标(x,y):myse1.fU
10、,t,x,y);e1.secomputer(a,t,x,y);print(a);if(isWin(a,t)=t)(if(t=I)coutend1.iswinend1.;if(t=2)coutend1.iswinXHxYHyO)cout”输出的x,y超出了棋盘范围end1.;e1.seif(axy!=O)cout此处已有子end1.;e1.sebreak;cinXy;x-=1;y-=1;axy=1.;t=1.;voidcomputer(intaXY,int&t,intx,inty)(whi1.e(axy!=0)(intk=rand()%4;switch(k)(case0:x+;break;cas
11、e 1:x-;break;case 2:y+;break;case 3:y-;break;axy=2;t=2;intisWin(intaX(Y,inttype)(for(intx=O;xX;x+)(fbr(inty=0;yY;y+)(判断横方向上是否有连子fbr(inti=x;(ix+N)&(i=X-N);i+)(if(aiy!=type)break;if(i=x+N-1)returntype;判断纵方向上是否有连子fbr(intj=y;(jy+N)&(j=Y-N);j+)(if(axj!=type)break;if(j=y+N-I)returntype;判断正斜方向上是否有连子inti=xj
12、=y;whi1.e(i=x+N&i=X-N&j=y+N&n=N)(if(amn!=type)break;if(n=y+N-1)returntype;m-;n+;returnO;voidcreat(intaX(Y)(fbr(inti=O;iX;i+)fbr(intj=0;jY;j+)a(iU=O;voidprint(intaXY)(COUt,五子棋end1.r;for(inti=O;iX;i+)coutt;cout,-,end1.;fbr(intj=O;jY;j+)(coutF;for(inti=O;iX;i+)(if(aij=1)coute1.seif(aijj=2)cout,Or;e1.secoutcoutHend1.;cout1.;fbr(inti=O;iX;i+)coutj-;cout,-jend1.;记录成绩(涂改无效)合格不合格口