C++实验报告.doc

上传人:蓝**** 文档编号:92213878 上传时间:2023-05-31 格式:DOC 页数:27 大小:922.01KB
返回 下载 相关 举报
C++实验报告.doc_第1页
第1页 / 共27页
C++实验报告.doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《C++实验报告.doc》由会员分享,可在线阅读,更多相关《C++实验报告.doc(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C+实验报告学生姓名: 学 号: 学院名称: 专业班级: 年 月 日实验一:例程验证(一)实验说明:课本5.13例程,输入时间,输入12进制24进制的时间格式。#include using namespace std;class Timepublic:Time(int new_hours,int new_mins) hours=new_hours;mins=new_mins; friend void Time12(Time time); friend void Time24(Time time);private:int hours,mins;void Time12(Time time)if(t

2、ime.hours12) time.hours-=12;couttime.hours:time.minsPMendl;elsecouttime.hours:time.minsAMendl;void Time24(Time time)couttime.hours:time.minsendl;void main()Time Time1(20,30),Time2(10,45);Time12(Time1);Time24(Time1);Time12(Time2);Time24(Time2);实验二:例程验证(二)实验说明:课本6.7例程,链表操作,建立Item类作为链表项,建立链表操作的类list,包含

3、生成链表,输出链表,前插入,后插入,删除,求项数等操作。源码:#include #include using namespace std;class List;class itempublic:friend class List;private:item(int d=0)data=d;next=0;item *next;int data;class Listpublic:List()list=0;List(int d)list=new item(d);int print();int insert(int d=0);int append(int d=0);void cat(List &il);v

