实验5

合集下载

C语言实验五实验报告——数组

C语言实验五实验报告——数组

C语言实验五实验报告——数组一、实验目的:1.了解数组的概念和基本使用方法;2.掌握一维数组和二维数组的定义、初始化、赋值及基本运算实现;二、实验内容与方法1.理论部分数组是一些具有相同类型的数据元素按一定顺序排列组合而成的集合,在程序设计中它是一个变量列表,由若干相同数据类型的元素组成。

通常用一个名字和一个下标来表示,下标可理解为数组元素在数组中的位置编号。

数组的特点:数组是根据顺序排列的元素的集合;所有的元素必须是相同类型。

数组的定义方法:1. 定义数组,数组元素类型 + 数组名[元素的个数];2. 元素的个数必须是整型常量或变量,定义时必须明确、指定元素的个数;3. 声明一个数组时,除了要指定数组的类型外,还要指定数组的名称;4. 数组定义完后,需要对其中的每个元素进行初始化。

可以在定义数组时赋初值,也可以通过赋值符号,对数组元素逐个进行赋值。

数组的初始化:1. 元素个数之间用逗号分开,最后1个元素后无逗号;2. 支持部分元素初始化;3. 定义和初始化可以一步完成。

二维数组数组可分为一维和多维数组。

一维数组可以看作是包含多个元素的向量,而二维数组可以看做是包含了多个一维数组的矩阵。

二维数组有行号和列号,因此,它同样需要两个下标。

数组元素类型数组名[行数][列数];数组元素类型数组名[ ][ ] = { {元素1, 元素2, ……}, {元素1, 元素2, ……}, ……{元素1, 元素2, ……}}2.实验代码**问题1:**定义一个一维数组a,包含有5个元素,分别为1,2,3,4,5;**问题2:**定义一个一维数组a,接收用户从键盘输入的5个数值,分别打印存储的各个元素。

三、实验结果与分析结果分析:定义了一个5个元素的一维数组a,并初始化了各个元素的值,其元素分别为1,2,3,4,5.循环遍历一遍数组a,并打印数组元素。

程序执行正常。

3.针对问题3:定义一个二维数组a,由4行3列组成,每个元素初始化为0,打印存储的各个元素;程序运行结果如下:四、实验总结:该实验主要是通过对C语言数组的理论知识和基本操作进行练习,加深了对数组的了解和掌握。

大学分析化学实验:实验五天然水硬度测定

大学分析化学实验:实验五天然水硬度测定
的正确使用; 2.容量瓶与移液管的规范操作; 3.滴定管的正确使用; 4.滴定接近终点时滴定速度要慢,多 摇动;注意终点颜色的观察。
五、数据记录 1.总硬度的测定
平行测定次数 记录项目
1
2
3
EDTA体积初始读数
/mL
EDTA体积终读数/mL
VEDTA /mL
总硬度/°
相对平均偏差/%
总硬度 cV 56.08 mg L1 cV 56.08
0.1
0.110
3.钙硬度的测定
准确移取澄清水样200mL,放入 500mL烧杯中,滴加4mL 10% NaOH 溶液摇匀后,加约黄豆大小的钙指示 剂,摇匀溶液呈浅红色,用已标定 EDTA标准溶液滴定至纯蓝色,即为 终点。平行测定3次,记录数据。计算 钙的硬。
水中的Ca2+、Mg2+ 离子可用
EDTA标准溶液进行滴定。
二、实验原理
水的硬度的测定可分为水的总硬度 的测定和钙、镁硬度的测定两种。总硬 度的测定是滴定Ca、Mg总量,并以Ca 进行计算。后一种是分别测定Ca和Mg 的含量。
二、实验原理
标定EDTA溶液用“钙指示剂”作为指示剂。
钙指示剂在溶液pH值为12~14的条件下显蓝色,
四、实验步骤
2.总硬度的测定
准确移取澄清的水样200mL,放入250mL 锥形瓶中,加入5mL pH=10 NH3-NH4Cl (氨性)缓冲液,1:2 三乙醇胺(埯蔽作 用)0.5mL,摇匀。再加入约黄豆大小的 铬黑T固体指示剂,再摇匀,此时溶液呈 酒红色,用已标定的0.02moL·L-1 EDTA标 准溶液滴定至纯蓝色,即为终点。平行测 定3次,记录数据。计算水的总硬度。
硬度(°)=
cEDTA

实验五 转化法制备

