文档库 最新最全的文档下载
当前位置:文档库 › 计科实验六多态的应用参考答案

计科实验六多态的应用参考答案

计科实验六多态的应用参考答案
计科实验六多态的应用参考答案

实验六虚函数与多态性

一、实验目的和要求

1.理解静态多态性和动态多态性。

2.掌握运算符重载的基本方法。

3.掌握虚函数的定义与使用方法。

二、实验内容

1.定义一个类Animal,该类中可以存放动物的名字,并有一个Identify函数用于显示动物的种类。定义两个类Cat和Dog,都继承自Animal,并重载Identify函数,不但要显示动物的种类,还要显示动物的名字。定义一个Tiger类,继承自Cat,重载Identify函数,显示动物的种类和名字。

#include

using namespace std。

#include

class Animal

{

public:

Animal(string Name,string Kind)。

virtual void show()=0。

protected:

string name。

string kind。

}。

Animal::Animal(string Name,string Kind)

{

name=Name。

kind=Kind。

}

class Cat:public Animal

{

public:

Cat(string Name,string Kind):Animal(Name,Kind)

{}

void show()

{

cout<<"猫的种类和名字是:"<

cout<

}

}。

class Dog:public Animal

{

public:

Dog(string Name,string Kind):Animal(Name,Kind)

{}

void show()

{

cout<<"狗的种类和名字是:"<

cout<

}

}。

class Tiger:public Cat

{

public:

Tiger(string Name,string Kind):Cat(Name,Kind)

{}

void show()

{

cout<<"老虎的种类和名字是:"<

cout<

}

}。

void main()

{

Animal *p。

Tiger a("华南虎","圆圆")。

p=&a。

p->show()。

Cat b("波斯猫","豆豆")。

p=&b。

p->show()。

Dog c("狼狗","黑熊")。

p=&c。

p->show()。

}

2、模拟定义存折类,并派生出信用卡类;在存折类中提供可以实现开户,存款、取款和查询余额的函数,要求取款金额必须小于余额;信用卡类对取款操作进行修改,允许透支一定金额;在main()函数中定义对象,模拟生活中存折和信用卡的使用过程。

#include

using namespace std。

#include

/*模拟定义存折类,并派生出信用卡类;

在存折类中提供可以实现开户,存款、取款和查询余额的函数,

要求取款金额必须小于余额;

信用卡类对取款操作进行修改,允许透支一定金额;

在main()函数中

定义对象,模拟生活中存折和信用卡的使用过程。*/

class bankbook

{

private:

string accountnumber。

string password。

string id。

string name。

float balance。//

public:

bankbook(string,string,string,string,float)。

void deposit()。//存款

void withdraw()。//取款

void inquiry()。//查询

}。

bankbook::bankbook(string Accountnumber,string Password,string Id,string Name,float Balance) {

accountnumber=Accountnumber。

name=Name。password=Password。id=Id。

balance=Balance。

}

void bankbook::deposit()

{

float money。

cout<<"请输入你要存款的金额"<

cin>>money。

balance=balance+money。

cout<<"您的余额为"<

}

void bankbook::withdraw()

{

float money。

cout<<"请输入你要取款的金额"<

cin>>money。

balance=balance-money。

cout<<"您的余额为"<

}

void bankbook::inquiry()

{

cout<<"余额为:"<

}

class credit:publicbankbook

{

private:

int money。//表示所能取的最大额度

public:

void withdraw()。

}。

void credit::withdraw()

{

}

3.利用第一题中的各种动物,定义一个动物园类Zoo,经管动物,根据下面的提示编写动物类的相关函数。注意指针的用法。

class Zoo

{

public:

Zoo( int max)。//构造函数,max为最多能圈养的动物数

~Zoo(){delete residents}。//析构函数

int Accept(Animal *d)。//接受动物

void ListAnimals()。//显示动物园所有的动物

private:

int maxanimals。//动物园最多能圈养的动物数

int numanimals。//动物园当前圈养的动物数

Animal **residents。//指向动物园全员的动物对象的指针数

}。

#include

using namespace std。

#include

class Animal{

public:

Animal(string Name="",string Kind="")。

virtual void Identify()

{

cout<

}

protected:

string name。

string kind。

}。

Animal::Animal(string Name,string Kind)

{

name=Name。kind=Kind。

}

class Cat:public Animal{

public:

Cat(string Name,string Kind):Animal(Name,Kind){}

void Identify()

{

cout<<"猫是:"<

}

}。

class Dog:public Animal{

public:

Dog(string Name,string Kind):Animal(Name,Kind){}

void Identify()

{

cout<<"狗是:"<

}

}。

