第一篇:数据结构_实验2_顺序表的基本操作(推荐)
实 验 报 告
实验课程
数据结构
实验项目
实验
二、顺序表的基本操作
实验地点
指导教师
班
级
学生姓名
学
号
教师评分
日
期
浙江传媒学院实验报告
一、实验目的
1、掌握线性表的顺序存储结构;
2、掌握顺序表及其基本操作的实现;
3、掌握数据结构及算法的程序实现的基本方法。
二、实验设备
1.安装有WinXP的PC一台;
2.安装有软件VC6或者Visual Studio2005。
三、实验内容
1、建立含有若干个元素的顺序表;
2、对已建立的顺序表实现插入、删除、查找等基本操作;
3、对两个顺序表进行合并操作。
四、实验步骤
1.根据下面的表格,定义一个表示数据元素的结构体。
2.根据教材的内容,定义顺序表的结构体。
3.根据教材的内容,编写代码,实现顺序表的下列函数。
浙江传媒学院实验报告
4.定义数据元素输入函数如下。请完善代码。
5.定义顺序表的创建函数如下,请完善代码。
6.定义数据元素的输出函数如下,请完善代码。
7.定义main函数,要求完成如下功能。
A.定义三个顺序表分别为list1, list2,list3; B.初始化两个顺序表list1和list2;C.输入顺序表list1;
浙江传媒学院实验报告
D.输入list2;E.合并list1和list2到list3中; F.删除list3中的
第二篇:顺序表的基本操作
*********************************** 实验题目 :顺序表的基本操作
班 级 :
姓 名: 学 号: 专 业: 实验完成的时间:
*********************************
一、实验目的
(1)(2)(3)(4)掌握顺序表的基本运算,熟悉对顺序表的一些基本操作和具体函数的定义。掌握顺序表的存储结构及其基本操作。
熟悉c语言程序的基本结构,掌握函数定义、调用等功能。
熟悉c语言环境的使用及程序的输入、编辑、调试和运行的全过程。
二、实验要求
(1)熟练掌握线性表的存储结构及其基本操作。
(2)理解所给出的算法,掌握顺序表在实际中的应用。
(3)将上机程序调试通过,并能独立完成一至两个拓展题目。
三、实验内容
实现顺序表上的插入、删除等操作。调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果。加深对有关算法的理解。
(1)主要内容:
#define MAXSIZE 100 /*宏定义*/ //#define OVERFLOW-2 #include “stdio.h” /*包含输入输出文件*/
typedef int data;typedef struct /*定义顺序表的结构*/ {data vec[MAXSIZE];/*顺序表数据成员所占据的存储空间*/ int last;/*顺序表中最后一个元素在数组中的下标(或向量中的位置)从0开始*/ }sequenlist;int insert(L,i,x)/*在顺序表的第i个元素之前插入一个新元素x*/ sequenlist *L;int i;data x;
{ int j;if(((*L).last)>=MAXSIZE-1){printf(“the list is overflow!n”);return(0);/*溢出判断*/ } else if((i<1)||(i>(*L).last+1)){printf(“position is not correct!n”);return(0);/*插入位置不正确*/ } else {for(j=(*L).last;j>=i-1;j--)/*后移元素*/(*L).vec[j+1]=(*L).vec[j];(*L).vec[i-1]=x;/*插入新元素*/(*L).last=(*L).last+1;/*修改last的值*/ } return(1);} void DELETET(L,i)sequenlist *L;int i;{ int j;if(i<1||(i>L->last+2))
printf(“删除的位置错误n”);else {
for(j=i;j<=(*L).last;j++)
(*L).vec[j-1]=(*L).vec[j];
(*L).last--;
} } void listprint(sequenlist *L)/*输出线性表*/ { int i;for(i=0;i<=(*L).last;i++)printf(“i,e=%d,%dn”,i,L->vec[i]);} main(){ sequenlist sl={{1,2,3,4,5,6,7,8,9,10},9};//直接给顺序表赋初值 sequenlist *L;/*定义一个指向顺序表类型的指针变量*/ int i,j,x;//elemtype e;
L=&sl;/*给指针变量赋值*/ printf(“请输入你插入的位置和数n”);scanf(“%d,%d”,&i,&x);printf(“这个插入的位置: %d n插入的数:%dn”,i,x);insert(L,i,x);listprint(L);printf(“请输入删除的位置:”);scanf(“%d”,&j);DELETET(L,j);listprint(L);}(2)预习思考题
(1)定义一个定位函数locate(L,x),具有元素检索的功能。当顺序表中存在一个值为x的数据元素时,返回第一次找到的数据元素的位序,否则,给出一个值,表示值为x的元素不存在。在主程序中调用该函数,分析操作结果。算法如下
int locat(L,x)/* x由主函数输入并接受locat的返回值 */ sequenlist *L;int x;{ int i;for(i=0;i<=(*L).last;i++)
if((*L).vec[i]==x)
return(i+1);/*如果存在x则返回x的位置*/ return 0;/*否则返回0 */ }
说明:主函数输入定位值X由函数locat(L,x)接收完成定位功能后返回x的位置,若X不存在则返回0,主函数接受返回值,若返回值不等于0则调用listprint(L)函数输出结果,否则输出X不在线性表中
(2)定义一个逆置函数diverse(L),把顺序表进行逆置。在主程序中调用该函数,分析操作结果。void diverse(L)sequenlist *L;{
int i,j,n,k;
n=(*L).last;
j=(*L).last/2;
for(i=0;i<=j;i++)
{ k=(*L).vec[i];
(*L).vec[i]=(*L).vec[n-i];
(*L).vec[n-i]=k;
} } 运行程序前
运行程序后
说明:主函数只需调用diverse(L)完成逆置功能,并调用listprint(L)函数输出结果。(3)定义一个函数delsame(L),把顺序表中重复的元素删除掉,只保留一个。在主程序中调用该函数,分析操作结果
void delsame(sequenlist *L){ int i = 0, j, t;for(i = 0;i <= L->last;i++){
for(t = i+1;t<= L->last;t++)
{
if(L->vec[i] == L->vec[t])
{
for(j = t;j<= L->last;j++)
L->vec[j-1] = L->vec[j];
L->last--;
}
} } } 运行程序前
运行程序后
说明:主函数只需调用delsame(L),把顺序表中重复的元素删除掉,只保留一个,并调用listprint(L)函数输出结果。
四、算法设计与编码
1.本实验用到的理论知识
顺序表的数据结构的定义,C语言中循环语句,if条件语句,函数定义、调用等相关知识。
2.算法概要设计 具体有以下函数:
(1)insert(L,i,x)在顺序表的第i个元素之前插入一个新元素x.(2)deletet(L,i)删除顺序表的第i个元素。(3)listprint(L)输出顺序表
(4)locate(L,x)定位函数,具有元素检索的功能(5)diverse(L)逆置函数,把顺序表进行逆置
(6)delsame(L), 把顺序表中重复的元素删除掉,只保留一个 主函数调用以上函数完成相关功能。3.运行与测试
(1)在调试程序的过程中遇到什么问题,是如何解决的?
在定位时出现多次返回0,在单步调试后,吧return 0 放到if语句外。
(2)程序运行的结果如何?
五、总结和心得
通过本次实验我学会了顺序表的基本运算,了解了顺序表的一些基本操作和具体函数,学会了定 义线性表的顺序存储类型。在实验过程中编写insert函数的时候对if(((*L).last)>=MAXSIZE-1)很不理解,不知道为什么是MAXSIZE-1,而不是MAXSIZE;
第三篇:顺序表的操作实验报告
顺序表的基本操作
一、实验目的
1、复习C++语言程序设计中的知识。
2、熟悉线性表的逻辑结构。
3、熟悉线性表的基本运算在两种存储结构上的实现。
4、掌握顺序表的存储结构形式及其描述和基本运算的实现。
5、熟练掌握动态链表结构及有关算法的设计
二、实验内容
实现顺序表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。[基本要求](1).依次从键盘读入数据,建立带头结点的顺序表;(2).输出顺序表中的数据元素
(3).根据指定条件能够取元素和修改元素;(4).实现在指定位置插入和删除元素的功能。
三、实验步骤、调试及输出结果
(—).数据结构与核心算法的设计描述: #include
/*当前的表长度*/ /*顺序表的打印:*/ void PrintList(SeqList *L,int n){int i;printf(“the sqlist isn”);for(i=1;i<=n;i++)printf(“%d ”,L->elem[i]);printf(“n”);}
/*顺序表的查找:*/ int LocateList(SeqList *L,int x){int i;i=1;while(((L->elem[i])!=x)&&(i<=10))++i;if((L->elem[i])==x)return(i);else return(0);}
/*顺序表的插入:*/ void InsertList(SeqList *L,int x,int i){int j;if(i<1 ||i>L->length+1)printf(“no insert position!n”);else {for(j=L->length;j>=i;j--)L->elem[j+1]=L->elem[j];L->elem[i]=x;L->length++;} } /*顺序表的删除:*/ void DeleteList(SeqList *L,int i){int j;if(i<1 ||i>L->length)printf(“no delete position!n”);else {for(j=i;j<=(L->length)-1;j++)L->elem[j]=L->elem[j+1];L->length--;} } void main(){
SeqList L;int i,x;int n=10;
/*当前顺序表的长度*/ L.length=0;CreateList(&L,n);
/*建立顺序表*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the research element:”);scanf(“%d”,&x);i=LocateList(&L,x);/*顺序表查找*/ printf(“the research position is %dn”,i);printf(“input the position of insert:”);scanf(“%d”,&i);printf(“input the value of insert:”);scanf(“%d”,&x);InsertList(&L,x,i);/*顺序表插入*/ PrintList(&L,L.length);
/*输出顺序表*/ printf(“input the position of delete:”);scanf(“%d”,&i);DeleteList(&L,i);/*顺序表删除*/ PrintList(&L,L.length);/*输出顺序表*/ }(二).调试及输出结果 测试数据:
1、输入n个数;
2、输出顺序列表;
3、顺序表的查找;4.顺序表的插入;
5、顺序表的删除;
数据测试如下截图:
四、实验讨论与总结:
通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。
在这次设计的过程中,我知道了顺序表是按顺序存储的,用了一维数组来存储,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。
单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。
这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。
第四篇:数据结构--实验报告 线性表的基本操作
}(一)单链表的基本操作
#include
LinkList q=L;//使q指向表尾
} Status GetElem(LinkList L,int i,ElemType &e)//取第i个元素 { LinkList p=L->next;int j=1;while(p&&jnext;++j;} for(int i=1;i<=n;i++){ p=new LNode;
cin>>p->data;p->next=NULL;q->next=p;q=p;} if(!p||j>i)return error;//第i个元素不存在
e=p->data;return ok;} Status LinkInsert(LinkList &L,int i,ElemType e)//插入 { LinkList p=L;int j=0;while(p&&j
s->data=e;s->next=p->next;//插入L中
p->next=s;return ok;}
Status ListDelete(LinkList &L,int i,ElemType &e)// 删除 { LinkList p=L;LinkList q;int j=0;while(p->next&&j p=p->next;++j;} if(!(p->next)||j>i-1)return error;//删除位置不合理 q=p->next;p->next=q->next;//删除并释放结点 e=q->data;delete(q);return ok; } void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc){ //合并两个顺序链表 LinkList pa,pc,pb;pa=La->next;pb=Lb->next;Lc=pc=La;while(pa&&pb){ if(pa->data<=pb->data) { pc->next=pa; pc=pa;pa=pa->next;} else { pc->next=pb; pc=pb; pb=pb->next;} } pc->next=pa?pa:pb;delete(Lb);} void show(LinkList L)//{ LinkList p;p=L->next;while(p){ cout< data<<“-->”;p=p->next;} cout< 显示 表长 3 p=p->next;} return i;} void xiugai(LinkList L)//修改 { int i,j=1;ElemType k;ElemType e,m;LinkList p=L->next;cout<<“请输入要修改的元素位置(0>i;GetElem(L,i,e);cout<<“该位置的元素:”< cin>>x; cout<<“请输入”< CreateList(list,x);break;case 2: cout<<“单链表显示如下:”< show(list);break;case 3: int s;cout<<“单链表的长度为:”< ListDelete(list,x,y); } break;case 8: hebing();break;case 9: exit(0);break;default : cout<<“输入有误,请重新输入”< 四、测试结果 1)顺序表 的测试结果 8 2)单链表的测试结果 五、心得体会 当听到老师说写数据结构实验报告时,我有点惊讶,才学了不到一个月,就要写实验报告。记得去年学习C++时,学了一个学期,程序设计用了三周,才完成的,这个实验报告居然要一周完成两个设计,觉得很难。但是现在一周过去了,我也写完了,自我感觉良好。 通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼,而C++是填充这骨骼的肉体,二者相结合才能使整个程序更加完整,健全。数据结构是个框架,模型,抽象数据类型中列举了各种操作,而所用的C++语言,将各种操作描述出来构成算法。数据结构+算法=程序设计。 在这次设计的过程中,我还遇到了,很多的问题。顺序表是按顺序存储的,用了一维数组来存储,又结合C++的程序设计,我又用了类,但是,在执行时出现了问题。后来问同学,指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。 单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数……通过修改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。 这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会继续我的兴趣编程,相信在编程的过程中,能不断的提高自己。 一、初中化学实验常用仪器和药品的取用规则 (一)初中化学实验常用仪器 1、试管(1)用途: a、在常温或加热时,用作少量试剂的反应容器 b、溶解少量固体 c、收集少量气体(2)注意事项: a、加热时外壁必须干燥,不能骤热骤冷,一般要先均匀受热,然后才能集中受热,防止试管受热不均而破裂.b、加热时,试管要先用铁夹夹持固定在铁架台上(短时间加热也可用试管夹夹持).c、加热固体时,试管口要略向下倾斜,且未冷前试管不能直立,避免管口冷凝水倒流使试管炸裂.d、加热液体时,盛液量一般不超过试管容积的1/3(防止液体受热沸腾溢出),使试管与桌面约成45°的角度(增大受热面积,防止暴沸),管口不能对着自己或别人(防止液体喷出伤人).2、试管夹 (1)用途:夹持试管 (2)注意事项:①从底部往上套,夹在距管口1/3处(防止杂质落入试管)②不要把拇指按在试管夹短柄上.3、玻璃棒 (1)用途:搅拌、引流(过滤或转移液体).(2)注意事项:①搅拌不要碰撞容器壁②用后及时擦洗干净 4、酒精灯 (1)用途:化学实验室常用的加热仪器(2)注意事项: ①使用时先将灯放稳,灯帽取下直立在灯的右侧,以防止滚动和便于取用.②使用前检查并调整灯芯(保证更好地燃烧,火焰保持较高的的温度).③灯体内的酒精不可超过灯容积的2/3,也不应少于1/3(酒精过多,在加热或移动时易溢出;酒精太少,容器内酒精蒸气混入空气易引起爆炸).④禁止向燃着的酒精灯内添加酒精(防止酒精洒出引起火灾) ⑤禁止用燃着的酒精灯直接点燃另一酒精灯,应用火柴从侧面点燃酒精灯(防止酒精洒出引起火灾).⑥应用外焰加热(外焰温度最高).⑦用完酒精灯后,必须用灯帽盖灭,不可用嘴吹熄.(防止将火焰沿着灯颈吹入灯内)⑧用完后,立即盖上灯帽(防止酒精挥发使灯芯水含量相对变多而不易点燃).⑨不要碰倒酒精灯,若有酒精洒到桌面并燃烧起来,应立即用湿抹布扑盖或撒沙土扑灭火焰,不能用水冲,以免火势蔓延.5、胶头滴管、滴瓶 (1)用途:①胶头滴管用于吸取和滴加少量液体.②滴瓶用于盛放少量液体药品.(2)注意事项: ①先排空再吸液; ②悬空垂直放在试管口上方,以免污染滴管; ③吸取液体后,应保持胶头在上,不能胶头在下或平放;(防止液体被沾污,或腐蚀胶头)④除吸同一试剂外,用过后应立即洗净,再去吸取其他药品;(防止试剂相互反应变质)⑤滴瓶上的滴管与瓶配套使用,滴液后应立即插入原瓶内,不得弄脏,也不必用水冲冼.6、铁架台(包括铁夹和铁圈) (1)用途:用于固定和支持各种仪器,一般常用于过滤、加热等实验操作.(2)注意事项: a、铁夹位置要向上,以便于操作和保证安全.b、重物要固定在铁架台底座大面一侧,使重心落在底座内.7、烧杯 (1)用途:用于溶解或配制溶液或作较大量试剂的反应容器.(2)注意事项:受热时外壁要干燥,并放在石棉网上使其受热均匀(防止受热不均使烧杯炸裂),加液量一般不超过容积的1/3(防止加热沸腾使液体外溢).8、量筒 (1)用途:量取液体的体积 (2)注意事项:不能加热,不能作为反应容器,也不能用作配制或稀释溶液的容器.9、集气瓶(瓶口上边缘磨砂,无塞)(1)用途: ①用于收集或短时间贮存少量气体.②用作物质在气体中燃烧的反应器.(2)注意事项: ①不能加热 ②收集或贮存气体时,要配以毛玻璃片遮盖 ③在瓶内做物质燃烧反应时,若有固体生成,瓶底应加少量水或铺一层细沙.10、蒸发皿 (1)用途:用于蒸发液体或浓缩溶液.(2)注意事项: ①盛液量不能超过2/3,防止加热时液体沸腾外溅 ②均匀加热,不可骤冷(防止破裂)③热的蒸发皿要用坩埚钳夹取.(二)实验室药品取用规则(熟悉化学实验室药品的一些图标) 1、取用药品要做到“三不原则”①不能用手接触药品 ②不要把鼻孔凑到容器口直接去闻药品(特别是气体)的气味(用手轻轻搧动,使少量气体飘入鼻中)③不得尝任何药品的味道.2、注意节约药品.如果没有说明用量,就用最少量:液体取用1~2ml,固体只需盖满试管底部.3、用剩药品要做到“三不一要”①实验剩余的药品既不能放回原瓶 ②也不能随意丢弃 ③更不能拿出实验室 ④要放入指定的容器内.4、实验中要注意保护眼睛.(三)固体试剂的称量 仪器:托盘天平(托盘天平只能用于粗略的称量,能称准到0.1克)步骤:调零、放纸片、左物右码、读数、复位 使用托盘天平时,要做到①左物右码;添加砝码要用镊子不能用手直接拿砝码,并先大后小;称量完毕,砝码要放回砝码盒,游码要回零.药品的质量=砝码读数+游码读数 若左右放颠倒了,药品的实际质量=砝码读数-游码读数 ②任何药品都不能直接放在托盘中称量,干燥固体可放在纸上称量,易潮解药品要在(烧杯或表面皿等)玻璃器皿中称量.注意:称量定量的药品应先放砝码,再移动游码,最后放药品;称量未知量的药品则应先放药品,再放砝码,最后移动游码.(四)连接仪器装置 1、玻璃导管插入胶塞(用水润湿) 2、玻璃导管插入胶皮管(用水润湿) 3、胶塞塞进容器口 (五)检查装置的气密性 二、药品的取用 1、固体药品的取用(存放在广口瓶中) (1)块状药品或金属颗粒的取用(一横二放三慢竖)仪器:镊子 步骤:先把容器横放,用镊子夹取块状药品或金属颗粒放在容器口,再把容器慢慢地竖立起来,使块状药品或金属颗粒缓缓地沿容器壁滑到容器底部,以免打破容器.(2)粉末状或小颗粒状药品的取用(一斜二送三直立)仪器:药匙或纸槽 步骤:先把试管倾斜,用药匙(或纸槽)把药品小心送至试管底部,然后使试管直立起来,让药品全部落入底部,以免药品沾在管口或试管上.注:使用后的药匙或镊子应立即用干净的纸擦干净.2、液体药品的取用 (1)少量液体药品可用胶头滴管取用 (2)大量液体药品可用倾倒法.(一倒二向三紧挨)步骤: ①瓶塞倒放在实验台(防止桌面上的杂物污染瓶塞,从而污染药品); ②倾倒液体时,应使标签向着手心(防止残留的液体流下腐蚀标签), ③瓶口紧靠试管口,缓缓地将液体注入试管内(快速倒会造成液体洒落); ④倾注完毕后,立即盖上瓶塞(防止液体的挥发或污染),标签向外放回原处.(3)一定量的液体可用量筒取用 仪器:量筒、胶头滴管 步骤:选、慢注、滴加 注意事项:使用量筒时,要做到 ①接近刻度时改用胶头滴管 ②读数时,视线应与刻度线及凹液面的最低处保持水平③若仰视则读数偏低,液体的实际体积>读数; 俯视则读数偏高,液体的实际体积<读数.三、物质的溶解 1、少量固体的溶解(振荡溶解):手臂不动、手腕甩动 2、较多量固体的溶解(搅拌溶解)仪器:烧杯、玻璃棒 四、物质的加热 1、给试管中的液体加热 仪器:试管、试管夹、酒精灯 注意事顶:(1)加热试管内的液体时,不能将试管口对着人;防止沸腾的液体冲出试管烫伤人.(2)若试管壁有水,加热时必须擦干净,防止试管受热不均,引起试管炸裂.(3)将液体加热至沸腾的试管,不能立即用冷水冲洗;因为一冷一热,试管容易炸裂.(4)给试管中液体预热的方法:夹住试管在外焰来回移动便可预热.(5)预热后,集中加热盛有液体的中下部,并不时沿试管倾斜方向上下平移试管,以防止液体受热暴沸而喷出.2、给试管中的固体加热 仪器:试管、铁架台、酒精灯 注意点:装置的固定、铁夹夹的位置、管口的方向、加热的顺序 给物质加热的基本方法:用试管夹夹住离试管口1/3处,首先在酒精灯外焰处加热,然后将试管底部集中在外焰处加热.3、蒸发 仪器:蒸发皿、铁架台、玻璃棒、酒精灯 注意点 仪器的装配: 停止加热:接近蒸干或有大量晶体析出 玻璃棒的作用:加快蒸发、防止液滴溅出 五、混合物的分离 1、过滤和滤渣的洗涤 仪器:漏斗、铁架台、烧杯、玻璃棒 注意点:“一贴”“二低”“三靠” 2、蒸馏水的制取 仪器:铁架台(带铁夹、铁圈)、酒精灯、石棉网、蒸馏瓶、冷凝管、尾接管、锥形瓶、温度计 注意点:沸石——防止爆沸 六、仪器的洗涤 ①洗涤时,易溶的直接用水洗,难溶的可以用酸洗,附有油脂的可以用洗涤剂洗后,再用水冲洗.②洗涤干净的标准:内外壁附着的水既不聚成水滴,也无成股水流下.七、课本中的重要实验 1、蜡烛及其燃烧的探究(P12) 2、对人体吸入空气和呼出气体的探究(P14) 3、测定空气里氧气含量(P27) 4、氧气的制取和性质的探究(P39) 5、过滤(P55) 6、蒸馏水的制取(P56) 7、简易净水器(P57) 8、质量守恒定律的探究(P90) 9、炭粉还原氧化铜(P107) 10、实验室制取CO2的研究与实践(P110) 11、CO2灭火、溶于水、使紫色石蕊变红色原因的探究(P114) 12、燃烧条件的探究(P124) 13、蜡烛燃烧现象的探究(P125) 14、氢气实验室制法(P143) 八、常见物质的颜色、状态及溶解性 1、不溶物: 黑色:MnO2、Fe3O4、CuO、C(石墨、木炭、炭黑、活性炭)、铁粉 红色:Fe2O3、Cu、P(红磷)蓝色:Cu(OH)2 白色:CaCO3、CaO(能与水反应生成白色的微溶于水的氢氧化钙)、P(白磷) 2、易溶物: 白色:KClO3、KCl、NaCl、CaCl2、ZnSO4、Al2(SO4) 3、无水CuSO4等 紫黑色:KMnO4(溶于水溶液紫红色) 3、溶液的颜色: 蓝色:CuSO4、CuCl2、Cu(NO3)2溶液 浅绿色:FeSO4、FeCl2、Fe(NO3)2溶液 无色:除以上物质外,其他物质的溶液多数是无色.第五篇:初中化学基本实验操作总结