实验五 转化法制备
几种盐类在不同温度下的溶解度(g/100gH2O)
温度(℃) 盐
0 35.7 73 27.6 13.3
10 35.8 80 31.0 20.9
20 36 88 34.0 31.6
30 36.3 96 37.0 45.8
50 36.8 114 42.6 83.5
80 38.4 148 51.1 169
100 39.8 180 56.7 246
NaCl NaNO3 KCl KNO3
三、学习内容 1.溶解 (1)水浴锅 (2)简易装置 图7-1 水浴装置
实验五 转化法制备硝酸钾
2.蒸发 3.结晶 4.过滤 图7-2 沙锅加热 图7-3 滤纸的折叠方滤
图7-4 过滤操作
图7-5 减压过滤的装置
实验五 转化法制备硝酸钾
(3)热过滤
图7-6 热过滤装置 5.倾析法和离心分离法 (1)倾析法 (2)离心分离法
图7-7 倾析法
(1)手摇离心机 (2)电动离心机 图7-8 实验室用离心机
实验五 转化法制备硝酸钾
四、课堂实验要求 1.KNO3的制备 2.重结晶法提纯KNO3 3.产品纯度的检验
水 15ml ↓ 称盐 →溶解(沸腾)→浓缩析盐→ 热过滤 → 冷却结晶 →减压抽 静置 NaNO 3 8.5 g
实验五 转化法制备硝酸钾
一、实验目的 1.学习利用温度对物质溶解度影响的不同和复分解反应制 备盐类。 2.学习溶解、过滤、蒸发、结晶等基本操作方法,练习用 重结晶法提纯物质。 二、实验原理 本实验是用NaNO3和KCl通过复分解来制取KNO3,其反 应为: NaNO3+KCl=KNO3+NaCl
实验五 转化法制备硝酸钾
KCL 7.5 g

数据结构实验五(二叉树的建立及遍历)题目和源程序

数据结构实验五(二叉树的建立及遍历)题目和源程序

实验5:二叉树的建立及遍历(第十三周星期三7、8节)一、实验目的1.学会实现二叉树结点结构和对二叉树的基本操作。

2.掌握对二叉树每种操作的具体实现,学会利用递归方法编写对二叉树这种递归数据结构进行处理的算法。

二、实验要求1.认真阅读和掌握和本实验相关的教材内容。

2.编写完整程序完成下面的实验内容并上机运行。

3.整理并上交实验报告。

三、实验内容1.编写程序任意输入二叉树的结点个数和结点值,构造一棵二叉树,采用三种递归遍历算法(前序、中序、后序)对这棵二叉树进行遍历并计算出二叉树的高度。

2 .编写程序生成下面所示的二叉树,并采用中序遍历的非递归算法对此二叉树进行遍历。