class Tiger:public Cat{

public:

Tiger(string Name,string Kind):Cat(Name,Kind){}

void Identify()

{

cout<<"老虎是:"<

}

}。

class Zoo

{

public:

Zoo( int max)。//构造函数,max为最多能圈养的动物数

//~Zoo(){delete residents}//析构函数

int Accept(Animal *d)。//接受动物

void ListAnimals()。//显示动物园所有的动物

private:

int maxanimals。//动物园最多能圈养的动物数

int numanimals。//动物园当前圈养的动物数

Animal **residents。//指向动物园全员的动物对象的指针数}。

Zoo::Zoo(int max)

{

maxanimals=max。

numanimals=0。

residents=new Animal*[max]。

}

int Zoo::Accept(Animal *d)

{

residents[numanimals]=d。

numanimals++。

return numanimals。

}

void Zoo::ListAnimals()

{

int i=0。

cout<<"动物园里面包括的动物有:"<

for(i=0。i

residents[i]->Identify()。

}

void main()

{

Animal *p。

Cat c("凯迪","波斯猫")。

Dog d("土豆","贵宾犬")。

Dog d1("哈利","牧羊犬")。

Tiger t("圆圆","华南虎")。

Tiger t1("团团","东北虎")。

p=&c。

Zoo z(10)。

z.Accept(p)。

z.Accept(&d)。

z.Accept(&t)。

z.Accept(&d1)。

z.Accept(&t1)。

z.ListAnimals()。

}

浙师大 C语言 实验10函数2+答案

上机实验十函数与程序结构 学号姓名 一.目的要求 1.掌握函数声明、定义和调用的基本方法 2.掌握用递归函数解决问题的方法。 3.掌握局部变量与全局变量的作用域区别 4.掌握数组作为函数参数的基本方法。 二.实验内容 【实验题1】 分析如下: Line 2中的变量k是_全局_变量;而Line 10中的k是__局部_变量。程序输出结果是k=1,k=1,k=1 。 如果将第10行改为“static int k=1;变量,程序输出结果是k=1,k=2,k=1 。 如果将第10行改为“k=1; ”,该k变量,程序输出结果是k=1,k=1,k=2 。 如果将第10行改为空语句“; ”后,,程序输出结果是k=1,k=2,k=3 。 【实验题2】程序填空:输入一个整数n (1≤n≤10),再输入n个整数,将它们按升序排列后输出。 程序分析_选择法: (1)由于n最大是10,需要定义一个长度为10的整型数组a; (2)整个排序只需要确定前n-1个元素(a[0] ~a[n-2]),最后一个元素a[n-1]无需另外处理; (3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i, 并将a[k]与后面的元素a[j](j=i+1, i+2, …, n-1)一一比较, 如果a[j]< a[k],则更新k的值:k =j。找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。(4)上述排序算法的代码:

运行程序,输入n: 5,输入5个整数:23 -9 14 0 -3,显示结果为: 如果是按从大到小的降序排列,语句行Line 13 应改为:if(a[k]> a[j] ) k=j; [思考题]程序填空: 将上述的程序用函数调用的方式去实现。定义一个sort()函数来实现数组的排序;在main()函数中调用sort()函数来实现数组的排序,并将结果输出。

原电池电动势的测定实验报告

实验九原电池电动势的测定及应用 一、实验目的 1.测定Cu-Zn电池的电动势和Cu、Zn电极的电极电势。 2.学会几种电极的制备和处理方法。 3.掌握SDC-Ⅲ数字电位差计的测量原理和正确的使用方法。 二、实验原理 电池由正、负两极组成。电池在放电过程中,正极起还原反应,负极起氧化反应,电池内部还可以发生其它反应,电池反应是电池中所有反应的总和。 电池除可用来提供电能外,还可用它来研究构成此电池的化学反应的热力学性质。从化学热力学知道,在恒温、恒压、可逆条件下,电池反应有以下关系: G nFE ?=-(9-1) 式中G ?是电池反应的吉布斯自由能增量;n为电极反应中得失电子的数目;F为法拉第常数(其数值为965001 ?);E为电池的电动势。所以测出该电池的电动势E后,进而 C mol- 又可求出其它热力学函数。但必须注意,测定电池电动势时,首先要求电池反应本身是可逆的,可逆电池应满足如下条件: (1)电池反应可逆,亦即电池电极反应可逆; (2)电池中不允许存在任何不可逆的液接界; (3)电池必须在可逆的情况下工作,即充放电过程必须在平衡态下进行,亦即允许通过电池的电流为无限小。 因此在制备可逆电池、测定可逆电池的电动势时应符合上述条件,在精确度不高的测量中,常用正负离子迁移数比较接近的盐类构成“盐桥”来消除液接电位。 在进行电池电动势测量时,为了使电池反应在接近热力学可逆条件下进行,采用电位计 测量。原电池电动势主要是两个电极的电极电势的代数和,如能测定出两个电极的电势,就

可计算得到由它们组成的电池的电动势。由(9-1)式可推导出电池的电动势以及电极电势的表达式。下面以铜-锌电池为例进行分析。电池表示式为: 4142()()()()Zn s ZnSO m CuSO m Cu s |||| 符号“|”代表固相(Zn 或Cu )和液相(4ZnSO 或4CuSO )两相界面;“‖”代表连通两个液相的“盐桥”;1m 和2m 分别为4ZnSO 和4CuSO 的质量摩尔浓度。 当电池放电时, 负极起氧化反应: { }22()()2Zn Zn s Zn a e ++ - + 正极起还原反应: 22()2()C u C u a e C u s + +- + 电池总反应为: 2222()()()()C u Zn Zn s C u a Zn a C u s ++++ ++ 电池反应的吉布斯自由能变化值为: 22ln C u Zn Zn C u a a G G RT a a ++?=?- (9-2) 上述式中G ? 为标准态时自由能的变化值;a 为物质的活度,纯固体物质的活度等于1,即1Cu Zn a a ==。而在标态时,221C u Zn a a + +==,则有: G G nFE ?=?=- (9-3) 式中E 为电池的标准电动势。由(9-1)至(9-1)式可得: 22ln Zn C u a R T E E nF a ++ =- (9-4) 对于任一电池,其电动势等于两个电极电势之差值,其计算式为: E ??+-=- (9-5) 对铜-锌电池而言 22,1ln 2C u C u C u RT F a ??+ ++=- (9-6) 22,1ln 2Zn Zn Zn RT F a ??+ + -=- (9-7) 式中2,Cu Cu ?+ 和2,Zn Zn ?+ 是当221C u Zn a a + +==时,铜电极和锌电极的标准电极电势。 对于单个离子,其活度是无法测定的,但强电解质的活度与物质的平均质量摩尔浓度和

上机实验8 二维数组&字符数组--参考答案

上机实验八二维数组与字符数组—参考答案 一.目的要求 1.掌握二维数组的基本概念,如何定义二维数组,如何初始化二维数组。 2.掌握二维数组的基本操作:引用数组元素、行(列)求和,行(列)最大最小值,整个数组的输入输出等。 3.掌握与二维数组有关的算法,如找最大最小值(或位置)、矩阵转置等。 4.掌握字符串与字符数组的基本应用方法 5.掌握字符串有关的算法,如字符转换、查询、统计和进制转换等 二.实验内容 【实验题1】程序填空:输入一个4×4矩阵,求出主对角线上的元素之和sum1、副对角线上的元素之和sum2,并输出结果。 提示:每一行只有一个主对角线元素a[i][i](特征:i==j),也仅有一个副对角线元素a[i][n-i-1](特征:i+j==n-1,即j=n-1-i) 源程序: #include void main() { int i,j,sum1=0,sum2=0, a[4][4]; printf("Input a 4*4 matrix:\n"); for(i=0; i<4; i++) //输入矩阵元素 for( j=0; j<4; j++) scanf("%d", &a[i][j]); for(i=0; i<4; i++ ){ //计算sum1和sum2 sum1 +=a[i][i]; sum2 +=a[i][3-i]; } printf("sum1=%d, sum2=%d\n", sum1,sum2); //输出结果 } 运行程序,并输入数据: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 运行结果:sum1= 34, sum2= 34 【实验题2】程序填空:打印杨辉三角形前10行: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 …………………… 算法提示:分析一个10行的杨辉三角,需要一个10×10的二维矩阵a,则: 1)杨辉三角为下三角矩阵,只需要求出第i行(i=0,1,2,…,9)前i+1个元素,即a[i][j]!=0 (j=0…i). 2)每行的第0列元素均为1,即a[i][0]=1; 3)每行的主对角线元素也均为1,即a[i][i]=1; 4)从第2行开始,每行夹在第0列元素与主对角线元素之间的元素a[i][j]( i=2,3,…,9, j=1,..,i-1 ) 等于其左上方元素a[i-1][j-1]与正上方元素a[i-1][j]之和,即a[i][j]=a[i-1][j-1]+a[i-1][j]; 5)输出该矩阵的下三角,即得出杨辉三角的前10行。

实验(7)-函数-参考答案

C语言程序设计实验教学(7) 【实验目的】函数是C程序的基本组成部分,学习函数的设计和调用是很重要的。实验目的是掌握函数的定义、变量的作用域和函数的调用。 【实验要求】实际应用程序通常是由多个函数构成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中调用定义的函数。要学会函数声明。 【实验课时】6.0 【实验内容】 编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否返回0。编写main 函数,输入一个数num,调用fun(num)函数,并输出函数的返回值。 #include "stdio.h" int fun(int n) {int a,b,c; a=n%10; b=n/10%10; c=n/100; if(a*a*a+b*b*b+c*c*c==n) return(1); else return(0);} main() {int num; scanf("%d",&num); while(num<100||num>=1000) {printf("please enter the num again! (num>=100&&num<1000) \n"); scanf("%d",&num);} if(fun(num)==1) printf(" yes \n"); else printf(" no \n");} 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出函数的返回值。 #include "stdio.h" int ss(int n) {int i; for(i=2;i=n) return(1); else return(0);} main() { int num; scanf("%d",&num); if(ss(num)==1) printf(" yes \n"); else printf(" no \n");} 编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。 #include "stdio.h" long fun(int n) {long s=1; int i; for(i=1;i<=n;i++) s=s*i; return(s);}

实验报告-温差电动势的测量

大学物理实验报告 实验3-7 温差电动势的测量 一、实验目的: 测量热电偶的温差电动势。 二、实验器材: UJ31型箱式电位差计、热电偶、光点式或数字式验流计、标准电池、直流稳压电源、温度计、电热杯、带温度显示的水浴锅、保温杯。 三、实验原理: 1、热电偶 两种不同金属组成一闭合回路时,若两个接点A、B处于不同温度T0和T,则在两接点A、B间产生电动势,称为温差电动势,这种现象称为温差现象。温差电动势ε的大小除和热电偶材料的性质有关外,另一决定的因素就是两个接触点的温度差(T-T0)。电动势与温差的关系比较复杂,当温差不大时,取其一级近似可表示为 ε =C(T-T ) 式中C为热电偶常数(或称温差系数),等于温差1℃的电动势,其大小决定于组成热电偶的材料。 热电偶可制成温度计。为此,先将T0固定用实验方法确定热电偶的ε-T关系,称为定标。定标后的热电偶与电位差计配合可用于测量温度。与水银温度计相比,温差电偶温度计具有测量范围大(-200~2000℃),灵敏度和准确度高,便于实验遥测和A/D变换等一系列优点。 2、电位差计 电位差计时准确测量电势差的仪器,其精度很高。用伏 特表测量电动势x E,伏特表读数为U=x E-IR,其中R为 伏特表内阻。由于U

如图,如果两个电动势相等,则电路中没有电流通过,I=0, N E =x E 。如果 N E 是标准电池,则利用这种互相抵消的方法就能准确地测量被测的电动势x E , 这种方法称为补偿法,电位差计就是基于这种补偿原理而设计的。 在实际的电位差中, N E 必须大小可调,且电压很稳定。电位差计的工作原 理如图所示,其中外接电源E 、制流电阻P R 和精密电阻AB R 串联成一闭合电路,称为辅助回路。当有一恒定的标准电流 o I 流过电阻AB R 时,改变AB R 上两滑动头C 、D 的位置就能改变C 、D 间的电位差 CD V 的大小。由于测量时应保证 o I 恒定不变,所 以在实际的电位差计中都根据o I 大小把电阻的数 值转换成电压值,并标在仪器上。CD V 相当于上面 的“ N E ”,测量时把滑动头C 、D 两端的电压 CD V 引出与未知电动势x E 进行比较。 (1)校准: 根据标准电池电动势N E 的大小,选定C 、D 间的电阻为N R , 使 N E =o I N R ,调节P R 改变辅助回路中的电流,当验流计指零时,AB R 上的电压 恰与补偿回路中标准电池的电动势N E 相等。由于 N E 和 N R 都准确地已知,这时 辅助回路中的电流就被精确地校准到所需要的o I 值。 (2) 测量: 把开关倒向x E 一边,只要x E ≤o I N R ,总可以滑动C 、D 到' D 'C 、使检流计再度指零。这时'D 'C 、间的电压恰和待测的电动势x E 相等。设'D 'C 、之间的电阻为 x R ,可得x E = o I x R 。因o I 已被校准,x E 也就知道了。 由于电位差计的实质是通过电阻的比较把待测电压与标准电池的电动势作比较,此时有 N N x x E R R E = 因而只要精密电阻AB R 做得很均匀准确、标准电池的电动势 N E 准确稳定、

实验5 数组1答案

实验数组1 实验目的: 1、进一步掌握循环结构的程序设计 2、掌握在循环结构里面使用break、continue 3、掌握一维数组的定义与使用 实验内容: 一、观察下列代码(有语法问题自己解决) 1、利用无限循环输入数据,直到条件满足利用break跳出循环: #include using namespace std; int main( ) { int x,sum=0; while(1) { cin >> x; if(x <= 0) break; sum += x; } return 0; } 2、利用continue语句实现输出1-100之间的偶数: #include using namespace std; int main() { for (int i = 0;i <= 100; i++) { if (i % 2 != 0) continue; cout << i << ' '; } return 0; } 二、编码训练 1、利用break语句写一程序:循环从键盘输入数据并累加起来,直到输入的数为零时结束循环,打印累加结果。(参考前面第1题) #include using namespace std; int main( )

{ int x,sum=0; while(1) { cin >> x; sum += x; if(x == 0) break; } cout << "The sum is " << sum << endl; return 0; } 2、利用continue语句写一程序:输出1-20之间不能被3整除的数。(参考前面第2题) #include using namespace std; int main() { for (int i = 1;i <= 20; i++) { if (i % 3 == 0) continue; cout << i << ' '; } return 0; } 3、实现求6位学生c++的平均成绩。(参考案例书的P47案例1) #include using namespace std; int main() { double score[6]; double avg = 0,sum = 0; for (int i = 0;i <= 5; i++) { cin >> score[i]; sum = sum + score[i]; } avg = sum/6; cout << "平均成绩是:" << avg; return 0; } 4、利用一维数组编写一个程序:从键盘上输入10个float类型的数据,找出它们的最大值和最小值,并输出(定义两个变量分别保存最大值和最小值)。(参考案例书的P47案例1)#include using namespace std; int main() { float numb[10]; float min = 0.0,max = 0.0; int i; for (i = 0;i <= 9; i++) { cin >> numb[i]; } min = numb[0]; max = numb[0]; for (i = 1;i <= 9; i++) { if (numb[i] >= max ) max = numb[i];

电位差实验报告

电位差实验报告 篇一:大学物理实验报告----电位差计的使用 大学物理实验报告——电位差计的使用 篇二:电位差计校准电表实验报告(完整版) 电位差计校准电流表 1 2 3 4 5 篇三:物理实验报告9_电位差计 实验名称:电位差计 实验目的: a.了解电位差计改装的原理,掌握一般使用的方法 b.学习使用电位差计校准电流表 实验仪器: UJ33a型电位差计等。 实验原理和方法: 一、“UJ33a型电位差计”使用方法 倍率开关K1平时处于“断”位置,使用时旋转到所需位置(本实验

为“?1”位置),开关K3旋转至“测量”位置。接通电源后,旋动“调零”旋钮使检流计指零;将K2键扳向“标准”,旋动“工作电流调节”旋钮,使检流计指针指零,这时工作电流达到额定值10.0000ma,仪器准备就绪。 测量时,将调节补偿电压的三个盘或旋钮调到与待测电压差不多大小后,将K2键扳向“未知” 位置,调节读数盘(一般调最右边的大盘即可),使检流计指针返零,松开K2键,即可读数。测量完毕,K1扳回“断”位置。二、电位差计工作原理和测量线路电位差计采用比较法(补偿法)测量电压,测量时无须从待测电路取出电流,不会干扰待测电路的工作状态,因而可以进行精密的测量。由于在结构上采用了高精度的电阻元件、标准电池和灵敏的检流计,因而测量结果具有很高的精度。使用时将K2键扳向“标准”,使标准电阻两端的电压()与标准电池电动势比较,调节“工作电流调节”旋钮使检流计指零,则工作电流为10.000ma,再将待测电压与某一段电阻上的电压进行比较,从而确定待测电压。 三、校准微安表按照线路图连接好电路,并将标准电阻两旁的导线接到电位差计的“未知”接线柱,就可进行微安表校准。所谓“校准”就是在每个电表电流读数下,测定电阻两端的准确电压,从而算出准确电流,再与电表读数电流进行比较。所谓“上行”是指电流表读数由小到大逐点测定相应的电压值(读至小数点后3位);“下行”则由大到小逐点进行测定。校准电流数据填入到数据记录表中。注意:1.校准电表前必须先进行检流计调零,并校准工作电流;2.校准时要随

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

原电池电动势的测定实验报告

实验九 原电池电动势的测定及应用 一、实验目的 1.测定Cu -Zn 电池的电动势和Cu 、Zn 电极的电极电势。 2.学会几种电极的制备和处理方法。 3.掌握SDC -Ⅲ数字电位差计的测量原理和正确的使用方法。 二、实验原理 电池由正、负两极组成。电池在放电过程中,正极起还原反应,负极起氧化反应,电池内部还可以发生其它反应,电池反应是电池中所有反应的总和。 电池除可用来提供电能外,还可用它来研究构成此电池的化学反应的热力学性质。从化学热力学知道,在恒温、恒压、可逆条件下,电池反应有以下关系: G nFE ?=- (9-1) 式中G ?是电池反应的吉布斯自由能增量;n 为电极反应中得失电子的数目;F 为法拉第常数(其数值为965001C mol -?);E 为电池的电动势。所以测出该电池的电动势E 后,进而又可求出其它热力学函数。但必须注意,测定电池电动势时,首先要求电池反应本身是可逆的,可逆电池应满足如下条件: (1)电池反应可逆,亦即电池电极反应可逆; (2)电池中不允许存在任何不可逆的液接界; (3)电池必须在可逆的情况下工作,即充放电过程必须在平衡态下进行,亦即允许通过电池的电流为无限小。 因此在制备可逆电池、测定可逆电池的电动势时应符合上述条件,在精确度不高的测量中,常用正负离子迁移数比较接近的盐类构成“盐桥”来消除液接电位。

在进行电池电动势测量时,为了使电池反应在接近热力学可逆条件下进行,采用电位计测量。原电池电动势主要是两个电极的电极电势的代数和,如能测定出两个电极的电势,就可计算得到由它们组成的电池的电动势。由(9-1)式可推导出电池的电动势以及电极电势的表达式。下面以铜-锌电池为例进行分析。电池表示式为: 4142()()()()Zn s ZnSO m CuSO m Cu s |||| 符号“|”代表固相(Zn 或Cu )和液相(4ZnSO 或4CuSO )两相界面;“‖”代表连通两个液相的“盐桥”;1m 和2m 分别为4ZnSO 和4CuSO 的质量摩尔浓度。 当电池放电时, 负极起氧化反应: { }22()()2Zn Zn s Zn a e ++-+? 正极起还原反应: 22()2()Cu Cu a e Cu s ++-+? 电池总反应为: 2222()()()()Cu Zn Zn s Cu a Zn a Cu s ++++++? 电池反应的吉布斯自由能变化值为: 22ln Cu Zn Zn Cu a a G G RT a a ++?=?- (9-2) 上述式中G ?为标准态时自由能的变化值;a 为物质的活度,纯固体物质的活度等于1,即1Cu Zn a a ==。而在标态时,221Cu Zn a a ++==,则有: G G nFE ?=?=- (9-3) 式中E 为电池的标准电动势。由(9-1)至(9-1)式可得: 22ln Zn Cu a RT E E nF a + + =- (9-4) 对于任一电池,其电动势等于两个电极电势之差值,其计算式为: E ??+-=- (9-5) 对铜-锌电池而言 22,1 ln 2Cu Cu Cu RT F a ??+ + += - (9-6)

实验5-数组答案

VB程序设计实验五 实验目的 ●掌握一维数组和二维数组的操作 ●学习跟数组相关的控件:列表框和组合框 复习 1.列表框 列表框(ListBox)控件允许用户查看和选择列表中的多个元素。 表5-11 列表框的常用属性和事件 2.组合列表框(ComboBox)整合了列表框和文本框的功能,以一个文本框控件(TextBox) 右边加上一个向下箭头的样式显示。有Simple(简单组合框)、DropDown(下拉组合框)和DropDownList(下拉列表框)。其中,Simple选项不显示下拉箭头,而是在控件的旁边显示一个滚动条;DropDown风格(默认值)在单击向下箭头时显示一个下拉列表,且在ComboBox中输入一个值;DropDownList显示一个下拉列表,但不允许用户在ComboBox中输入。 表5-13 组合列表框的常用属性和事件

(1) Items.Count属性:列表框或组合框中项目数量。最后一项的序号为Items.Count-1,该属性只能在程序中设置或引用。 (2) Text属性:被选定的选项的文本内容。该属性只能在程序中设置或引用。 注意:ListBox1.Items(ListBox1.SelectedIndex)等于ListBox1.Text。 (3) Items.Add方法 把一个选项加入列表框,格式:对象.Items.Add(选项);如:ListBox1.Items.Add("周海涛") (4) Insert方法 在指定位置插入一个项目。格式:对象.Items.Insert(序号, 添加项内容) (5)Items.Remove方法 从列表框中删除指定的项。格式:对象. Items.Remove (选项)。 例如:ListBox1.Items.Remove ("华成") (6)Items.RemoveAt方法 格式:对象.RemoveAt(Index) 从列表框中删除指定的项。Index表示被删除项目在列表框中的位置,从0开始。 例如:ListBox1.Items.RemoveAT(4) (7) Items.Clear方法 格式:对象.Items.Clear 用于清除列表框所有项目,例如:ListBox1.Items.Clear 4.单选按钮、复选框和框架 1)单选按钮(RadioButton) 单选按钮以组的形式出现,允许选择其中一项。 ?Text属性:按钮上显示的文本 ?TextAlign属性:文本对齐方式 ?Checked属性:表示单选按钮的状态,True ——被选定,False ——未被选定?Click事件:单击后,使Checked属性为True ?CheckedChanged事件:当某个单选按钮的状态被发生变化,该事件随之被触发。2)复选框(CheckBox) 与RadioButton具有相同属性和事件,之外还有: ?CheckState属性:表示复选框状态,Unchecked——未选定,Checked——被选定,Indeterminate——灰色 3)框架(GroupBox分组框) ?Text属性:标题文本 ?Enabled属性:框架和其中的控件

