实验9(函数)
- 格式:doc
- 大小:26.00 KB
- 文档页数:4
实验9溶液中的吸附作⽤和表⾯张⼒的测定实验九溶液中的吸附作⽤和表⾯张⼒的测定──最⼤⽓泡压⼒法【摘要】在溶液的表⾯层中的物质的浓度与溶液内部物质浓度不同的现象称为吸附,本实验利⽤最⼤⽓泡法,根据Gibbs 公式和Langmuir 等温⽅程式研究吸附量与溶液浓度及表⾯张⼒的关系。
【Abstract 】The phenomenon that the consistency of a substance in the surface of the solution is different from that inside is called absorption . In this experiment, according Gibbs formula and Langmuir equal- temperature equation , we apply the biggest bladder pressure method to research the relation among the amount of absorption and the consistency of a substance in the solution besides the surface tension. 【关键词】吸附作⽤表⾯张⼒最⼤⽓泡压⼒法【Keywords 】Absorption effect Surface tension The biggest bladder pressure method【实验部分】⼀、实验⽬的与要求:1、通过测定不同浓度(c )正丁醇⽔溶液的表⾯张⼒(),由-c 曲线求溶液界⾯上的吸附量和单个正丁醇分⼦的横截⾯积(S 0)。
2、了解表⾯张⼒的性质、表⾯能的意义以及表⾯张⼒和吸附的关系。
3、掌握⼀种测定表⾯张⼒的⽅法—最⼤⽓泡法。
⼆、预习要求:1、掌握最⼤⽓泡压⼒法测定表⾯张⼒的原理。
实验9 程序设计基础(二)一、实验目的1.掌握在Visual C++ 6.0集成开发环境下怎样编辑、编译、连接、执行、修改和调试C语言程序。
2.熟悉简单数据结构的实现。
二、实验内容用单链表存放学生数据。
1.建立程序的头文件这个头文件定义了其他程序文件要使用的一些声明。
其中还定义了三个指针:•头指针head。
•为新的节点动态分配存储空间的的指针new。
•用于对当前节点进行链接的中间指针this。
此外还包含了要使用的函数的原型声明。
⑴进入可视化的C++ 6.0集成开发环境,选择“文件”(File)菜单中的“新建”(New)命令, 在新建对话框中,先选择“工程”选项卡,选择“Wind2 Console Application”类型,在“工程名称”下输入ex01;然后选择“文件”选项卡,再选择“C/C++ Header File”类型,在“文件名”下输入ex01,然后单击对话框中的“确定”按钮。
⑵在编辑窗口中,输入如下内容:/*** 文件名:ex01.h ***/struct StudNode{char name[16];long num;float score;struct StudNode *next;};struct StudNode *head,*thisN,*newN;void NewNode(void);void ListAll(void);⑶选择工具栏中的“保存”按钮,保存输入的代码。
2.程序设计程序由3个函数组成:•主函数。
有两项功能:(a)必要的初始化:设置一个标志;初始化头指针为空(即开始队列为空队列。
(b)根据用户选择执行不同功能:若键入“E”或“e”,表示要进行增加新结点的操作;若键入“L”或“l”,表示要输出所有节点中数据;键入其他字符则退出。
⑴在C++ 6.0中,选择“文件”(File)菜单中的“新建”(New)命令, 在新建对话框中,选择“文件”选项卡,再选择“C++ Source File”类型,在“文件名”下输入ex01.c,然后单击对话框中的“确定”按钮。
上机实验9:操作符重载的应用一、实验内容下面程序定义了复数类Complex的3个对象:Complex u(10, 20), v(5,-4), s;在程序中通过s = u + v;来计算u和v的和,并将结果存入s中,填补缺失的语句并调试出正确运行结果。
#include <iostream>using namespace std;class Complex{private:double real, imag; //real、imag分别保存复数的实部、虚部public:Complex() { real = 0; imag = 0;}Complex(double r, double i) { real = r; imag = i; }void display(){ cout<< "(" << real;if (imag >0) cout<< "+" << imag << "i)";else if (imag <0) cout<< imag << "i)";}// 通过成员函数重载运算符“+”};void main(){ Complex u(10, 20), v(5,-4), s;s = u + v; // 使用重载的运算符“+”u.display(); cout<<" + ";v.display(); cout<<" = ";s.display(); cout<<endl;}二、实验要求在Complex类中编写重载运算符“+”的函数,保证语句的用法正确并显示复数运算结果。
三、实验结果截图(请将实际上机运行的结果截图并上传)。
实验九 m 序列产生及其特性实验一、实验目的通过本实验掌握m 序列的特性、产生方法及应用。
二、实验内容1、观察m 序列,识别其特征。
2、观察m 序列的自相关特性。
三、基本原理m 序列是有n 级线性移位寄存器产生的周期为21n -的码序列,是最长线性移位寄存器序列的简称。
码分多址系统主要采用两种长度的m 序列:一种是周期为1521-的m 序列,又称短PN 序列;另一种是周期为4221-的m 序列,又称为长PN 码序列。
m 序列主要有两个功能:①扩展调制信号的带宽到更大的传输带宽,即所谓的扩展频谱;②区分通过多址接入方式使用同一传输频带的不同用户的信号。
1、产生原理图9-1示出的是由n 级移位寄存器构成的码序列发生器。
寄存器的状态决定于时钟控制下输入的信息(“0”或“1”),例如第I 级移位寄存器状态决定于前一时钟脉冲后的第i -1级移位寄存器的状态。
图中C 0,C 1,…,C n 均为反馈线,其中C 0=C n =1,表示反馈连接。
因为m 序列是由循环序列发生器产生的,因此C 0和C n 肯定为1,即参与反馈。
而反馈系数C 1,C 2,…,C n-1若为1,参与反馈;若为0,则表示断开反馈线,即开路,无反馈连线。
图9-1 n 级循环序列发生器的模型一个线性反馈移动寄存器能否产生m 序列,决定于它的反馈系数(0,1,2,,)i c i n =,下表中列出了部分m 序列的反馈系数i c ,按照下表中的系数来构造移位寄存器,就能产生相应的m 序列。
表9-1 部分m 序列的反馈系数表根据表9-1中的八进制的反馈系数,可以确定m 序列发生器的结构。
以7级m 序列反馈系数8(211)i C =为例,首先将八进制的系数转化为二进制的系数即2(010001001)i C =,由此我们可以得到各级反馈系数分别为:01C =、10C =、30C =、41C =、50C =、60C =、71C =,由此就很容易地构造出相应的m 序列发生器。
第九次实验 S-函数应用实例例题:(1)用S 函数模块为下图所示单摆构造系统动力学模型;(2)利用Simulink 研究该单摆摆角的运动曲线。
(a) 写出该单摆的动力学方程为22g m d m d g F F F d d f K K dt M M M dt θθ=--=--其中,m f 实施加在单摆上的等效外力;d K 是等效摩擦系数;g K 是等效重力系数。
(b) 化成状态方程组:令1d x dtθ=,2x θ=,m u f =,则上述二阶方程可写为 11sin d g dx K x K u dtθ=--+ 21dx x dt= (c) 根据状态方程对模板文件进行“裁剪”得到simpendzzy.m从MATLAB 的toolbox\simulink\blocks 子目录下,复制sfuntmpl.m ,并把它改名为simpendzzy.m ,再根据状态方程对文件进行修改,最后如下形成文件:function [sys,x0,str,ts]=simpendzzy(t,x,u,flag,dampzzy,gravzzy,angzzy) switch flag,case 0,[sys,x0,str,ts]=mdlInitializeSizes(angzzy);case 1,sys=mdlDerivatives(t,x,u,dampzzy,gravzzy);case 2,sys=mdlUpdate(t,x,u);case 3,sys=mdlOutputs(t,x,u);case 9,sys=mdlTerminate(t,x,u);otherwiseerror(['Unhandled flag = ',num2str(flag)]);end% mdlInitializeSizesfunction [sys,x0,str,ts]=mdlInitializeSizes(angzzy)sizes = simsizes;sizes.NumContStates = 2;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 1;msizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1;sys = simsizes(sizes);x0 = angzzy;str = [];ts = [0,0];% mdlDerivativesfunction sys=mdlDerivatives(t,x,u,dampzzy,gravzzy)dx(1)=-dampzzy*x(1)-gravzzy*sin(x(2))+u;dx(2)=x(1);sys = dx;% mdlUpdatefunction sys=mdlUpdate(t,x,u)sys = [];% mdlOutputsfunction sys=mdlOutputs(t,x,u)sys = x(2);% mdlTerminatefunction sys=mdlTerminate(t,x,u)sys = [];(d)建立仿真模型exm1.mdl先构成名为simpendzzy的S-函数模块,从simulink的“user-defined Function ”子库中复制S-Function框架模块到空白模型窗,再建立观察单摆事实运动的仿真模型exm1.mdl,如下图信号发生器的参数设置:信号取square波形;幅值为1;频率为0.1rad/sec双击S-Function框架模块,弹出对话窗:在“S-Function name ”栏中填写函数名simpendzzy;在“S-Function parameters”栏中填写dampzzy,gravzzy,angzzy(次序要对);再点击【OK】在该exm_1.mdl运行前,应先对该模型运行所需的3个参数dampzzy,gravzzy,angzzy进行设置。
Scherrer 公式计算晶粒尺寸(XRD 数据计算晶粒尺寸)Scherrer公式计算晶粒尺寸(XRD数据计算晶粒尺寸)Scherrer公式计算晶粒尺寸(XRD数据计算晶粒尺寸)根据X射线衍射理论,在晶粒尺寸小于100nm时,随晶粒尺寸的变小衍射峰宽化变得显著,考虑样品的吸收效应及结构对衍射线型的影响,样品晶粒尺寸可以用Debye-Scherrer 公式计算。
Scherrer 公式:Dhkl=k 入/ B cos 0其中,Dhkl 为沿垂直于晶面(hkl )方向的晶粒直径,k 为Scherrer常数(通常为0.89 ),入为入射X射线波长(Cuka波长为0.15406nm, Cuka1 波长为0.15418nm。
),0 为布拉格衍射角(°),B 为衍射峰的半高峰宽(rad)。
但是在实际操作中如何从一张普通的XRD图谱中获得上述的参数来计算晶粒尺寸还存在以下问题:1)首先,用XRD十算晶粒尺寸必须扣除仪器宽化和应力宽化影响。
如何扣除仪器宽化和应力宽化影响?在什么情况下,可以简化这一步骤?答:在晶粒尺寸小于100 nm时,应力引起的宽化与晶粒尺度引起的宽化相比,可以忽略。
此时, Scherrer 公式适用。
但晶粒尺寸大到一定程度时,应力引起的宽化比较显著,此时必须考虑引力引起的宽化, Scherrer 公式不再适用。
2)通常获得的XRD数据是由K a线计算得到的。
此时,需要K a 1和K a 2必须扣除一个,如果没扣除,肯定不准确。
3)扫描速度也有影响,要尽可能慢。
一般2° /min。
4)一个样品可能有很多衍射峰,是计算每个衍射峰对应晶粒尺寸后平均?还是有其它处理原则?答:通常应当计算每个衍射峰晶粒尺寸后进行平均。
当然只有一两峰的时候,就没有必要强求了!5)有的XRD数据中给出了width值,是不是半高宽度的值?能不能直接代入上面公式吗?如果不能,如何根据XRD图谱获得半峰宽?TOP 20卩为衍射峰的半高峰宽时,k=0.89 卩为衍射峰的积分宽度时,k=1.0。
实验九函数
一.实验目的
1.掌握定义函数的方法;
2.掌握函数实参与形参的对应关系,以及“值传递”的方式;
3.掌握函数的嵌套调用和递归调用的方法;
4.掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法。
二.实验要点
1.定义函数的一般格式:
类型说明符函数名(形参表)
形参说明
{
局部变量说明;
函数体语句;
}
2.函数的调用格式为:函数名(实参表)
3.函数返回值
* 函数返回值类型说明的一般格式为:类型说明符函数名( );
* 返回语句return
三.实验要求
1.上机前编写好以下程序。
(1-3为填空,4,5自己编程)
2.上机输入和调试自己所编的程序并存盘。
3.检查实验结果是否正确。
4.上机结束后,整理实验报告。
四.实验内容
上机调试运行以下程序。
1.以下程序完成由键盘输入两个整数,求其最大值。
请改正以下程序的错误。
并上机调通。
main(){
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(x,y); /*函数调用 */
printf("%d",c);}
min(x,y); /*函数定义 */
int x,y;
{ int z;
z=(x>y)?x:y;
return(z);} /* 函数的返回值 */
键盘输入:45,89<CR>(<CR>表示回车)
输出结果: 89
2.将输入的十进制正整数n转换为二进制数,并将转换结果输出,转换方法“除二取余”。
请填空。
#include"stdio.h"
transfer(int m)
{
int aa[20],j;
for(j=0;m!=0;j++)
{
aa[j]= 【①】;
m=m/2;
}
for(;j!=0;j--)
printf("%d", 【②】);
}
main()
{
int n;
scanf("%d", &n);
【③】;
}
键盘输入:10<CR>(<CR>表示回车)
输出结果:1010
3.以下程序的功能是根据输入的"y"("Y")与"n"("N"),在屏幕上分别显示出"This is YES."与"This is NO.",请填空。
#include"stdio.h"
void yesno(char ch)
{
switch(ch)
{ case 'y':
case 'Y': printf("\n This is YES.\n");【①】);
case 'n':
case 'N': printf("\n This is NO.\n");
}
}
main()
{
char ch;
printf("\n Enter a char 'y','Y'or 'n','N':");
ch=【②】;
printf("ch:%c",ch);
yesno(ch);
}
键盘输入:Y<CR>(<CR>表示回车)
输出结果: This is YES.
4.编程:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。
两个整数由键盘输入。
5.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。
答案
1
#include "stdio.h"
int max(int x,int y) /*函数定义 */ { int z;
z=(x>y)?x:y;
return(z);} /* 函数的返回值 */
main(){
int a,b,c;
scanf("%d,%d",&a,&b);
c=max(a,b); /*函数调用 */
printf("%d",c);}
2. ①m%2 ② aa[j-1] ③transfer(n)
3. ①break ②getchar()
4.。