4、oid reverse();int length();private:item *end();item *list;int List:print()if(list=0)coutemptyn;return 0;cout(;int cnt=0;item *pt=list;while(pt)if(+cnt%40=1&cnt!=1)coutendl;coutdatanext;coutnext=list;list=pt;return d;int List:append(int d)item *pt=new item(d);if(list=0)list=pt;else(end()-next=pt;retu

5、rn d;item *List:end()item *prv,*pt;for(prv=pt=list;pt;prv=pt,pt=pt-next);return prv;void List:cat(List&il)item *pt=il.list;while(pt)append(pt-data);void List:reverse()item *pt,*prv,*tmp;prv=0;pt=list;list=end();while(pt!=list)tmp=pt-next;pt-next=prv;prv=pt;pt=tmp;list-next=prv;int List:length()int c

6、nt=0;item *pt=list;for(;pt;pt=pt-next,cnt+);return cnt;void main()List list1;list1.print();for(int i=10;i18;i+)list1.insert(i);coutlist1:;list1.print();List list2;for(i=15;i20;i+)list2.append(i);coutlist2:;list2.print();coutlist length:list1.length()endl;list2.cat(list1);coutlist2:;list2.print();lis

7、t2.reverse();coutlist2:;list2.print();coutlist2 length:list2.length()endl;实验三:例程验证(三)实验说明:课本7.5例程,日期和时间的操作,建立三个类,Date,Time,TimeDate,后者是以前面两者为基类的派生类。#include using namespace std;#include #include typedef char string8080;class Datepublic:Date()Date(int y,int m,int d)setdate(y,m,d);void setdate(int y,i

8、nt m, int d)year=y;month=m;day=d;void getstringdate(string80 &Date)sprintf(Date,%d%d%d,year,month,day);protected :int year,month,day;class Timepublic:Time()Time(int h,int m,int s)settime(h,m,s);void settime(int h,int m,int s)hours=h;mins=m;sec=s;void getstringtime(string80 &Time)sprintf(Time,%d:%d:%

9、d,hours,mins,sec);protected : int hours,mins,sec;class timedate:public Date,public Timepublic:timedate():Date()timedate(int y,int mo,int d,int h,int mi,int s): Date(y,mo,d),Time(h,mi,s)void getstringdt(string80 &DTstr)printf(DTstr,%d%d%d;%d:%d:%d,year,month,day,hours,mins,sec);void main()timedate da

10、te1,date2(1998,8,12,12,45,10);string80 demostr;date1.setdate(1998,8,7);date1.settime(10,30,45);date1.getstringdt(demostr);coutthe date1 and time isdemostrendl;date1.getstringdate(demostr);coutthe date1 time isdemostrendl;date2.getstringdt(demostr);coutthe date2 date and time isdemostrendl;实验四:例程验证(四

11、)实验说明:设计一个形状基类,内含面积函数,派生出矩形、三角形、圆形、正方形等类。#include using namespace std;class shapepublic :virtual double area() const =0;class sjx:public shapepublic:sjx(double h1,double w1) h=h1;w=w1; double area() const return w*h/2;private:double h,w;class jx:public shapepublic:jx(double h1,double w1)h=h1;w=w1;do

12、uble area() const return h*w;private:double h,w;class yuan:public shapepublic:yuan(double r1)r=r1;double area() const return r*r*3.1415;private:double r;class tx:public shapepublic:tx(double top,double bom,double high)t=top;b=bom;h=high;double area() const return (t+b)/2*h;private :double t,b,h;clas

13、s zfx:public shapepublic:zfx(double b1)a=b1;double area() const return a*a;private:double a;class apppublic:double compute(shape *s,int n) const;double app:compute(shape *s,int n)constdouble sum=0;for(int i=0;iarea();return sum;class mypro:public apppublic:mypro();mypro();double run();private :shape

14、 *s;mypro:mypro()s=new shape*5;s0=new sjx(3.0,4.0);s1=new jx(6.0,8.0);s2=new yuan(6.5);s3=new tx(10.0,8.0,5.0);s4=new zfx(6.7);mypro:mypro()for(int i=0;i5;i+)delete si;delete s;double mypro:run()double sum=compute(s,5);return sum;void main()coutAreas sum=mypro().run()endl;实验五:例程验证(五)实验说明:课本例程,A含虚函数,

15、是B的基类,调用析构函数时显示。#include using namespace std;class Apublic:virtual A()cout A:A() called.n;class B:public Apublic :B(int i)buf=new chari;virtual B()delete buf;coutB:B() called.n;private:char *buf;void fun(A *a)delete a;void main()A *a=new B(15);fun(a);实验六:九宫格游戏设计实验说明:设计一个九宫格游戏程序,随机输出1-8以及空格组成的九宫格,按WA

16、SD键移动空格,当移至1-8从小到大的顺序排列时游戏成功。设计源码:#include #include #include #include #include using namespace std;class jggpublic:jgg();int data44;void move(char key);int right();int scanx();int scany();void print();int x,y,bs;int jgg:right()int a,b,c;a=0;for(b=1;b=3;b+)for(c=1;c1) a=dataxy; dataxy=datax-1y; datax

17、-1y=a;if(key=S|key=s)if(x3) a=dataxy; dataxy=datax+1y; datax+1y=a;if(key=D|key=d)if(y1) a=dataxy; dataxy=dataxy-1; dataxy-1=a;void jgg:print()int i,j;for(i=1;i=3;i+)for(j=1;j=3;j+) if(dataij!=0) cout dataij; else cout ; coutendl; jgg:jgg() int arr10; int sy=9,i,j,n; int a,b,c;bs=0; for(i=0;i=9;i+) a

18、rri=i;for(a=1;a=3;a+)for(b=1;b=3;b+) srand(unsigned)time(NULL); c=rand()%(sy); dataab=arrc; arrc=arrsy-1; sy-; int jgg:scanx() for(int i=1;i=3;i+) for(int j=1;j=3;j+) if(dataij=0) return i; int jgg:scany() for(int i=1;i=3;i+) for(int j=1;j=3;j+) if(dataij=0) return j;void main()jgg A;A.print();char

19、k;while(!A.right()A.x=A.scanx();A.y=A.scany(); k=getchar(); system(cls); A.move(k); A.print(); A.bs+;coutA.bsendl;实验七:扑克发牌程序的设计实验说明:设计一个模拟斗地主游戏的发牌程序,将54牌随机发给三位玩家,每位玩家手牌数为17张,留有三张底牌。(大王用%表示,小王用$表示)#include #include #include #include #include #include using namespace std;char huase(int n)if(n=0) retur

20、n 3; if(n=1) return 3;if(13=n)&(n=0) return 3;if(26=n)&(n=14)return 4;if(39=n)&(n=27)return 5;if(52=n)&(n=40)return 6; if(n=53|n=54) return ;class pkpublic: int total54; int player417; int syps; pk(); void print();void pk:print()int i,j;for(i=1;i=3;i+)coutplayeri+1:; for(j=1;j=17;j+) if(playerij=53)

21、 cout $; if(playerij=54) cout %; elseif(playerij%13=0)&(playerij!=53) cout huase(playerij)K; if(playerij%13=12)&(playerij!=53)cout huase(playerij)Q; if(playerij%13=11)&(playerij!=53)cout huase(playerij)J; if(playerij%130)&(playerij!=53) cout huase(playerij)playerij%13; coutendl;for(i=1;i=3;i+) if (t

22、otali=53)cout $ ;if(totali=54) cout % ; else if(totali%13=13) cout huase(totali)K; if(totali%13=12)cout huase(totali)Q; if(totali%13=11)cout huase(totali)J; else cout huase(totali)totali%13;coutendl;system(pause);pk:pk()syps=54; int sjs,i,j;system(cls); for(i=1;i=54;i+) totali=i; for(i=1;i=3;i+) for

23、(j=1;j=17;j+) srand(unsigned)time(NULL); sjs=rand()%(syps); playerij=totalsjs; totalsjs=totalsyps; syps-; ;void main()char m;pk a;a.print();m=getchar();while(m)pk a;a.print();实验八:堆栈设计实验说明:设计一个堆栈程序,实现功能有压栈,弹栈,栈满,栈空,栈元素计数。随机函数输入数据。设计源码:#include #include #include using namespace std;typedef int dataTyp

24、e;#define maxSize 100class stackpublic:stack();/stack();void push(dataType var); /压栈void pop();/出栈,什么都不返回dataType stackTop();/返回栈顶数据,栈顶不变化bool isEmpty();/空则返回true,否则返回falsebool isFull();/满则返回true,否则返回falseprivate:dataType smaxSize; int top; ;stack:stack()top = -1;void stack:push(dataType var)s+top =

25、 var; void stack:pop()-top; dataType stack:stackTop()return stop; bool stack:isEmpty()return top = -1; bool stack:isFull()return top = maxSize-1; /int main()stack exp;int n;srand(unsigned)time(NULL);if(!exp.isFull()for(int i=0;i=10;i+)n=rand()%10;cout第i个元素是:nendl;exp.push(n);if(!exp.isEmpty()cout栈顶数

26、据是: exp.stackTop()endl;exp.pop();if(exp.isEmpty()cout栈为空!endl;return 0;综合设计:学生信息管理系统实验说明:设计一个班级信息管理系统,界面友好。实现功能有录入学生信息,插入,修改,查询,排名,查看全部等,输出文件保存信息。设计源码:/* 学生成绩管理系统*/#include #include #include #include #include using namespace std;class Stupublic: friend void Input(Stu stud) ; friend void Statistic(St

27、u stud); friend void Lookup(Stu stud) ; friend void Modify(Stu stud) ; friend void Delete(Stu stud) ; friend void Output(Stu stud) ; friend void Sort(Stu stud) ; friend void Insert(Stu stud) ; friend void Write(Stu stud,int n); friend int Read(Stu stud);private: char class_020; int num; char name8;

28、float math; float c_program; float media; float english; float diantuo; float sport; float polity; float average; int order;stud100;void Write(Stu stud,int n)fstream myFile; myFile.open(student.dat,ios:out|ios:binary); if(!myFile) coutstudent.dat cant open!endl; abort(); int count=n; myFilecountendl

29、endl; for(int i=0;i=count;i+) myFilestudi.class_0 studi.num studi.name studi.math studi.c_program studi.media studi.english studi.diantuo studi.sport studi.polity studi.averageendl; myFile.close();int Read(Stu stud) fstream myFile; myFile.open(student.dat,ios:in|ios:binary); if(!myFile) coutstudent.

30、dat cant open!count; for(int i=0;istudi.class_0studi.numstudi.namestudi.mathstudi.c_programstudi.mediastudi.englishstudi.diantuostudi.sportstudi.politystudi.average; myFile.close(); return count ;void Input(Stu stud) system(cls); int i=0; int flag; char sign; coutendl 请输入学生成绩 =endl; while(sign!=n&si

31、gn!=N) coutstudi.class_0;loop: coutstudi.num; int c=0; while(ci) c+; if(studi.num=studi-c.num) cout 你输入的学号已经存在!请重新输入。endl; goto loop; coutstudi.name; do flag=0; coutstudi.math; if(studi.math100 |studi.math1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0); do flag=0; coutstudi.c_program; if(stud

32、i.c_program100 |studi.c_program1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0); do flag=0; coutstudi.media; if(studi.media100 |studi.media1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0); do flag=0; coutstudi.english; if(studi.english100 |studi.english1) cout对不起,请输入1-100之间的数字!n; else fl

33、ag=1; while(flag=0); do flag=0; coutstudi.diantuo; if(studi.diantuo100 |studi.diantuo1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0); do flag=0; coutstudi.sport; if(studi.sport100 |studi.sport1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0); do flag=0; coutstudi.polity; if(studi.polity100 |studi.polity1) cout对不起,请输入1-100之间的数字!n; else flag=1; while(flag=0);studi.average=(studi.math+studi.c_program+studi.media+studi.english+studi.diantuo+studi.sport+studi.polity)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com