电位差计校准电表实验报告(完整版)

电位差计校准电流表

3 、电位差计的标准 要想使回路的工作电流等于设计时规定的标准值I O ,必须对电位差计进行校准。方法如图所示。E S 是已知的标准电动势,根据它的大小,取cd 间电阻为R cd ,使R cd =E S /I O ,将开关K 倒向E S ,调节R 使检流计指针无偏转,电路达到补偿,这时I O 满足关系I O = E S /R cd ,由于已知的E S 、R cd 都相当准确,所以I O 就被精确地校准到标准值,要注意测量时R 不可再调,否则工作电流不再等于I O 。 4﹑电流表的校准 校正电流表的电路如图5-20-4所示,图中毫安表为被校准电流表,R 为限流器,s R 为标准电阻,有4个接头,上面两个是电流接头,接电流表,下面两个是电压接头,接电位差计。电位差计可测出s R 上的电压s U ,则流过s R E R a b c d Es Ex K 图5-20-4 电位差计校正电流表电路

中电流的实际值为s s R U I /0= 在毫安表上读出电流指示值I ,与0I 进行比较,其差值0I I I -=?称为电流表指示值的绝对误差。找出所测值中的最大绝对误差m I ?,按式(0-0-1)确定电流表级别。 %100??= 量限 m I a (0-0-1) 电路实物图: 五、实验内容及步骤 1、校准学生式电位差计 使用电位差计之前,先要进行校准,使电流达到规定值。先放好R A 、R B 和R C ,使其电压刻度等于标准电池电动势,取掉检流计上短路线,用所附导线将K 1、K 2、K 3、G 、R 、R b 和电位差计等各相应端钮间按原理线路图进行连接,经反复检查无误后,接入工作电源E ,标准电池E S 和待测电动势E X ,R b 先取电阻箱的最大值,(使用时如果检流计不稳定,可将其值调小,直到检流计稳定为止),合上K 1、K 3,将K 2推向E S (间歇使用),并同时调节R ,使检流计无偏转(指零),为了增加检流计灵敏度,应逐步减少R b ,如此反复开、合K 2 ,确认检流计中无电流流过时,则I O 已达到规定值。