四、思考与提高1.如何计算二叉链表存储的二叉树中度数为1的结点数?2.已知有—棵以二叉链表存储的二叉树,root指向根结点,p指向二叉树中任一结点,如何求从根结点到p所指结点之间的路径?/*----------------------------------------* 05-1_递归遍历二叉树.cpp -- 递归遍历二叉树的相关操作* 对递归遍历二叉树的每个基本操作都用单独的函数来实现* 水上飘2009年写----------------------------------------*/// ds05.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>typedef char ElemType;using namespace std;typedef struct BiTNode {ElemType data;//左右孩子指针BiTNode *lchild, *rchild;}BiTNode, *BiTree;//动态输入字符按先序创建二叉树void CreateBiTree(BiTree &T) {char ch;ch = cin.get();if(ch == ' ') {T = NULL;}else {if(ch == '\n') {cout << "输入未结束前不要输入回车,""要结束分支请输入空格!" << endl;}else {//生成根结点T = (BiTNode * )malloc(sizeof(BiTNode));if(!T)cout << "内存分配失败!" << endl;T->data = ch;//构造左子树CreateBiTree(T->lchild);//构造右子树CreateBiTree(T->rchild);}}}//输出e的值ElemType PrintElement(ElemType e) { cout << e << " ";return e;}//先序遍历void PreOrderTraverse(BiTree T) { if (T != NULL) {//打印结点的值PrintElement(T->data);//遍历左孩子PreOrderTraverse(T->lchild);//遍历右孩子PreOrderTraverse(T->rchild);}}//中序遍历void InOrderTraverse(BiTree T) {if (T != NULL) {//遍历左孩子InOrderTraverse(T->lchild);//打印结点的值PrintElement(T->data);//遍历右孩子InOrderTraverse(T->rchild);}}//后序遍历void PostOrderTraverse(BiTree T) { if (T != NULL) {//遍历左孩子PostOrderTraverse(T->lchild);//遍历右孩子PostOrderTraverse(T->rchild);//打印结点的值PrintElement(T->data);}}//按任一种遍历次序输出二叉树中的所有结点void TraverseBiTree(BiTree T, int mark) {if(mark == 1) {//先序遍历PreOrderTraverse(T);cout << endl;}else if(mark == 2) {//中序遍历InOrderTraverse(T);cout << endl;}else if(mark == 3) {//后序遍历PostOrderTraverse(T);cout << endl;}else cout << "选择遍历结束!" << endl;}//输入值并执行选择遍历函数void ChoiceMark(BiTree T) {int mark = 1;cout << "请输入,先序遍历为1,中序为2,后序为3,跳过此操作为0:";cin >> mark;if(mark > 0 && mark < 4) {TraverseBiTree(T, mark);ChoiceMark(T);}else cout << "此操作已跳过!" << endl;}//求二叉树的深度int BiTreeDepth(BiTNode *T) {if (T == NULL) {//对于空树,返回0并结束递归return 0;}else {//计算左子树的深度int dep1 = BiTreeDepth(T->lchild);//计算右子树的深度int dep2 = BiTreeDepth(T->rchild);//返回树的深度if(dep1 > dep2)return dep1 + 1;elsereturn dep2 + 1;}}int _tmain(int argc, _TCHAR* argv[]){BiTNode *bt;bt = NULL; //将树根指针置空cout << "输入规则:" << endl<< "要生成新结点,输入一个字符,""不要生成新结点的左孩子,输入一个空格,""左右孩子都不要,输入两个空格,""要结束,输入多个空格(越多越好),再回车!"<< endl << "按先序输入:";CreateBiTree(bt);cout << "树的深度为:" << BiTreeDepth(bt) << endl;ChoiceMark(bt);return 0;}/*----------------------------------------* 05-2_构造二叉树.cpp -- 构造二叉树的相关操作* 对构造二叉树的每个基本操作都用单独的函数来实现* 水上飘2009年写----------------------------------------*/// ds05-2.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>#define STACK_INIT_SIZE 100 //栈的存储空间初始分配量#define STACKINCREMENT 10 //存储空间分配增量typedef char ElemType; //元素类型using namespace std;typedef struct BiTNode {ElemType data; //结点值BiTNode *lchild, *rchild; //左右孩子指针}BiTNode, *BiTree;typedef struct {BiTree *base; //在栈构造之前和销毁之后,base的值为空BiTree *top; //栈顶指针int stacksize; //当前已分配的存储空间,以元素为单位}SqStack;//构造一个空栈void InitStack(SqStack &s) {s.base = (BiTree *)malloc(STACK_INIT_SIZE * sizeof(BiTree));if(!s.base)cout << "存储分配失败!" << endl;s.top = s.base;s.stacksize = STACK_INIT_SIZE;}//插入元素e为新的栈顶元素void Push(SqStack &s, BiTree e) {//栈满,追加存储空间if ((s.top - s.base) >= s.stacksize) {s.base = (BiTree *)malloc((STACK_INIT_SIZE+STACKINCREMENT) * sizeof(BiTree));if(!s.base)cout << "存储分配失败!" << endl;s.top = s.base + s.stacksize;s.stacksize += STACK_INIT_SIZE;}*s.top++ = e;}//若栈不空,则删除s的栈顶元素,并返回其值BiTree Pop(SqStack &s) {if(s.top == s.base)cout << "栈为空,无法删除栈顶元素!" << endl;s.top--;return *s.top;}//按先序输入字符创建二叉树void CreateBiTree(BiTree &T) {char ch;//接受输入的字符ch = cin.get();if(ch == ' ') {//分支结束T = NULL;} //if' 'endelse if(ch == '\n') {cout << "输入未结束前不要输入回车,""要结束分支请输入空格!(接着输入)" << endl;} //if'\n'endelse {//生成根结点T = (BiTNode * )malloc(sizeof(BiTree));if(!T)cout << "内存分配失败!" << endl;T->data = ch;//构造左子树CreateBiTree(T->lchild);//构造右子树CreateBiTree(T->rchild);} //Create end}//输出e的值,并返回ElemType PrintElement(ElemType e) {cout << e << " ";return e;}//中序遍历二叉树的非递归函数void InOrderTraverse(BiTree p, SqStack &S) {cout << "中序遍历结果:";while(S.top != S.base || p != NULL) {if(p != NULL) {Push(S,p);p = p->lchild;} //if NULL endelse {BiTree bi = Pop(S);if(!PrintElement(bi->data))cout << "输出其值未成功!" << endl;p = bi->rchild;} //else end} //while endcout << endl;}int _tmain(int argc, _TCHAR* argv[]){BiTNode *bt;SqStack S;InitStack(S);bt = NULL; //将树根指针置空cout << "老师要求的二叉树序列(‘空’表示空格):""12空空346空空空5空空,再回车!"<< endl << "请按先序输入一个二叉树序列(可另输入,但要为先序),""无左右孩子则分别输入空格。

