第一篇:材料科学基础实验报告八
某
某
某
某
大
学
实 验 报 告
(八)学院:_________________专业:_________________ 班级:_________________学号:_________________ 姓名:_________________日期:_________________
实验八
奥氏体晶粒度的测定 课程名称:
实验题目:
一、实验目的:
二、实验仪器及材料:
三、实验内容:
第二篇:科学实验报告
凸透镜成像规律实验报告
提出问题:凸透镜成像的规律是什么
所需器材:蜡烛、光具座和光屏
猜想与假设:凸透镜成像的规律分为实像与虚像
步骤:把可发光物放在距凸透镜比较远的地方,然后逐渐移近,观察成像的情况.物距大到什么程度成实像,小到什么时候成虚像,大概不同的凸透镜会有不同,要有一个参照距离才便于研究.实验原理 在物理上 凹镜和凸镜都是利用光的折射的原理成像
现象:物距(u)像距(v)像的性质倒正 大小 虚实
u>2f f u=2f v=2f 倒 等 实 —— f2f 倒 大 实 u=f —— —— —— —— —— u 结论: 1、一焦分虚实,二焦分大小 (一倍焦距以内是虚象,一倍以外是实象,不包括一倍焦距) 2、虚象同侧正,实象异侧倒 (虚象在同一侧,是正立的象,实象在异侧,是倒立的) 3、物小象变大,物大象变小 (物距变小,象变大,物距变大,象变小) 评估:上网验证,结论正确 应用:u>2f f u=2f v=2f 倒 等 实 —— f2f 倒 大 实 幻灯机 u=f —— —— —— —— —— u 伏安法测电阻实验报告 1.伏安法测电阻实验器材:电源、开关、可调电阻、电压表、电流表 各一个,连接导线若 干。以及被测电阻。2.实验步骤: ①电路连接:电压表并联在被测的电阻两端。然后所有的器件都串联后接在电源上。②.闭合开关。 ③记录电压表读数 U1,电流表读数 I1,调节可变电阻。在记录U2 I2,再调节可变电阻。再记录 U3 I3 ④多次测量,取平均值,算出电阻 3.实验总结 洋葱内表皮实验报告(1)在载玻片上_滴一滴清水。 (2)用小刀切一块0.25平方厘米鳞片,用镊子撕下一层洋葱表皮。 (3)放在载玻片的清水中,并用镊子展平。 (4)盖上盖玻片不留气泡,并用红墨水或碘酒进行染色。 (5)观察:若视野中有黑圈说明有气泡,细胞重叠很多说明所撕的表皮太厚,需将装片重做,观察时两眼同时张开。绘生物图时,标线要与底边平行,明暗亮度用小点的浓密表示。 下表皮附近的叶肉内的叶绿体的数量比较少,可以透过较多的光线。 显微镜操作实验报告 1. 调节亮度:由暗调亮,可以用大光圈,凹面镜,调节反光镜的角度。 2. 将临时装片在载物台上适当位置固定好。 3. 低倍物镜对准通光孔,使用粗准焦螺旋将镜筒自上而下的调节,眼睛在侧面观察,避免物镜镜头接触到玻片而损坏镜头和压破玻片。 4. 左眼通过目镜观察视野的变化,同时调节粗准焦螺旋,使镜筒缓慢上移,直至视野清晰为止。 5. 如果在视野中没有被观察对象,可以移动装片,原则为欲上反下,欲左反右。 6. 如果不够清晰,可以用细准焦螺旋进一步调节。 7. 如果需要在高倍物镜下观察,可以转动转换器调换物镜。如果视野较暗,可通过1的方法调节;如果不够清晰,可通过6的方法调节,但是不可以用4的方法。 8. 使用完毕后,请调节转换器,使空镜头孔对着通光孔,将镜筒调至最低后装入镜箱。; 实验课题:观察月相 实验目的:通过对月相的观察,使学生了解月相变化的规律,养成长期观察的习惯。 实验器材:黄色彩纸(每组十五张)、剪刀(每组一个) 实验原理:月球在圆缺变化过程中会出现各种不同的形状。 实验步骤: 1.对月亮在一个月内的变化进行观察并记录 2.根据记录用剪刀剪出不同时间月相的样子 3.制作月相规律图 实验现象:一个月中月相的变化规律是:初二向左弯,初八右半边明亮,十五月圆,二十二左半边明亮,二十八向右弯。经历:新月上弦月圆月下弦月残月的过程。 实验结果:月相的变化有一定的规律性。 实验课题:“环形山”成因模拟实验 实验目的:通过模拟试验,对“环形山”的成因进行猜测,养成学生科学的思考问题的习惯 实验器材:沙子(每组若干)、注射器、胶管(每组一套)、重球(每组一个)、学生自己准备的用具 实验原理:环形山是流星、陨石撞击月球后留下来的。 实验步骤: 1.将注射器连接胶管并把胶管插入沙子底部 2.用力将注射器中的水推出,观察现象 3.用重球砸向沙堆,观察现象并记录 实验现象:注射器中的水会穿出沙堆,形成火山状;重球砸向沙堆,沙堆会出现类似环形山的凹坑。 实验结果:沙堆会出现类似环形山的凹坑。 实验课题:放大镜下的发现 实验目的:知道放大镜的使用方法及其作用。 实验器材:放大镜、报纸、书本、树叶 实验原理:放大镜能把物体的像放大。 实验步骤: 1、用放大镜观察树叶,把看到的记录下来。 2、用放大镜观察报纸、书本,把看到的记录下来。 实验现象:在放大镜下观察到的物体比用肉眼看到的物体更大。 实验结果:放大镜可以把物体的像放大。 实验课题:放大镜的放大倍数 实验目的:知道放大镜把物体放大了多少倍。 实验器材:不同放大倍数的放大镜、布、纸、邮票 实验原理:通过观察、记录和测量,可以算出放大镜的放大倍数。 实验步骤: 1、把放大镜放在有格的纸上或放在书上,看看它能把物体放大多少倍。 2、用放大镜观察布、邮票的某部分,并把观察到的内容记录下来,看看它能把物体放大多少倍。 实验现象:同一放大镜的最大放大倍数是一定的。 实验结果:通过观察、测量和计算,算出了不同放大镜的放大倍数。 实验课题:用放大镜观察晶体 实验目的:了解白糖、食盐等晶体的形状如何 实验器材:白糖、食盐、碱面、味精、玻璃片、放大镜 实验原理:在放大镜下能更清晰地看到晶体的形状。 实验步骤: 1、用放大镜观察白糖,把看到的内容记录下来。 2、用放大镜观察碱面、味精,并把看到的内容记录下来。 3、制作一些较浓的溶液,滴在玻璃片上,待水分自然蒸发后,用放大镜观察它们留下的痕迹,看看又是什么样的。 实验现象:在放大镜下看到的晶体的形状很有规则,有的像雪花,有的是立方体,有的像金字塔。 实验结果:每种晶体的形状都很规则。 实验课题:自制显微镜 实验目的:了解简易显微镜的制作方法 实验器材:放大镜、挂历纸、剪刀、胶水 实验原理:一个放大镜能把另一个放大镜所成的像进一步放大,这样明显提高了放大能力。 实验步骤: 1、上下移动调整两个放大镜之间的距离,直到划到物体最清楚的图像。 2、用挂历纸卷成纸筒。 3、用纸筒和胶带纸把两个放大镜固定下来。 4、试一试:做成后的显微镜是否能把物体的图像放得更大了。 实验现象:自制显微镜能把物体的图像放得更大。 实验结果:自制显微镜的放大倍数明显增加了。 《软件开发技术基础》 实验报告 学院:XX学院 班级:XX 姓名: XX 学号:XX 《软件开发技术基础》实验报告 实验名称:实验一 顺序表的操作 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 1、掌握顺序表结构的实现方式; 2、掌握顺序表常用算法的实现; 3、熟悉利用顺序表解决问题的一般思路; 4、参照给定的顺序表的程序样例,验证给出的顺序表的常见算法,领会顺序表结构的优点和不足。 二、实验要求: 1、掌握顺序表的特点及常见算法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1、设计一个静态数组存储结构的顺序表,要求编程实现如下任务: (1)建立一个顺序表,首先依次输人整数数据元素(个数根据需要键盘给定)。(2)删除指定位置的数据元素(指定元素位置通过键盘输入),再依次显示删除后的顺序表中的数据元素。 (3)查找指定数据的数据元素(指定数据由键盘输入),若找到则显示位置,若没有找到则显示0。 2、使用顺序表实现一个电话本的管理程序,电话本中的每条记录包括学号、姓名、手机号码和固定电话四项。要求实现菜单、初始化、添加、删除和显示等功能。 四、程序要求: 1、采用顺序表实现,假设该顺序表的数据元素个数在最坏情况下不会超过50个。 2、写出完整的程序并能调试运行。 五、实验结果: 1、顺序表的结果: 2、电话簿的结果: 六、实验中遇到的问题及解决方法: 1.在删除数据的时候如果有两个一样的数时要怎样解决? 解决方法:用while进行判断。 2.在删除操作中,删除函数中的l是指针,所以用->指向,而在主函数中l是结构体,用“.”。3.在查找的时候有一个返回值,而这个返回值是指针,所以在写查找函数的时候要把返回值类型写上。 七、实验心得体会: 一开始不知所措,首先应该有一个大的方向,把主程序编号,再逐步求精,落实到每一个函数的编写。对于c语言要熟练掌握,要熟悉循环等得操作,要熟练掌握顺序表中的插入,删除,查找,的基本函数。在此的基础上灵活使用。附: 1、顺序表的程序: #include struct Seqlist { };Seqlist *init(){ } void insert(Seqlist *p){ int num=0;printf(“请输入要键入的个数:”);scanf(“%d”,&num);if(num<1)printf(“键入的数据个数错误!n”);Seqlist *p;p=(Seqlist *)malloc(sizeof(Seqlist));p->length=0;return p;int data[MAXSIZE];int length;else { printf(“键入数据为:n”);for(;num>0;num--){ p->length++;scanf(“%d”,p->data+p->length-1); } } } if(p->length==MAXSIZE){ } printf(“数组已满n”);break;getchar();void deletee(Seqlist *p){ } int find(Seqlist *p){ int i=0;printf(“请输入要删除元素的位置:”);scanf(“%d”,&i);if(i<1||i>p->length)printf(“表中没有第%d个元素!n”,i);else { } getchar();for(int j=i;j<=p->length-1;j++)p->data[j-1]=p->data[j];p->length--; } int x;printf(“请输入要查找的数据:”);scanf(“%d”,&x);for(int i=0;i length;i++){ } if(i>=p->length)printf(“数组中没有此数据!n”);if(p->data[i]==x){ } printf(“此数据位于第%d个位置n”,i+1);return i+1;getchar();return 0;void display(Seqlist *p){ } int main(void){ Seqlist *p;for(int i=0;i length;i++)printf(“%-5d”,p->data[i]);putchar('n');getchar(); p=init();char flag;printf(“1-插入 2-删除 3-查找 4-显示 0-退出n”);while(1){ printf(“请输入操作:”);switch(flag=getchar()){ case '1':insert(p);putchar('n');break;case '2':deletee(p);printf(“删除后数据为:”);display(p);putchar('n');getchar();break;case '3':find(p);putchar('n');getchar();break;case '4':printf(“显示数据为:”);display(p);putchar('n');break;case '0':free(p);return 0;} } } 2、电话簿的程序: #include string name;string phonenumber;string phone;contact *next;}CNT;class Phonebook { public: Phonebook();CNT *Input();CNT *Turn_to_end();void Add();void Delete();void Showmenu();CNT *Find();void Show_item(CNT *p);void Display();void Modification();private: }; Phonebook::Phonebook(){ head=new CNT;CNT *head; } head->next=NULL;void Phonebook::Show_item(CNT *p){ cout<<“|----姓名----|--电话号码--|-------------地址------------|”< } void Phonebook::Display(){ CNT *p;cout<<“|----姓名----|--电话号码--|-------------地址------------|”< } cout<<“|------------------------|”< CNT *Phonebook::Input(){ } CNT *Phonebook::Turn_to_end(){ } CNT *temp=head;while(temp->next!=NULL){ } cout<<“n”;return temp;temp=temp->next;CNT *temp;temp=new CNT;cout<<“请输入姓名:”;cin>>temp->name;cout<<“请输入手机号码:”;cin>>temp->phonenumber;cout<<“请输入固定电话:”;cin>>temp->phone;temp->next=NULL;cout<<“n”;return temp; void Phonebook::Add(){ } void Phonebook::Delete(){ CNT *p,*q;q=p=head;string data;cout<<“请输入要删除联系人的信息:”;cin>>data;for(p=p->next;p!=NULL&&p->name!=data&&p->phonenumber!=data&&p->phone!=data;CNT *temp,*p;temp=Input();p=Turn_to_end();p->next=temp;cout<<“n”;p=p->next) q=p;if(p!=NULL){ q->next=p->next;delete p; } } else cout<<“该信息不存在”< } CNT *Phonebook::Find(){ CNT *p=head;string data;cout<<“请输入要查找或要修改的联系人的信息:”;cin>>data;for(p=p->next;p!=NULL&&p->name!=data&&p->phonenumber!=data&&p->phone!=data;cout<<“ 电话簿”< if(p!=NULL)Show_item(p);else } cout<<“不存在该信息”< } int main(){ int select;Phonebook phbook;CNT *p;p=Find();if(p!=NULL){ } cout<<“n”;cout<<“请输入姓名:”;cin>>p->name;cout<<“请输入手机号码:”;cin>>p->phonenumber;cout<<“请输入固定电话:”;cin>>p->phone; phbook.Showmenu();while(1){ cout<<“n请输入要选择的操作(0~6):”;cin>>select;getchar();switch(select){ case 0: exit(0);break;case 1: phbook.Add();break;case 2: phbook.Display();break;case 3: phbook.Delete();break;case 4: phbook.Find();break;case 5: phbook.Modification();break; } } } return 0; 实验名称:实验二 链表的操作 (一)班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 1、掌握单链表结构的实现方式; 2、掌握单链表常用算法的实现。 二、实验要求: 1、掌握链表的特点及常见算法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1、设计一个链表,要求编程实现如下任务: (1)建立一个链表,首先依次输人整数数据元素(个数根据需要键盘给定)。(2)删除指定值的结点(指定值通过键盘输入),再依次显示删除后的链表中的数据元素。 (3)查找指定值的结点(指定数据由键盘输入),若找到则显示查找成功,若没有找到则显示查找失败。 (4)在第i个节点(i由键盘输入,i=0表示插入的结点作为第1个结点)之后插入一个元素为x的节点。 四、程序要求: 1、采用链表实现,假设该链表的结点数在最坏情况下不会超过40个。 2、写出完整的程序并能调试运行。 五、实验结果: 六、实验中遇到的问题及解决方法: 问题:在查找数据时显示的是一样的? 解决方法:在查找函数前要标明返回值的类型lnode *find。 七、实验心得体会: 首先要把书上的关于单链表的定义理解,在这个的基础上使用它。单链表通过结点在数据后附加后继元素的指针信息,可以更灵活的添加,删除,查找,插入,元素。要清楚指针的指向。首先要定义一个头结点,并且指针域要为空。将各个操作分别编写函数,有利于分块使用而且可以多次使用。附: #include { cout<<“请输入数组的个数(小于50):”;cin>>leng;cout<<“请输入数据:”;for(int i=0;i } for(int j=i;j { if(a[i]==temp){ x=i+1;cout<<“你要查找的数是数组的第”< } } if(x==0)cout<<“数组中没有你要查找的数”;} 实验名称:实验三 链表的操作 (二)班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 1、熟悉利用线性链表解决问题的一般思路; 2、参照给定的链表的程序样例,验证给出的链表的常见算法,了解单链表结构的优点和不足。 二、实验要求: 1、熟练掌握链表的使用,并能运用其解决些常规问题。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1、使用链表实现一个电话本的管理程序,电话本中的每条记录包括姓名和电话两项。要求实现菜单、初始化、添加、删除和显示等功能。 四、程序要求: 1、采用链表实现,假设该链表的结点数在最坏情况下不会超过40个。 2、写出完整的程序并能调试运行。 五、实验结果: 六、实验中遇到的问题及解决方法: 1.实验结果版面不好看 解决方法:反复调试执行,每次都对自己不满意的地方进行一些改正。2.怎样比较name与s->name? 解决方法:用string.h中的strcmp函数。3.在传递数据时有问题? 解决方法:返回的值要注意数据类型,是指针还是整数等。 七、实验心得体会: 在应用中可以利用while实现选择,并根据选择用switch来完成选择。为了简化编程,结点插入操作可仅仅在头部进行。单链表的方法使添加操作更加简便。不需要事先分配结点空间,而是在需要时动态的申请,节省了空间。、附: #include void show_menu(){ puts(“1添加 2删除 3查找 4插入 5显示 0退出”);} void show_item(STU *p){ printf(“|编号| 学号 | 姓名 | 电话号码 |n”);printf(“|1 |%-12s|%-12s|%-12s|n”,p->stu_number,p->stu_name,p->stu_phone); } STU *init(){ STU *p;p=(STU *)malloc(sizeof(STU));p->next=NULL;return p;} void display(STU *head){ int i;STU *p;p=head->next;printf(“|编号| 学号 | 姓名 | 电话号码 |n”);for(i=1;p!=NULL;i++,p=p->next){ printf(“|%-4d|%-12s|%-12s|%-12s|n”,i,p->stu_number,p->stu_name,p->stu_phone);} } STU *turn_to_end(STU *head){ STU *p;for(p=head;p->next!=NULL;p=p->next);return p;} STU *putin(){ STU *temp;temp=(STU *)malloc(sizeof(STU));printf(“请输入姓名:”);gets(temp->stu_name);printf(“请输入学号:”);gets(temp->stu_number);printf(“请输入电话号码:”);gets(temp->stu_phone);temp->next=NULL;return temp;} void add(STU *head){ STU *temp,*p;p=head;temp=putin();p=turn_to_end(head);p->next=temp;} STU *find(STU *head,int i){ STU *p;if(i<1) puts(“输入错误”);else { for(p=head;p->next!=NULL&&i>0;i--,p=p->next); if(i>0) { puts(“不存在该结点”); return NULL; } } return p;} STU *find_stu(STU *head,char *data){ STU *p,*q;q=p=head;for(p=head->next;p!=NULL&&strcmp(p->stu_name,data)!=0&&strcmp(p->stu_number,data)!=0&&strcmp(p->stu_phone,data)!=0;p=p->next) q=p;if(p!=NULL) return q;else { puts(“不存在该信息”); return p;} } void delet(STU *head,char *data){ STU *p,*q;p=q=head;q=find_stu(head,data);if(q!=NULL){ p=q->next; q->next=p->next; free(p);} } void insert(STU *head,int i) { STU *p,*q,*temp;q=p=head;if(i<0) puts(“输入错误”);else if(i==0){ temp=putin(); temp->next=p->next; q->next=temp; } else if(find(head,i)!=NULL){ q=find(head,i); p=q->next; temp=putin(); q->next=temp; temp->next=p;} else return;} int main(void){ STU *head,*temp;int selct,node;char data[12];head=init();show_menu();while(1){ printf(“请选择操作:”); scanf(“%d”,&selct); getchar(); switch(selct) { case 1: add(head); putchar('n'); break; case 2: display(head); printf(“请输入要删除学生的学号、姓名或电话号码:”); } scanf(“%s”,data); getchar(); delet(head,data); display(head); putchar('n'); break;case 3: puts(“请输入要查找的数据”); scanf(“%s”,data); getchar(); if(temp=find_stu(head,data)) { show_item(temp->next); } else puts(“ 不存在该信息”); putchar('n'); break;case 4: puts(“请输入要插入结点的位置”); scanf(“%d”,&node); getchar(); insert(head,node); putchar('n'); break;case 5: display(head); putchar('n'); break;case 0: exit(0); break;} } return 0; 实验名称:实验四 栈的操作 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 掌握栈的的定义和运算,了解栈的应用。 二、实验要求: 1、掌握栈的特点及常见算法。 2、参照给定的栈的程序样例,验证给出的栈的常见算法。 3、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1、堆栈的测试和应用。要求: 设计一个主函数实现对顺序堆栈代码进行测试。测试方法为:依次把数据元素1,3,5,7,9入栈,然后出栈堆栈中的数据元素并在屏幕上显示。 四、程序要求: 1、栈的长度自行确定。 2、重点理解栈的算法思想,能够根据实际情况选择合适的存储结构。 3、写出完整的程序并能调试通过。 五、实验结果: 六、实验中遇到的问题及解决方法: 七、实验心得体会: 栈是后进先出表,只允许在栈顶进行插入和删除。要掌握顺序栈初始化,出栈,入栈的基本程序,在理解得基础上加以运用。要清楚栈和单链表的区别。附: #include void Sqstack::push(){ int temp;if(top>=maxsize-1){ cout<<“堆栈已满”< cout<<“请输入要进栈数的值”< cin>>temp; top++; *(data+top)=temp;} } void Sqstack::pop(int &e){ if(top>-1){ e=*(data+top); top--; cout< cout<<“堆栈已空”;} cout< i=top; for(;i>=0;i--) cout<<*(data+i)<<“ ”;} else cout<<“空栈”;cout< void Sqstack::modify(){ int temp;cout<<“请输入栈的长度”< maxsize=temp;else cout<<“输入错误栈的长度必须>0”< int main(){ Sqstack test;int temp,select;cout<<“1.进栈 2.出栈 3.显示 4修改栈长度 0.退出”< cout<<“请选择操作:”; cin>>select; switch(select) { case 1: test.push(); break; case 2: test.pop(temp); break; case 3: test.display(); break; case 4: test.modify(); break; case 0: exit(0); break; default: cout<<“输入错误按任意键重新输入”< getch(); break; } } return 0;} 实验名称:实验五 队列的操作 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 掌握队列的定义及其运算,了解队列的应用。 二、实验要求: 1、掌握队列的特点及常见算法。 2、参照给定的队列的程序样例,验证给出的队列的常见算法。 3、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1、队列测试和应用。要求: 设计一个主函数对循环队列代码进行测试。测试方法为:依次把数据元素2,4,6,8,10入队,然后出队中的数据元素并在屏幕上显示。 四、程序要求: 1、队列的长度由自行确定。 2、重点理解队列的算法思想,能够根据实际情况选择合适的存储结构。 3、写出完整的程序并能调试通过。 五、实验结果 六、实验中遇到的问题及解决方法: 七、实验心得体会: 队列是只允许在一端进行删除操作的线性表。在操作时会有假溢出的情况出现,可以将存放队列元素的数组守卫相接,形成循环队列。即:rear=(rear+1)%m;Front=(front+1)%m 附: #include typedef struct Temp { int data; struct Temp *next;}T;class Linksqueue { private: T *front,*rear;public: Linksqueue();void Enqueue();void Dequeue(T *);void display();}; Linksqueue::Linksqueue(){ front=rear=new(T);front->next=NULL;} void Linksqueue::Enqueue(){ T *temp;temp=new(T);cout<<“请输入入队元素的值:”< void Linksqueue::Dequeue(T *s){ T *temp;if(front->next!=NULL){ temp=front; front=front->next; *s=*front; cout<<“出队元素的值:n”< delete temp;} else cout<<“队列已空”< void Linksqueue::display(){ T *temp;if(front==rear) cout<<“空队”< cout<<“队列所有元素为 front-> ”; for(temp=front->next;temp->next!=NULL;temp=temp->next) { cout< } cout< cout<<“->rear”< int main(){ Linksqueue temp;T * a;a=new(T);int select;cout<<“1入队 2出队 3显示 0退出”< cout<<“请选择操作:”; cin>>select; switch(select) { case 1: temp.Enqueue(); break; case 2: temp.Dequeue(a); break; case 3: temp.display(); break; case 0: } exit(0); break;default: cout<<“输入错误按任意键重新输入”< getch(); break;} } return 0; 实验名称:实验六 二叉树的生成与遍历 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 1、熟悉二叉树节点的定义和生成方式; 2、熟悉二叉树链式结构的生成方式; 3、掌握二叉树遍历算法的实现。 二、实验要求: 1、掌握二叉树的常见算法。 2、参照给定的二叉树的程序样例,验证给出的有关二叉树的常见算法,并实现有关的操作。 3、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1.设计实现二叉树的建立及遍历算法,要求: (1)编写创建二叉链式存储结构的二叉树程序并输出。(2)编写递归实现二叉树的先序、中序、后序遍历算法。 (3)编写主函数测试以上二叉树的创建和遍历函数。2.假设二叉树采用链式存储结构进行存储,编写程序实现二叉树的所有叶子结点的统计并输出统计个数。 四、实验结果: 五、实验中遇到的问题及解决方法: 调试的时候显示没有错误但是程序运行不出来? 在if语句中的相等要用“==”。要注意!! 六、实验心得体会: 二叉树的遍历有先序,中序,后序遍历。这三种遍历都是用递归的形式实现的。而二叉树的插入结点的算法与许多因素有关,我们要在理解二叉树结构的基础上根据需要来编写程序。我在实验中使用的二叉排序树可以作为静态查找表使用也可以作为动态查找表。附: #include front=1;rear=0;printf(“请输入二叉树的各节点,@表示虚节点,#表示节点:n”);scanf(“%c”,&ch);while(ch!='#'){ putchar(ch); s=NULL; if(ch!='@') { s=(bitree *)malloc(sizeof(bitree));s->data=ch; s->lchild=NULL; s->rchild=NULL; } rear++; Q[rear]=s; if(rear==1)root=s; else {if(s&&Q[front]) if(rear%2==0) Q[front]->lchild=s; else Q[front]->rchild=s; if(rear%2==1) front++; }scanf(“%c”,&ch);} return root;} void preorder(bitree *p){ if(p!=NULL){ printf(“%c”,p->data); preorder(p->lchild); preorder(p->rchild);} return;} void inorder(bitree *p){ if(p!=NULL){ inorder(p->lchild); printf(“%c”,p->data); inorder(p->rchild);} return;} void postorder(bitree *p){ if(p!=NULL){ postorder(p->lchild); postorder(p->rchild); printf(“%c”,p->data);} return;} int yzjd(bitree *t){ if(t==NULL)return(0);if(t->lchild==NULL&&t->rchild==NULL)return(1); return(yzjd(t->lchild)+yzjd(t->rchild));} void main(){ bitree *root;root=CREATREE(); printf(“n先序遍历结果如下:n”);preorder(root);printf(“n中序遍历结果如下:n”);inorder(root);printf(“n后序遍历结果如下:n”);postorder(root);printf(“n叶子节点的个数为:%dn”,yzjd(root)); printf(“n”);} 实验名称:实验七 查找算法实现 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 掌握各种查找算法的特点,测试并验证查找常见算法。 二、实验要求: 1、参照各种查找算法程序样例,验证给出的查找常见算法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 1.建立有序表,采用折半查找实现某一已知的关键字的查找。 2.利用折半查找算法在一个有序表中插入一个元素,并保持表的有序性。 四、实验结果: 五、实验中遇到的问题及解决方法: 六、实验心得体会: 本实验使用的是折半法查找,优点是查找效率高,在编程的时候要设置low,high,mid,分别表示区间和中间位置的值。 附: #include }; Seqlist * init()int data[MAXSIZE];int length; { } void insert(Seqlist *p){ int num=0;printf(“请输入要键入的个数:n”);if(num<1){ } int temp;for(int i=1;i length;i++) for(int j=0;j length-i;j++) if(p->data[j]>p->data[j+1]){ } temp=p->data[j];p->data[j]=p->data[j+1];p->data[j+1]=temp;printf(“请输入数据:n”);for(;num>0;num--){ } p->length++;scanf(“%d”,p->data+p->length-1);if(p->length==MAXSIZE){ } printf(“数组已满n”);break;printf(“输入个数有误n”);else Seqlist *p;p=(Seqlist *)malloc(sizeof(Seqlist));p->length=0;return p;scanf(“%d”,&num); } getchar();int binsearch(Seqlist *p){ } void display(Seqlist *p){ } int main(void){ Seqlist *p;char flag;p=init();int i;for(i=0;i length;i++)printf(“%-5d”,p->data[i]);putchar('n');getchar();int low,high,mid,key;low=0;high=p->length-1;printf(“请输入要查找的数据:n”);scanf(“%d”,&key);getchar();while(low<=high){ } return 0;mid=(low+high)/2;if(key==p->data[mid]){ } else if(key data[mid])high=mid-1;else low=mid+1;printf(“此数据位于第%d位置n”,mid+1);return mid+1; } printf(“1-插入 2-折半法查找 3-显示 0-退出n”);while(1){ } return 0;printf(“请输入操作:”);switch(flag=getchar()){ case '1' : insert(p);break;case '2' : binsearch(p);break;case '3' : printf(“所有数据为:”);display(p);break;case '0' : free(p);return 0;} 实验名称:实验八 排序综合实验 班 级 学 号 姓 名 第 周 星 期 节 成 绩 一、实验目的: 参照各种排序算法程序样例,验证给出的排序常见算法。 二、实验要求: 1、掌握各种排序算法的特点,测试并验证排序的常见算法。 2、提交实验报告,报告内容包括:目的、要求、算法描述、程序结构、主要变量说明、程序清单、调试情况、设计技巧、心得体会。 三、实验内容: 输入一组关键字序列分别实现下列排序,并将上述几种排序的算法编写成菜单,根据输入的数字不同执行对应的排序算法(任选两种排序方法实现)。 1、直接插入排序。 2、希尔排序。 3、冒泡排序。 4、直接选择排序。 5、快速排序。 6、堆排序。 7、归并排序。 8、基数排序。 四、实验结果: 五、实验中遇到的问题及解决方法: 怎样实现待排序数据长度从键盘输入? 解决方法:设置一个n,从键盘输入n的值。 六、实验心得体会: 排序的常用方法有直接插入排序,简单选择排序,冒泡排序,快速排序。我在实验中用了冒泡排序和快速排序,冒泡排序的程序比较简单容易理解而快速排序则比较复杂。快速排序要先划分序列然后建立在划分基础上进行排序,这个排序是由递归实现的。但是快速排序的优点是排序比较快。附: #include Seqlist * init(){ Seqlist *p;p=(Seqlist *)malloc(sizeof(Seqlist));p->length=0;return p;} void insert(Seqlist *p){ int num=0;printf(“请输入要键入的个数:n”);scanf(“%d”,&num);if(num<1) printf(“输入个数有误n”);else{ printf(“请输入数据:n”); for(;num>0;num--) { p->length++; scanf(“%d”,p->data+p->length-1); if(p->length==MAXSIZE) printf(“数组已满n”); } } getchar();} void bublesort(Seqlist *p){ int temp;for(int i=1;i length;i++) for(int j=0;j length-i;j++) if(p->data[j]>p->data[j+1]) { temp=p->data[j]; p->data[j]=p->data[j+1]; p->data[j+1]=temp; } } void insertsort(Seqlist *p){ int i,j,temp;for(i=1;i length;i++){ temp=p->data[i]; j=i; while(j>0&&temp data[j-1]) { p->data[j]=p->data[j-1]; j--; } p->data[j]=temp;} } void display(Seqlist *p){ int i;for(i=0;i length;i++) printf(“%-5d”,p->data[i]);putchar('n');getchar();} int main(void){ Seqlist *p,*q;char flag;p=init();q=(Seqlist *)malloc(sizeof(Seqlist));q->length=0;printf(“1-输入数据 2-直接插入排序 3-冒泡排序 4-显示 0-退出n”);while(1){ printf(“请输入操作:”); switch(flag=getchar()) { case '1' : insert(p);break; case '2' : *q=*p;insertsort(q);printf(“直接插入排序后的数据为:”);display(q);break; case '3' : *q=*p;bublesort(q);printf(“冒泡排序后的数据为:”);display(q);break; case '4' : printf(“原数据为:”);display(p);break; case '0' : free(p);return 0; } } return 0;} 一、实验目的本实验以模拟企业的实际会计工作为基础,按照企业会计制度和企业会计准则的要求,进行操作训练,通过手工操作掌握会计核算的基本操作程序,以及各种凭证、帐表的填制规定和方法,把枯燥、抽象的书本知识转化为实际、具体的操作。有目的地检验和复习学生所学的会计理论、方法、技能和技巧,通过实际的操作,使学生比较系统、全面地掌握工业企业会计核算的基本程序和具体方法,加强学生对会计基本理论的理解和对会计基本技能的掌握,形象地掌握各种业务的处理及记账凭证的填写方法,掌握账簿的处理及登记方法,掌握成本核算方法,掌握各种报表的编制方法,掌握会计资料的整理归档方法,同时,在不同岗位进行不同操作,使之在实验中,培养职业道德和职业判断能力,提高职业工作能力,为今后从事会计实务工作打下扎实的基础。 二、实验内容及过程 1、建立账簿:按照公司实际业务的需要开设帐簿,建立现金、银行存款日记帐簿、总分类帐簿、建立各项明细帐簿,根据资料录入各账簿的期初余额。建账完成后进行试算平衡,以确保期初的正确性。在这过程中应注意: (1)账页的正确选择; (2)分清借贷方向,准确填写对应数字。 2、填制凭证:根据实验资料所给的原始凭证,填写相应的记账凭证。填写时要注意业务发生的日期,正确判断业务,准确的写出会计分录。另外还要注意每笔业务需要的凭证张数,需要一张以上凭证填列时,需在凭证编号后再加上一个分数(第*张凭证/共#张凭证)。最后需要在凭证下方的制单处签上制单人的姓名。过程中要求: (1)内容真实可靠、内容完整、填制及时、书写清楚、次序使用; (2)签章的使用及区别; (3)原始凭证各联的用途; (4)尤其需要注意的是支票的填制及使用要求。 3、原始凭证的审核: (1)审核原始凭证涉及单位、责任人、时间、地点、金额的真实性; (2)审核原始凭证要素的完整性,包括凭证的名称、日期、签名签章、内容; (3)审核原始凭证的合法性和合理性;审核原始凭证摘要、金额的正确性; 4、填制记账凭证: (1)必须根据审核无误的原始凭证填制记账凭证; (2)填写记账凭证的日期、编号、摘要; (3)正确填写账户名称并正确反映借贷方向; 5、审核记账凭证: (1)所附原始凭证是否齐全,两者内容是否相符,金额是否一致; (2)借贷账户名称是否与经济业务相符,账户对应关系是否清楚,金额是否正确; (3)手续是否完整,项目是否齐全,是否已签章; 6、登记明细帐,其中包括: (1)三栏式明细账,适用于登记金额不反应数量的账户。 (2)数量金额式,适用于既需要核算金额又需要核算数量的明细科目; (3)多栏式,适用于费用、成本和收入等科目的明细核算。根据审核无误的记账凭证或原始凭证按经济业务发生的时间先后顺序逐日逐笔进行登记相应的明细账。 编制科目汇总表:根据一定时期内的全部记账凭证,按科目进行归类编制的。 7、在科目汇总表中,分别计算出每一个总账科目的借方发生额合计数、贷方合计数。划出“T”字型帐户、登记科目汇总表、对科目汇总表进行试算平衡。并根据借贷记账法的记账规则,有借必有贷借贷必相等 8、登记总分类账:根据试算平衡后的科目汇总表登记总帐总分类账户,并与其所属的明细分类账户应该进行平行登记。总分类账与明细分类账的平行登记要点,有依据相同、期间相同、金额相同、方向相同。 9、对账:当完成本月所有业务后,就需要进行对账,即总账与明细账核对,各个对应科目余额相一致时对账工作就可结束。如果出现总账与明细账科目余额不 相同的情况时,应查看该科目所涉及到的每笔业务的原始凭证,查出错误并进行改正。 10、结账:经过对账的工作后,可以基本保证该账务处理的正确性。就可以做结账的工作了,即把所有账簿中会计科目的余额都给结出来并进行试算平衡。 11、编制资产负债表的方法: (1)资产负债表的平衡公式:资产=负债+所有者权益 (2)资产负债表是根据总账账户期末余额分析填列的。 (3)根据有关二级账户或明细账户的期末余额直接填列。 (4)根据同类的几个总账账户的期末余额合并或抵减填列。 (5)根据总账账户或明细账户的期末余额分析计算填列 12、利润表的编制方法 (1)构成主营业务利润的各项要素。从主营业务收入出发,减去主营业务成本和主营业务税金及附加后得出主营业务利润。 (2)构成营业利润的各项要素。在主营业务利润的基础上,加上其他业务利润,减去营业费用、管理费用、财务费用后得出。 (3)构成利润总额的各项要素。在营业利润的基础上,加上投资收益(亏损以“-”表示)、补贴收入、营业外收入,减去营业外支出后得出。 (4)构成净利润的各项要素。在利润总额的基础上,减去所得税费用后得出。 13、审核报表。 三、实验中遇到的问题及解决途径 1、刚开始时,在登帐过程中很容易出现书写错误,常常抄错数字或借贷写反、会计分录写错,导致核算结果出错,引起不必要的麻烦,使会计档案美观程度受损。这是就需要我们细心对待每一笔账,认真做好每一个步骤的工作、填写好相关会计档案。 2、会计分录是关键所在,在编制过程中不够熟练,有出错的情况,造成了后续工作的阻碍,浪费了时间、拖缓了完成时间。在这一过程中,以后还需要加强 练习,熟悉课本知识。 3、错帐时,用错帐更正法,通常有划线更正法、补充登记法、红字更正法三种,严禁填补、挖改。 4、填写原始凭证时要格外注意书写格式及大小写。 5、装订记账凭证时要熟练,细心。 四、经验总结 会计是一个讲求严谨性和细密性的工作,它的本性决定了从业人员必须具备的一丝不苟的敬业精神。而这些,都以法律的形式写进了一些规章制度,虽然学习会计道德和相关会计法规法律的时候就知道了这些,而当时的自己却存在更多的不以为然。实践证明,没有实际操作就没有发言权,没有经历过就不了解这句话的深刻含义。实训过程过程,我深刻体验到了这一点,在做账务时,一个小数点错了,可能导致你后面的全部错了,一个编号的错误,可能意味着你得从头再来。如果把做账看做棋局,那么一着不慎、满盘皆输。诚然,在学习的过程中,错误是难以避免的,但是如果每次我们可以从错误中吸取教训、总结经验、思索得失,那对于我们职业习惯的培养、优良品格的塑造,也会有着举足轻重的作用。而对于一名会计专业的学生,更多的我们以后走上社会从事相关工作,在实训中有些错误可以反复犯,但将来或许一次错误之后,你就失去了再次犯错的机会。无疑,认真细致、严谨耐心,是我们必须具备的。一个学期的实训,我深刻的体会到作为一个会计人员所需要的一份细心,一份耐心,一份责任心.我们应当谨记:差之毫厘,谬以千里。 这个学期的综合实训虽然要结束了,但是在这个过程中我深刻体会到的会计工作在企业的日常运转中的重要性,以及会计工作对我们会计从业人员的严格要求,培养的严谨细致精神,这些必然会对将来的学习和工作有一个很好的积淀作用。在实际操作过程中找出自身存在的不足,在今后的会计学习明确的方向和目标,通过实训,对于会计核算的感性认识进一步加强。“纸上得来终觉浅,绝知此事要躬行”,实训课程将会计专业理论知识和专业实践,有机的结合起来,开阔了我们的视野,增进了我们对企业实践运作情况的认识,也为我们得将来奠定了坚实的基础。在知识上,由朦朦胧胧变得比较明白;在能力上,由完全不敢动手,不会动手,到基本能动手;在情感上,由对学习会计兴趣不大甚至厌烦,到开始 有了较大兴趣,有的还感到了相当的乐趣。在作风上,由以前普遍性的马虎,拖沓。变为大多数人能谨慎,主动。在相互关系上,由彼此很少交流,到能实现真正的互相帮助。在个人未来打算上,重新构思了自己的奋斗目标,普遍感到了压力,产生了动力。 总而言之,本次会计模拟实训使我有了成就感,产生了责任感,树立了自信心,增强了进取心,加深了同学之间一起做账而产生的真正友谊。使我系统的掌握企业会计核算的全过程,从而实践中可以消化理论知识,巩固以前学习过的会计理论和会计方法,全面掌握会计操作的全部技能,即从建账、填制和审核原始凭证,记账凭证到登记账簿,从日常会计核算,成本计算到编制财务会计报告,在操作中复习以前学的会计主干课程和基本知识。同时以便于我在会计专业知识学习中查漏补缺,弥补差距,检查实际操作能力,有助于走上工作岗位后,便能得心应手、游刃有余。而在今后,我将继续发扬这些精神,注重实践,向着广阔的未来努力。第三篇:科学实验报告
第四篇:软件技术基础实验报告
第五篇:基础会计实验报告