MATLAB程序设计及应用(第二版)课后实验答案

Matlab 课后实验题答案 实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221 ln(1)2z x x = ++,其中2120.45 5i x +??=??-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=-- (4) 22 42011 122123t t z t t t t t ?≤=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1) 2. 已知:

1234413134787,2033657327A B --???? ????==???? ????-???? 求下列表达式的值: (1) A+6*B 和A-B+I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A (5) [A,B]和[A([1,3],:);B^2] 解: M 文件: A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7]; A+6.*B A-B+eye(3) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] 3. 设有矩阵A 和B 1234 53 166789101769,11 121314150 23416171819209 7021222324254 1311A B ???? ????-??? ?????==-??? ? ???????????? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D 。 (3) 查看MATLAB 工作空间的使用情况。 解:. 运算结果: E=(reshape(1:1:25,5,5))';F=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]; C= E*F H=C(3:5,2:3) C = 93 150 77

语言程序设计实验答案数组指针与字符串

实验06 数组、指针与字符串(4学时) (第6章数组、指针与字符串) 一、实验目的 二、实验任务 6_1(习题6-25)编写并测试3×3矩阵转置函数,使用数组保存3×3矩阵。 6_2(习题6-26)使用动态内存分配生成动态数组来重新完成上题(n阶方阵),使用指针实现函数的功能。 6_3 编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。