大学计算机实验五报告

大学计算机实验五报告

实验五课程名称:大学计算机实验项目名称:Excel的应用2. 对一列数据进行通过excel求和函数进行求和,对另一列数据求最大值。

1)输入两列数据,单击需要算出和的单元格,进入功能区的“公式”,点击“插入函数”,在弹出的对话框中选择“Sum”函数,点击确定后在随后的对话框中选择求和的数的范围,再次点击确认即可。

2)单击需要算出和的单元格,进入功能区的“公式”,点击“插入函数”,在弹出的对话框中选择“Max”函数,点击确定后在随后的对话框中选择求最大值的数的范围,再次点击确认即可。

3. 验证数据有效性,验证是否有来自“北京”“上海”之外的地区(P127)1)选中“地区”那列所有数据,在功能区找到“数据”,在“数据工具”找到“数据验证”,点进去,在弹出的对话框中,在“设置”选项卡里找到“允许”的下拉列表,选择“序列”,在“来源”输入“北京,上海”,其中逗号用半角模式下的英语模式的逗号。

点击确定即可。

如果再次输入“北京,上海”之外的数据就会提示错误,且可以制作下拉菜单。

4. 自动筛选出销售数量大于100000的行(P128~P129)1)点击清单中任意一个单元格,在功能区找到“数据”,在其中找到“筛选”,单击后,找到“销售与数量”旁边的下拉按钮,点进去出来一个菜单,点击“全选”,再在“数字筛选”的下一级菜单中选择“大于”,在点击后弹出的对话框中输入“100000”,点击确定即可,设置完成后可以发现,全部的销售数量都低于100000,故全部都消失。

5.实现案例5-161)输入基础数值如下2)单击E2单元格开始编辑,输入公式“=PMT(B2/12,C2*12,D2)”,按下回车键即可自动计算月供金额。

再选中该单元格,单击右键,在弹出的菜单中找到“设置单元格式”,单击进入,选择第二个格式即可。

3)在B5单元格输入公式“=E2”4)选择数据区域B5:I10,单击“数据”选项卡上的“数据工具”组中的模拟分析的下拉按钮,选择“模拟运算表”,在弹出的对话框中在“输入引用行的单元格”旁输入“D2”,在“输入引用列的单元格”旁输入“C2”点击确定即可。

实验五实验报告

实验五实验报告

实验五实验报告实验五实验报告引言:实验五是一项关于物理实验的研究,通过实验数据的收集和分析,我们旨在探究某一特定物理现象或验证某一物理理论。

本次实验的主题是XXXXX(根据实际情况填写),以下将详细介绍实验的目的、实验装置和步骤、实验结果以及对结果的分析和讨论。

一、实验目的本次实验的目的是XXXXX(根据实际情况填写)。

通过实验的进行,我们希望探究XXXXX的规律,并验证相应的物理理论。

同时,通过实验数据的收集和分析,我们还可以对实验装置和测量方法的准确性进行评估。

二、实验装置和步骤本次实验所使用的装置主要包括XXXXX(列举实验装置的名称)。

在实验过程中,我们按照以下步骤进行操作:1. 步骤一:XXXXX(具体操作内容)2. 步骤二:XXXXX(具体操作内容)3. 步骤三:XXXXX(具体操作内容)4. 步骤四:XXXXX(具体操作内容)5. 步骤五:XXXXX(具体操作内容)三、实验结果在实验过程中,我们记录了一系列实验数据,并进行了相关的数据处理。

以下是实验结果的总结:1. 结果一:XXXXX(具体实验结果)2. 结果二:XXXXX(具体实验结果)3. 结果三:XXXXX(具体实验结果)四、结果分析和讨论基于实验结果,我们进行了进一步的分析和讨论。

以下是对实验结果的分析和讨论:1. 分析一:XXXXX(对结果进行详细分析)2. 分析二:XXXXX(对结果进行详细分析)3. 分析三:XXXXX(对结果进行详细分析)通过对实验结果的分析,我们可以得出如下结论:XXXXX(根据实验结果和分析得出结论)。

五、实验误差和改进在实验过程中,我们还需要对实验误差进行评估,并提出相应的改进方法。

以下是对实验误差和改进的讨论:1. 误差评估:XXXXX(对实验误差进行评估)2. 改进方法:XXXXX(提出改进方法)通过对实验误差的评估和改进方法的提出,我们可以进一步提高实验的准确性和可靠性。

