《C++上机实验报告 .pdf》由会员分享,可在线阅读,更多相关《C++上机实验报告 .pdf(36页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C+上机实验报告实验名称:自定义数据类型类和对象专业班级:姓名:学号:实验日期:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 36 页 -目录1.实验目的2.实验内容3.程序代码4.调试结果5.实验心得名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 36 页 -1.实验目的实验 7(1)掌握结构体类型变量的定义和使用;(2)掌握结构体类型组的概念和应用;(3)了解链表的概念,初步学会对简单链表进行操作。实验 8(1)掌握声明类的方法,类和类的成员的概念以及定义对象的方法;(2)初步掌握用类和对象编制基于对象的程序;(3)学习检查和调试基于对象的程序。2.实验内容实
2、验 7 编程序,然后上机调试。(1)定义一个结构体变量(包括年,月,日),编程序,要求输入年,月,日,程序能计算并输出该日在本年中是第几天。注意闰年问题。(2)编写一个函数 print,打印一个学生的成绩数组,该数组中有5个学生的数据,每个学生的数据包括num(学号),name(姓名),score3(3 门课的成绩)。用主函数输入这些数据,用 print函数输出这些数据。(3)有 10 个学生,每个学生的数据包括学号,姓名,3 门课的成绩,从键盘输入 10 个学生的数据,要求打印出 3 门课总平均成绩,名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 36 页 -以及最高分的学生的
3、数据(包括学号,姓名3 门课的成绩,平均分数)。要求用一个 cin 语句输入 10 个学生数据;用一个average 函数求总平均分;用max函数找出最高分学生数据;总平均分和最高分的学生的数据都在主程序中输出。(4)建立单向动态链表,并对它,删除和输出等操作。包括以下任务:.写一个函数 creat,用来建立一个动态链表。各结点的数据有键盘输入。.写一个函数 print,将上题建立的链表中各结点的数据依次输出。.写一个函数 del,用来删除动态链表中一个指定的结点(由实参指定某一学号,表示要删除该学生结点)。.写一个函数 insert,用来向动态链表插入一个结点。.将以上 4 个函数组成一个程
4、序,由主程序先后调用这些函数,实现链表的建立,输出,删除和插入,在主程序中指定需要删除和插入的结点。实验 8(1)有以下程序:#include using namespace std;class Time /定义 Time 类名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 36 页 -public:/数据成员为公用的int hour;int minute;int sec;int main()Time t1;/定义 t1 为 Time 类对象cint1.hour;/输入设定的时间cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.sece
5、ndl;/输出时间return 0;改写程序,要求:.将数据成员改为私有的;.将输入和输出的功能改为由成员函数实现;.在类体内定义成员函数。然后编译和运行程序。(2)分别给出如下的3 个文件:.含类定义的头文件student.h 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 36 页 -/student.h (这是头文件,在此文件中进行类的声明)class Student /类声明public:void display();/公用成员函数原型声明 private:int num;char name20;char sex;.包含成员函数定义的源文件student.cpp/stud
6、ent.cpp 在此文件中进行函数的定义#include#includestudent.h /不要漏写此行,否则编译通不过void Student:display()/在类外定义 display类函数coutnum:numendl;coutname:nameendl;coutsex:sexendl;名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 36 页 -.包含主函数的源文件main.cpp/mian.cpp 主函数模块#include#includestudent.h /将类声明头文件包含进来int main()Student stud;/定义对象stud.display()
7、;/执行 stud 对象的 display函数return 0;请完善该程序,在类中增加一个对数据成员赋初值的成员函数set_value,上机调试并运行。(3)需要求 3 个长方柱的体积,请编一个基于对象的程序。数据成员 length(长),width(宽),height(高)。要求用成员函数实现以下功能:.由键盘分别输入 3 个长方柱的长,宽,高;.计算长方柱的体积;.输出 3 个长方柱的体积。请编写程序,上机调试并运行。名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 36 页 -3.程序代码实验 7(1)#include using namespace std;struct
8、int year;int month;int day;date;int main()int days;coutdate.yeardate.monthdate.day;switch(date.month)case 1:days=date.day;break;case 2:days=date.day+31;break;case 3:days=date.day+59;break;case 4:days=date.day+90;break;case 5:days=date.day+120;break;case 6:days=date.day+151;break;case 7:days=date.day
9、+181;break;名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 36 页 -case 8:days=date.day+212;break;case 9:days=date.day+243;break;case 10:days=date.day+273;break;case 11:days=date.day+304;break;case 12:days=date.day+334;break;if(date.year%4=0&date.year%100!=0)|date.year%400=0)&date.month=3)days+=1;coutdate.month/date.d
10、ayis thedaysth day in date.year.endl;return 0;(2)#include#include using namespace std;const int n=5;struct student char num6;char name8;名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 36 页 -int score4;stun;int main()void print(student stu);int i,j;for(i=0;in;i+)coutinput score of studenti+1:endl;coutstui.num;coutstu
11、i.name;for(j=0;j3;j+)coutscorej+1stui.scorej;coutendl;print(stu);return 0;void print(student stu)名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 36 页 -int i,j;coutNO.name score1 score2 score3endl;for(i=0;in;i+)coutstui.num setw(10)stui.name ;for(j=0;j3;j+)coutsetw(3)stui.scorej ;coutendl;(3)#include#include using n
12、amespace std;const int n=3;struct student char num6;char name8;int score4;float avr;stun;名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 36 页 -int main()int i,j,max,maxi,sum;float average;for(i=0;in;i+)coutinput scores of studenti+1endl;coutstui.num;coutstui.name;for(j=0;j3;j+)coutscorej+1stui.scorej;coutendl;avera
13、ge=0;max=0;maxi=0;for(i=0;i,n;i+)sum=0;for(j=0;jmax)max=sum;maxi=i;average/=n;cout NO.name score1 score2 score3 averageendl;for(i=0;jn;i+)coutsetw(8)stui.num setw(10)stui.name ;for(j=0;j3;j+)coutsetw(3)stui.scorej ;coutstui.avrendl;coutaverage=averageendl;coutThe highest score is:stumaxi.name,score
14、total:maxendl;return 0;名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 36 页 -(4).写一个函数 creat,用来建立一个动态链表。各结点的数据有键盘输入。#include using namespace std;#define NULL 0 struct student long num;float score;student*next;int n;studnt*creat(void)student*head;student*p1,*p2;n=0;p1=p2=new student;cinp1-nump1-score;head=NULL;while
15、(p1-num!=0)n=n+1;if(n=1)head=p1;名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 36 页 -else p2-next=p1;p2=p1;p1=new student;cinp1-nump1-score;p2-next=NULL;return(head);.写一个函数 print,将上题建立的链表中各结点的数据依次输出。void print(student*head)student*p;coutNow,Thesenrecords are:endl;p=head;if(head!=NULL)do coutnum scorenext;while(p!=
16、NULL);.写一个函数del,用来删除动态链表中一个指定的结点(由实参名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 36 页 -指定某一学号,表示要删除该学生结点)。#include using namespace std;#define NULL 0 struct student long num;float score;student*next;int n;student*del(student*head,long,num)student*p1,*p2;if(head=NULL)coutlist null!num&p1-next!=NULL)p2=p1;p1=p1-ne
17、xt;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;coutdelete:numendl;n=n-1 名师资料总结-精品资料欢迎下载-名师精心整理-第 16 页,共 36 页 -else coutcannot findnext=NULL;else while(p0-nump1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head=p0;else p2-next=p0;p0-next=p1;else p1-next=p0;p0-next=NULL;
18、名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 36 页 -n=n+1;return(head);.将以上 4 个函数组成一个程序,由主程序先后调用这些函数,实现链表的建立,输出,删除和插入,在主程序中指定需要删除和插入的结点。#include using namespace std;#define NULL 0 struct student long num;float score;student*next;int n;int main()student*creat(void);student*del(student*,long);student*insert(student
19、*,student*);名师资料总结-精品资料欢迎下载-名师精心整理-第 18 页,共 36 页 -void print(student*);student*head,*stu;long del_num;coutinout records:endl;head=creat();print(head);coutendldel_num;while(del_num!=0);head=del(head,del_num);print(head);coutdel_num;coutendlstu-numstu-score;while(stu-num!=0)head=insert(head,stu);print
20、(head);coutstu-numstu-score;return 0;student*creat(viod)student*head;student*p1,*p2;n=0;p1=p2=new student;cinp1-nump1-score;head=NULL;while(p1-num!=0)n=n+1;if(n=1)head=p1;else p2-next=p1;p2=p1;p1=new student;cinp1-nump1-score;p2-next=NULL;return(head);名师资料总结-精品资料欢迎下载-名师精心整理-第 20 页,共 36 页 -student*de
21、l(student*head,long,num)student*p1,*p2;if(head=NULL)coutlist null!num&p1-next!=NULL)p2=p1;p1=p1-next;if(num=p1-num)if(p1=head)head=p1-next;else p2-next=p1-next;coutdelete:numendl;n=n-1 else coutcannot findnext=NULL;else while(p0-nump1-num)&(p1-next!=NULL)p2=p1;p1=p1-next;if(p0-numnum)if(head=p1)head
22、=p0;else p2-next=p0;p0-next=p1;else p1-next=p0;p0-next=NULL;n=n+1;return(head);void print(student*head)student*p;coutNow,Thesenrecords are:endl;p=head;名师资料总结-精品资料欢迎下载-名师精心整理-第 22 页,共 36 页 -if(head!=NULL)do coutnum scorenext;while(p!=NULL);实验 8(1)#include using namespace std;class Time public:void se
23、t_time(void)cinhour;cinminute;cinsec;void show_time(void)couthour:minute:secendl;private:int hour;名师资料总结-精品资料欢迎下载-名师精心整理-第 23 页,共 36 页 -int minute;int sec;Time t;int main()t.set_time();t.show_time();return 0;(2)为 便 于 查 找,将 源 文 件main.cpp改 名 为xt8-4-1.cpp,student.cpp改名为 xt8-4-2.cpp,student.h改名为xt8-4.h。
24、.文件 xt8-4-1.cpp/xt8-4-1.cpp(即main.cpp)这是主函数和有关的include命令#include using namespace std;#includext8-4-1.h /即student.h int main()名师资料总结-精品资料欢迎下载-名师精心整理-第 24 页,共 36 页 -Student stud;stud.set_value();stud.display();return 0;.文件 xt8-4-2.cpp/xt8-4-2.cpp(即 student.cpp)在此文件中进行函数的定义#include using namespace std;
25、#includext8-4.h 不要漏写此行void Student:display()/在类外定义 display类函数coutnum:numendl;coutname:nameendl;coutsex:sexnum;cinname;cinsex;名师资料总结-精品资料欢迎下载-名师精心整理-第 25 页,共 36 页 -.文件 xt8-4.h/xt8-4.h(即 student.h)在此文件中进行类定义class Student public:void display();void set_value();private:int num;char name20;char sex;(3)#i
26、nclude using namespace std;class Box /定义 Box类public:void get_value();float volume();名师资料总结-精品资料欢迎下载-名师精心整理-第 26 页,共 36 页 -void display()public:float length;float width;float height;void Box:get_value()/输入数据的函数coutlength;cinwidth;cinheight;float Box:volume()return(length*width*height);void Box:displa
27、y()coutvolume()endl;int main()Box box1,box2,box3;/定义 3 个 box 类的对象名师资料总结-精品资料欢迎下载-名师精心整理-第 27 页,共 36 页 -box1.get_value();/输入 box1 的数据coutvolume of box1 is;/对输出 box1 的文字说明box1.display();/输出 box1 的体积box2.get_value();coutvolume of box2 is;box2.display();box3.get_value();coutvolume of box3 is;box3.displa
28、y();return 0;4.调试结果实验 7(1)input year,month,day:2005 10 1 10/1 is the 274th day in 2005.Input year,month,day:2008 10 1 10/1 is the 275th day in 2008.(2)input scores of student 1:NO:101 NAME:Li 名师资料总结-精品资料欢迎下载-名师精心整理-第 28 页,共 36 页 -score 1:90 score 2:79 score 3:89 input scores of student 2:NO:102 NAME
29、:Ma score 1:97 score 2:90 score 3:68 input scores of student 3:NO:103 NAME:Wang score 1:77 score 2:70 score 3:78 input scores of student 4:NO:104 NAME:Fun score 1:67 名师资料总结-精品资料欢迎下载-名师精心整理-第 29 页,共 36 页 -score 2:89 score 3:56 input scores of student 5:NO:105 NAME:Xue score 1:87 score 2:65 score 3:69
30、 NO name score 1 score 2 score 3 101 Li 90 79 89 102 Ma 97 90 68 103 Wang 77 70 78 104 Fun 67 89 56 105 Xue 87 65 69(3)input scores of student 1:NO:101 name:Wang score1:93 score2:89 名师资料总结-精品资料欢迎下载-名师精心整理-第 30 页,共 36 页 -score3:87 input scores of student 2:NO:102 name:Li score1:85 score2:80 score3:78
31、 input scores of student 3:NO:103 name:Zhao score1:65 score2:70 score3:59 input scores of student 4:NO:104 name:Ma score1:77 score2:70 score3:83 名师资料总结-精品资料欢迎下载-名师精心整理-第 31 页,共 36 页 -input scores of student 5:NO:105 name:Han score1:70 score2:67 score3:60 input scores of student 6:NO:106 name:Zhang s
32、core1:99 score2:97 score3:95 input scores of student 7:NO:107 name:Zhou score1:88 score2:89 score3:88 input scores of student 8:名师资料总结-精品资料欢迎下载-名师精心整理-第 32 页,共 36 页 -NO:108 name:Chen score1:87 score2:88 score3:85 input scores of student 9:NO:109 name:Yang score1:72 score2:70 score3:69 input scores o
33、f student 10:NO:110 name:Liu score1:78 score2:80 score3:83 NO Name score1 score2 score3 average 101 Wang 93 89 87 89.67 名师资料总结-精品资料欢迎下载-名师精心整理-第 33 页,共 36 页 -102 Li 85 80 78 81.00 103 Zhao 65 70 59 64.67 104 Ma 77 70 83 76.67 105 Han 70 67 60 65.67 106 Zhang 99 97 95 97.00 107 Zhou 88 89 88 88.33 10
34、8 Chen 87 88 85 86.67 109 Yang 72 70 69 70.33 110 Liu 78 80 83 80.33(4)input records:10101 90 10103 98 10105 87 0 0 Now,These 3 records are:10101 90 10103 98 10105 87 input the deleted number:10102 95 名师资料总结-精品资料欢迎下载-名师精心整理-第 34 页,共 36 页 -Now,These 3 records are:10101 90 10103 95 10105 87 input the
35、insert record:10104 76 Now,These 4 records are:10101 90 10102 95 10104 76 10105 87 input the insert record:0 0 实验 8(1)12 34 56 12:34:56(2)101 Li f num:101 name:Li 名师资料总结-精品资料欢迎下载-名师精心整理-第 35 页,共 36 页 -sex:f(3)please input length,width,height:10.5 24.5 12.3 volume of box1 is 3164.17 please input leng
36、th,width,height:12.3 22.4 11.3 volume of box1 is 3113.38 please input length,width,height:8.9 54.24 71.2 volume of box1 is 34370.8 5.实验心得一直以来,我都不是个喜欢课前预习的人,对知识的掌握全靠课堂老师的讲解,然后自己消化吸收。但是,这仅仅只对理论课有效,而实验课则毫无用处。所以,对于实验7,实验 8 也只能全套书本,然后,自己理解。不过,因为不太熟悉内容与相关知识,也没能太好的弄清楚程序的运行方式,尤其是实验 7 有关链表的内容,有种似懂非懂的感觉,然后抛开书本自己有没办法编写出一个没有错误的程序。自然,在课堂时间内也没完全弄完实验7 和实验 8 的程序。不过,值得庆幸的是,在不断的上机编程序后,一些低级错误,比如手误或是笔误也没怎么犯了,也能大致意识到并改正自己在编写程序时出现的错误。所以我觉得,以后还是要做到课前预习,除了对知识点必要的文字说明认真理解,最终的落脚点还是要程序上,使自己至少能程序的运行。名师资料总结-精品资料欢迎下载-名师精心整理-第 36 页,共 36 页 -