6_4 使用string类声明字符串对象,重新实现上一小题。 6_5(习题6-27)声明一个Employee类。 其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性,实现并测试这个类。 6_6(习题6-27)声明包含5个元素的对象数组,每个元素都是Employee 类型的对象。 6_7 修改实验4中的people(人员)类。 具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”声明为一个“日期”类内嵌子对象。 用成员函数实现对人员信息的录入和显示。 要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。 在测试程序中声明people类的对象数组,录入数据并显示。 三、实验步骤 1.(编程,习题6-25)编写矩阵转置函数,输入参数为3×3整型数组。 使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入输出。程序名:。 参考运行结果:

用电位差计测电动势实验报告

用电位差计测电动势实验报告 篇一:十一线电位差计测电动势(实验报告) 大学物理实验报告 实验名称电位差计测量电动势实验日期实验人员 【实验目的】 1. 了解电位差计的结构,正确使用电位差计; 2. 理解电位差计的工作原理——补偿原理; 3. 掌握线式电位差计测量电池电动势的方法; 4. 熟悉指针式检流计的使用方法。 【实验仪器】 11线板式电位差计、检流计、标准电池、待测电池、稳压电源、单刀双掷开关、保护电路组 【实验原理】 电源的电动势在数值上等于电源内部没有净电流通过时两极件的电压。如果直接用电压表测量电源电动势,其实测量结果是端电压,不是电动势。因为将电压表并联到电源两端,就有电流I通过电源的内部。由于电源有内阻r0,在电源内部不可避免地存在电位降Ir0,因而电压表的指示值只是电源的端电压(U=E-Ir0)的大小,它小于电动势。