结论:通过本次实验,我们成功地实现了实验目的,并得出了相应的结论。

数据库实验5答案

数据库实验5答案

实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。

二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。

1) 查询选修了计算机体系结构的学生的基本信息。

select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。

select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。

select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。

select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。

实验五 用Newton法计算方程的根

实验五 用Newton法计算方程的根

五. 讨论分析当初始值选取离零点较远时将导致算法无法使用,例如第三题,将初始值改为2就无法计算出结果了,显示如下例如求020sin 35=-+-x x e x 的根,其中控制精度1010-=eps ,最大迭代次数40=M ,在steffensen 加速迭代方法的程序中,我们只需改动:it_max=40; ep=1e-10, 其余不变 。

利用以上程序,我们只需输入:phi=inline('exp(5*x)-sin(x)+(x)^3-20');[x_star,index,it]=steffensen(phi,0.5)可得:x_star = 0.637246094753909index = 0it = 41观察上述结果,index = 0,it = 41表明迭代失败,所以使用以上方法估计的时候,应该尽量估计出解的范围,偏离不应过大,距离增加迭代次数增加,也有可能迭代失败六. 改进实验建议根据上述分析,我认为,应该先对函数作一个简图,方便知道解的大概位置,然后我们才将这个大概值代入Newton 法或者Steffensen 中进行求解。

当然,我们可以用其他数学软件实现Newton 迭代法,我们可以用z-z 超级画板,其操作流程为:牛顿迭代法的公式是:x n+1=x n-f(x n)/f'(x n)。

下面我们就用牛顿迭代法设计程序求方程f(x)=ln(x)+2*x-6的近似解。

(一)观察方程f(x)=0的零点位置(1)显示坐标系的坐标刻度。

(2)作出函数y=ln(x)+2*x-6的图像,如下图所示:可以观察到方程的根在区间[2,3]上,我们可以设定近似解的初始值为2。

(二)设计求方程近似解的程序(1)在程序工作区中输入:f(x){ln(x)+2*x-6;}执行后,返回结果为:>> f(x) #这表示在计算机已经完成了函数f(x)的定义。

(2)定义f(x)的导函数g(x),在程序工作区中输入:Diff(f(x),x);执行后,返回结果为:>> 2+1/x #得到了f(x)的导函数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构《实验5》实验报告
实验项目5:快速排序
回答问题完整、实验结果(运行结果界面及源程序,运行结果界面放在前面):
#include<iostream.h>
#include<cstring>
#define STUDENT EType
#define KeyType int
struct STUDENT
{
char number[10];
char name[10];
int age;
char sex[10];
char place[10];
};
struct LinearList
{
EType *r;
int length;
int maxsize;
};
void CreatLinearList(LinearList &L,int MaxListSize)
{
L.maxsize=MaxListSize;
L.r=new EType[L.maxsize];
L.length=0;
}
bool InputLinearList(LinearList &L)
{
int i,num;
cout<<"请输入要存储元素的个数:";
cin>>num;
L.length=num;
cout<<endl;
cout<<"请输入存储元素值:";
cout<<endl;
for(i=0;i<L.length;i++)
cin>>L.r[i].age;
return 1;
}
void OutputLinearList(LinearList &L)
{
for(int i=0;i<L.length;i++)
cout<<L.r[i].age<<" ";
cout<<endl;
}
int Partition(EType r[],int low,int high)
{
KeyType StandardKey;
EType temp;
temp=r[low];
StandardKey=r[low].age;
while(low<high)
{
while(low<high&&r[high].age>=StandardKey)
high--;
r[low++]=r[high];
while(low<=high&&r[low].age<=StandardKey)
low++;
r[high--]=r[low];
}
r[--low]=temp;
return low;
}
void Qsort(EType r[],int low,int high)
{
int StandardLoc;
if(low<=high-1)
{
StandardLoc=Partition(r,low,high);
Qsort(r,low,StandardLoc-1);
Qsort(r,StandardLoc+1,high);
}
}
void QuickSort(LinearList &L)
{
Qsort(L.r,0,L.length-1);
}
int main()
{
LinearList L;
int MaxListSize=50;
CreatLinearList(L,MaxListSize);
InputLinearList(L);
cout<<endl<<endl;
cout<<"快速排序前的序列是:"<<endl;
OutputLinearList(L);
cout<<endl<<endl;
QuickSort(L);
cout<<"快速排列后的序列是:"<<endl;
OutputLinearList(L);
return 0;
}。

相关文档
最新文档