显然,为了等于其电动势E。 1. 补偿原理 ?? 如图1所示,把电动势分别为ES 、EX和检流计G 联成闭合回路。当ES EX时,检流计指针偏向另一边。只有当ES = EX时,回路中才没有电流,此时I=0 ,检流计指针不偏转,我们称这两个电动势处于补偿状态。反过来说,若I=0 ,则ES = EX。 能够准确的测量电源的电动势,必须使通过电源的电流I为零。此时,电源的端电压U才 图1 补偿电路 2. 十一线电位差计的工作原理 如图2所示,AB为一根粗细均匀的电阻丝共长11米,它与直流电源组成的回路称作工 作回路,由它提供稳定的工作电流I0;由待测电源EX、检流计G、电阻丝CD构成的回 路称为测量回路;由标准电源ES、检流计G、电阻丝CD 构成的回路称为定标(或校准) 回路。调节总电流I0的变化可以改变电阻丝AB单位长度上电位差U0的大小。C、D 为AB上的两个活动接触点,可以在电阻丝上移动,以

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

实验五 数组的应用(1)

实验五数组的应用(1) 一、实验目的: 1、掌握静态数组的定义和使用方法。 2、用数组解决实际问题。 二、实验准备: 1、计算机基本操作练习。 2、VisualBasic软件使用预习。 3、设计出下面问题的程序。 三、实验步骤及内容: 1、静态数组的声明,语法格式如下: Dim 数组名[(各维下标)] [As 数据类型],… 例如:Dim num(6) As Integer 定义了一个包含()个元素的数组,从()到()。 静态数组的上下标必须是(),如果希望数组下标下界默认从1开始,则可在窗体的“通用|声明”部分使用: ________________________________语句来改变默认值。 2、Array函数的使用。 Dim a() As Variant A = Array(154,135,121) 请说明以上语句的作用,()。 Lbound函数和Ubound函数可以分别返回数组的指示维数的最小、最大可用下标。 3、应用一维静态全局数组求10个100以内的最大值、最小值、平均值和方差。程序运行界面如图所示。

4、利用数组排序。按“生成随机数”按钮,在第一个文本框中生成10个10~99之间的随机数,然后按“按大小排序”按钮,将这10个数按从大到小的顺序排列放在第二个文本框中。设计界面及运行结果如图1和图2 所示:

图1 设计界面 图2 运行界面 要求: 提示: (1)设计窗体,添加控件:两个文本框(Text)、两 个按钮(Command)。 (2)如表1 所示设置窗体控件属性。 (4)自行编辑代码。 窗体通用声明代码如下: Option Base 1 Dim a() As Integer 窗体控件代码自行编辑。 Private Sub Command1_Click()

实验4-1 函数的应用的答案

实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈分别输入整数半径和实数半径,使用函数重载计算圆的面积。 #include #define PI 3.14 int area(int); float area(float); void main() { int r1; cout<<"Input a integer r="; cin>>r1; cout<<"area="<

相关文档 最新文档