实验五 参考答案
- 格式:doc
- 大小:71.00 KB
- 文档页数:4
实验五、队列的应用一、实验原理:一种“先进先出”(FIFO---First In First Out)的数据结构:即插入在队尾一端进行,而删除在队头进行。
键盘缓冲区问题:设计算法实现模拟键盘缓冲区问题。
假设有两个进程同时存在于一个应用程序之中,第一个进程连续在屏幕上显示字符“X”,第二个进程不断检查键盘上是否有输入,若有则读入用户键入的字符,将其保存到键盘缓冲区之中。
程序约定当用户键入一个逗号“,”,则表示第一进程结束,系统开始显示那些在键盘缓冲区中的字符;接着继续执行第一个进程,即,在屏幕上显示字符“X”;当用户输入“;”的时候,刚结束整个程序。
算法提示:为了充分利用缓冲区的空间往往将缓冲区设计成循环队列的结构,并为循环队列结构的缓冲区设置一个队首指针和一个队尾指针。
每输入法一个字符到缓冲区中,就将尾指针后移,链入缓冲区的循环队列之中;每输出一个字符号,就将队头指针前移,将它从缓冲队列中删除。
参考代码:/*键盘缓冲区问题*/#define MAXSIZE 20#define TRUE 1#define FALSE 0#include "stdio.h"#include "conio.h"#include "dos.h"typedef char elemtype;typedef struct{elemtype elem[MAXSIZE];int front, rear;}queuetype;int enque(queuetype *s, elemtype x) /*数据入队列*/{if (( s->rear+1)%MAXSIZE==s->front ) /*队列已满*/return (FALSE);else{s->rear=(s->rear+1) % MAXSIZE;s->elem[s->rear]=x;return(true);}}elemtype delqueue (queuetype *s ) /*数据出队列*/{if (s-front==s->rear) /*队列为空*/return(NULL);else /*队列非空*/{s->front=(s->front+1)%MAXSIZE;return(s->elem[s->front]);}}main(){char ch1,ch2;queuetype *p;int t,f;p=(queuetype *)malloc(sizeof(queuetype));p->front=0;p->rear=0;while(1) /*开始交替执行*/{while(1) /*第一个进程的执行*/{if(kbhit()) /*检测是否有键盘输入*/{ch1=bdos(7,0,0); /*中断调用,键入字符存入ch1*/f=enqueue( p, ch1 ); /*字符入循环队列*/if ( f== FALSE ){printf(" The queue is already full !\n");break;}}if ( ch1==';' || ch1==',' )break; /*第一个进程正常结束情况*/printf("X"); /*执行第一个进程*/}ch2=delqueue(p);while( ch2 != NULL ){putchar(ch2); /*在屏幕上显示输入缓冲区中的内容*/ch2=delqueue(p); /*字符出队列*/}getchar(); /*为看清屏幕内容, 在此暂停, 按回车继续if (ch1==';'||f==FALSE) /*程序结束*/break;else /*继续执行*/ch1=''; /*先置空ch1*/}}。
信号与信号处理实验参考答案实验⼀熟悉MATLAB 环境2、(2)粗略描绘下列各函数的波形说明:MA TLAB 中有函数ttt c ππsin )(sin = ④ f(t)=sint/tt=-3*pi:0.01*pi:3*pi; t1=t/pi; y=sinc(t1); plot(t,y); hold onplot(t,0)⑤在⾃⼰的⼯作⽬录work 下创建Heaviside 函数的M ⽂件,该⽂件如下:function f=Heaviside(t)f=(t>0) %t>0时f 为1,否则f 为0在命令窗⼝输⼊如下语句,就能绘出u(t)的波形。
t=-1:0.01:3; f=Heaviside(t); plot(t,f) axis([-1 3 –0.2 1.2]) ⑥t=-1:0.01:2;g=Heaviside(t)-Heaviside(t-1); plot(t,g);axis([-1 2 -0.2 1.2]) hold on plot(t,0)4、分别⽤for 和while 循环结构编写程序,求出s=∑=632k k=1+2+22+23+…+262+263并考虑⼀种避免循环的简洁⽅法来进⾏求和。
程序如下: s=1; for k=1:63s=s+2^k;s运⾏结果是:s =1.8447e+019(2)s=1;k=1;while k<=63s=s+2^k;k=k+1;ends运⾏结果:s =1.8447e+019(3)k=0:63;s=sum(2.^k)实验⼆信号的卷积与系统的响应和阶跃响应1.n=0:20;hn=0.9.^n;xn=[0,0 ones(1,8),0,0];yn=conv(hn,xn);stem(yn)3. 利⽤MA TLAB绘制下列信号的卷积积分f1(t)*f2(t)的时域波形。
(1)f1(t)=2[u(t+1)-u(t-1)], f2(t)=u(t+2)-u(t-2)(2)f1(t)=tu(t), f2(t)=u(t)(3)f1(t)=u(t)-u(t-4), f2(t)=sin(лt)u(t);(4)f1(t)=e-2t u(t), f2(t)=e-t u(t)(1) 先编写实现连续信号卷积的通⽤函数sconv(),程序如下:function[f,k]=sconv(f1,f2,k1,k2,p)%计算连续信号卷积积分f(t)=f1(t)*f2(t)%f:卷积积分f(t)对应的⾮零样值向量%k:f(t)的对应时间向量%f1:f1(t)⾮零样值向量%f2:f2(t)⾮零样值向量%k1:f1(t)的对应时间向量%k2:序列f2(t)的对应时间向量%p:取样时间间隔f=conv(f1,f2); %计算序列f1与f2的卷积ff=f*p;k0=k1(1)+k2(1); %计算序列f的⾮零样值的起点位置k3=length(f1)+length(f2)-2; %计算卷积和f的⾮零样值的宽度k=k0:p:((k3-(0-k0)/p)*p); %确定卷积和f⾮零样值的时间向量subplot(2,2,1)plot(k1,f1) %绘制f1(t)title('f1(t)')xlabel('t')ylabel('f1(t)')subplot(2,2,2)plot(k2,f2)title('f2(t)')xlabel('t')ylabel('f2(t)')subplot(2,2,3)plot(k,f);h=get(gca,'position');h(3)=2.5*h(3);set(gca,'position',h) %将第三个⼦图的横坐标范围扩为原来的2.5倍title('f(t)=f1(t)*f2(t)') xlabel('t')ylabel('f(t)')p=0.01;k1=-1:p:1;f1=2*ones(1,length(k1));k2=-2:p:2;f2=ones(1,length(k2));[f,k]=sconv(f1,f2,k1,k2,p)(2)p=0.01;k1=0:p:10;k2=0:p:10;f2=ones(1,length(k2)); [f,k]=sconv(f1,f2,k1,k2,p)第(2)题图上实验⼆信号的卷积与系统的响应1.n=0:20;hn=0.9.^n;xn=stepseq(2,0,20)-stepseq(10,0,20);yn=conv(hn,xn);stem(yn)2.(1)p=0.01;k1=-2:p:2;f1=2*(u(k1+1)-u(k1-1));f2=u(k2+2)-u(k2-2);[f,k]=sconv(f1,f2,k1,k2,p)p=0.01;k1=-1:p:10;f1=k1.*u(k1);k2=k1;f2=u(k2);[f,k]=sconv(f1,f2,k1,k2,p)(3)p=0.01;k1=-4:p:10; f1=u(k1)-u(k1-4);k2=k1;f2=sin(pi*k2).*u(k2); [f,k]=sconv(f1,f2,k1,k2,p)5.已知描述某连续系统的微分⽅程为:y’’(t)+5y’(t)+8y(t)=3f’’(t)+2f(t)绘出系统的冲激响应波形,求出t=0.5s, 1s, 1.5s, 2s系统冲激响应的数值解。
实验五 五水合硫酸铜结晶水的测定一、实验目的1.掌握利用废铜粉制备硫酸铜的方法;2.练习减压过滤、蒸发浓缩和重结晶等基本操作;3.了解结晶水的测定方法,认识物质热稳定性和分子结构的关系。
二、实验原理利用废铜粉灼烧氧化法制备CuSO 4·5H 2O :先将铜粉在空气中灼烧氧化成氧化铜,然后将其溶于硫酸而制得:2Cu + O 2=== 2CuO (黑色)CuO + H 2SO 4 === CuSO 4 + H 2O 由于废铜粉不纯,所得CuSO 4溶液中常含有不溶性杂质和可溶性杂质FeSO 4、Fe 2(SO 4)3及其他重金属盐等。
Fe 2+ 离子需用氧化剂H 2O 2溶液氧化为Fe 3+ 离子,然后调节溶液pH ≈4.0,并加热煮沸,使Fe3+ 离子水解为Fe(OH)3沉淀滤去。
其反应式为 2Fe 2+ + 2H + + H 2O 2 === 2Fe 3+ + 2H 2O Fe 3+ + 3H 2O === Fe(OH)3↓ + 3H + CuSO 4·5H 2O 在水中的溶解度,随温度的升高而明显增大,因此粗硫酸铜中的其他杂质,可通过重结晶法使杂质在母液中,从而得到较纯的蓝色水合硫酸铜晶体。
水合硫酸铜在不同的温度下可以逐步脱水,其反应式为CuSO 4·5H 2O === CuSO 4·3H 2O + 2H 2O CuSO 4·3H 2O === CuSO 4·H 2O + 2H 2O CuSO 4·H 2O === CuSO 4 + H 2O 1 mol CuSO 4结合的结晶水的数目为24HOCuSO nn 。
三、实验仪器及试剂托盘天平,瓷坩埚,泥三角,酒精灯,烧杯(50mL ),电炉,布氏漏斗,吸滤瓶,精密pH 试纸,蒸发皿,表面皿,水浴锅,量筒(10mL )。
废铜粉, H 2SO 4(2mol ·L -1), H 2O 2(3%), K 3[Fe(CN)6](0.1mol ·L -1), NaOH(2mol ·L -1),无水乙醇。
一、实验目的1. 了解工程力学实验的基本方法和步骤。
2. 通过实验,掌握力学基本理论在工程实际中的应用。
3. 培养实验操作技能,提高实验数据分析能力。
二、实验内容1. 材料力学实验:拉伸试验、压缩试验、弯曲试验。
2. 建筑力学实验:静力平衡实验、超静定结构受力分析实验。
三、实验步骤1. 实验一:拉伸试验(1)将试样固定在拉伸试验机上,调整试验机至预定位置。
(2)缓慢加载,记录加载过程中的力值和位移值。
(3)观察试样变形情况,记录断裂位置。
(4)分析试验数据,绘制拉伸曲线,计算弹性模量、屈服强度等指标。
2. 实验二:压缩试验(1)将试样固定在压缩试验机上,调整试验机至预定位置。
(2)缓慢加载,记录加载过程中的力值和位移值。
(3)观察试样变形情况,记录断裂位置。
(4)分析试验数据,绘制压缩曲线,计算抗压强度、弹性模量等指标。
3. 实验三:弯曲试验(1)将试样固定在弯曲试验机上,调整试验机至预定位置。
(2)缓慢加载,记录加载过程中的力值和位移值。
(3)观察试样变形情况,记录断裂位置。
(4)分析试验数据,绘制弯曲曲线,计算抗弯强度、弹性模量等指标。
4. 实验四:静力平衡实验(1)搭建静力平衡实验装置,调整实验参数。
(2)观察实验现象,记录实验数据。
(3)分析实验数据,验证静力平衡原理。
5. 实验五:超静定结构受力分析实验(1)搭建超静定结构实验装置,调整实验参数。
(2)观察实验现象,记录实验数据。
(3)分析实验数据,验证超静定结构受力分析原理。
四、实验结果与分析1. 拉伸试验根据实验数据,绘制拉伸曲线,计算弹性模量E=...(单位:MPa),屈服强度σs=...(单位:MPa),抗拉强度σb=...(单位:MPa)。
2. 压缩试验根据实验数据,绘制压缩曲线,计算抗压强度σc=...(单位:MPa),弹性模量E=...(单位:MPa)。
3. 弯曲试验根据实验数据,绘制弯曲曲线,计算抗弯强度σb=...(单位:MPa),弹性模量E=...(单位:MPa)。
实验五托盘天平的使用(化学-人教版-九年级上册)总分数22分时长:不限题型单选题题量11总分221(2分)(2016常德市)某同学欲配制50g 5%的氯化钠溶液,下列说法中正确的是()A.用蒸馅水洗涤试剂瓶后立即盛装配好的氯化钠溶液B.用500mL的烧杯量取所需要的水C.用托盘天平准确称取氯化钠固体2.5gD.氯化钠固体溶解时用玻璃棒搅拌的目的是增大其在水中的溶解度2(2分)(2017常德中考)下列关于水和溶液的说法中不正确的是()A.用肥皂水可以区分软水和硬水B.净化水的常用方法有:吸附、沉淀、过滤、蒸馅C.配制6%氯化钠溶液的先后步骤是:称量、计算、溶解D.地球上总的水储量很大但可利用的淡水资源很少3(2分)(2018衡阳市中考)下列实验装置或操作正确的是()熄灭酒精灯实验室制取二氧化碳读取液体体积NaCl称取一定质量的氯化钠4(2分)(2018怀化市中考)下列实验方法正确的()A.将氯化钠固体直接放在天平的右盘称量B.将pH试纸浸入到待测液中,测溶液的pHC.粗盐提纯实验过程中,蒸发结晶时,在蒸发皿中出现较多量固体时停止加热D.过滤时用玻璃棒在漏斗中搅拌以加速过滤5(2分)(2018益阳市中考)下列基本实验操作正确的是()灼热的蒸发皿,桌面蒸发皿的放置检查气密性称量NaCl6(2分)(2017邵阳中考)在“粗盐难溶性杂质的去除”实验中,操作步骤为溶解、过滤、蒸发、计算产率。
下列各步骤中的一些做法正确的是()A.溶解:用玻璃棒搅拌以加速溶解B,过滤:直接将粗盐水倒入漏斗中C.蒸发:等蒸发皿中水分蒸干便停止加热D.计算产率:将精盐直接转移到天平的托盘上称量7(2 分)(2017岳阳中考)下列实验基本操作正确的是(A.滴加液体B.--D读取'液体体积C.测定浴'液pH氢氧化钠固体称量氢氧化钠固体8(2分)(2016娄底市)托盘天平左、右两边各放一只质量相等的烧杯,在两只烧杯中加入等质量、等质量分数的稀盐酸,此时天平保持平衡。
实验四简单查询和连接查询2. 简单查询实验用Transact-SQL语句表示下列操作,在“学生选课“数据库中实现其数据查询操作:(1) 查询数学系学生的学号和姓名。
select sno,snamefrom Swhere Sdept='MA'(2) 查询选修了课程的学生学号。
select distinct(sno)from sc;(3) 查询选修课程号为‘C2’的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select distinct(sno),gradefrom scwhere cno='C2'order by grade desc,sno asc;(4) 查询选修课程号为‘C2’的成绩在80-90 分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
select distinct(sno),grade*0.8 as'sore'from scwhere cno='C2'and grade between 80 and 90;(5) 查询数学系(MA)或计算机科学系(CS)姓张的学生的信息。
select*from Swhere dept in('MA','CS')and sname like'张%';(6) 查询缺少了成绩的学生的学号和课程号。
select sno,cnofrom scwhere grade is null;3. 连接查询实验用Transact-SQL语句表示,并在“学生选课”数据库中实现下列数据连接查询操作:(1) 查询每个学生的情况以及他(她)所选修的课程。
select S.*,amefrom S JION sc ON s.sno=sc.sno JION c ON o=o(2) 查询学生的学号、姓名、选修的课程名及成绩。
select s.sno,sname,cname,gradefrom S JION sc ON s.sno=sc.sno JION c ON o=o(3) 查询选修‘离散数学’课程且成绩为90 分以上的学生学号、姓名及成绩。
实验五 描绘小灯泡的伏安特性曲线一、实验目的描绘小灯泡的伏安特性曲线,并分析曲线的变化规律。
二、实验原理根据部分电路欧姆定律,R U I =可得RU I 1=,即在I-U 坐标系中,图线的斜率等于电阻的倒数。
三、实验器材学生电源(4~6V 直流),小电珠(“4V 0.7A ”或“3.8V 0.3A ”),电流表(内组较小),电压表(内组很大),开关和导线。
四、实验步骤(1)确定电流表、电压表的量程,照图连好电路。
(注意开关应断开,滑动变阻器与灯泡并联部分电阻为零)。
(2)闭合开关S ,调节滑动变阻器,使电流表、电压表有较小的明显示数,记录一组电压U 和电流I 值。
(3)用同样的方法测量并记录约12组U 值和I 值。
(4)断开开关S ,整理好器材。
(5)在坐标纸上,以U 为横坐标、I 为纵坐标建立直角坐标系,并根据表中数据描点,连接各点得到I -U 图线,(注意:连接各点时,不要出现折线)【数据处理】【结论】描绘出的图线是一条线。
它的斜率随电压的增大而,这表明小灯泡的电阻随电压(温度)升高而五、实验探究用本实验提供的方法,测量并描绘发光二极管的伏安特性曲线。
六、巩固练习1.如图所示,电流表的示数是A,电压表的示数是V.2.某同学研究三种导电元件的伏安特性,他根据实验中所测得的数据,分别绘制了I-U图线,如图所示,下列说法正确的是A.图(1)的元件可以作为标准电阻使用B.图(2)的阻值随电压升高而增大C.图(3)的阻值随电压升高而增大D.只有图(2)才是可能的。
3.两个电阻R1、R2的电流I和电压U的关系如图所示。
由图可知,两电阻的阻值之比R1:R2等于A.1:3 B.3:1 C. 1 :3 D. 3:14.如图所示,滑动变阻器R1的最大阻值是200欧,定值电阻的阻值R2=300欧,A、B两端的电压恒定,且U AB=8V。
当开关S断开时,移动滑片P,R2两端的电压变化范围是,当开关S闭合时,移动滑片P,R2两端的电压变化范围是5.为了测定小灯泡的伏安特性曲线,需要测得的电压范围尽可能大些,如从0~4V或0~3.8V.为此,应选下图中的那个电路?参考答案:1.0.48A,2.20V 2.A B 3.A 4.4.8~8V,0~8V 5.(1)。
中考物理实验操作考试简答题及参考答案实验一测量液体的密度1、调节天平分几步?怎样调节?答:分两步①将天平放在水平台上,游码归零。
②调节天平两端的平衡螺母,使横梁平衡。
2、调横梁平衡时,若指针左偏,应怎样调节右端的平衡螺母?答:此题可依实验要求回答。
调节横梁平衡时,若指针左偏,向右调节平衡螺母;若指针右偏,向左调节平衡螺母(简记:“左偏右调,右偏左调)3、天平横梁平衡的标志是什么?答:指针指在分度盘的中线处,或在中线两端左右摆动幅度相同。
4、调好的天平换了位置后,可否直接使用?答:不可以,要有重新调节天平平衡的过程。
5、在用天平称量质量时,可否调节平衡螺母使之平衡?答:不可以,应调节游码。
6、测定密度的原理是什么?答: =m/v7、用量筒测体积,读数时应注意什么?答:待量筒里的液面平稳后,视线平视液面的最低处(水银凸面的最高处)所对的刻线读数。
8、在用天平测量质量时,在什么情况下向右轻移游码?答:加减最小砝码都不能使天平平衡时,可采用向右移动游码,使天平恢复平衡9、在用天平测量质量时,向右轻移游码起什么作用?答:向右移动游码等于向右盘添加更小质量的砝码。
10、怎样用天平测量液体的质量?答:①用天平测出容器的质量m1。
②容器内装上液体,用天平测出容器和液体总质量m2。
③计算液体质量m0(m0=m2-m1)。
11、怎样用量筒测出固体的体积?答:①量筒内装入适量的水,记录水的体积V1②将固体全部浸没在水中,记录水面到达的刻度值V2③计算固体体积V0(V0=V2-V1)12、测定液体的密度,需要测出哪些数据?需要计算哪些数据?答:测量数据:①烧杯和液体的总质量m1②烧杯和剩余液体的总质量m2③倒入量筒内适量液体的体积V计算数据:①倒入量筒内液体的质量m0(m0=m1-m2)②液体密度:( =m0/v=m1-m2/v)实验二探究杠杆的平衡条件1、在实验前发现杠杆左端低右端高,应怎样调节杠杆两端的螺母?答:可根据实际情况回答:左端低,右端高,平衡螺母向右调。
实验5交换机的配置与应用一实验目的在熟悉交换机外部结构的基础上,了解交换机的物理连接方法和基本参数的配置方法。
二实验要求1.设备要求:计算机至少1台(装有Windows 2000/XP/2003操作系统、装有网卡),二层交换机1台,直连UTP线1根,Console电缆1根。
2.每组2人,合作完成。
三实验预备知识交换机的基本操作主要包括硬件连接和基本参数的配置。
从外形上看,交换机与集线器非常相似,但二者在工作原理上完全不同:前者工作在物理层、各端口共享总线,在物理拓扑上看似星型网,但在工作原理上属于总线型;而后者却需要相关配置才能发挥应有的作用,例如地址学习、数据帧过滤和按生成树传递。
图5.1 交换机外观图5.2 一种控制端口外观对以太网交换机进行配置可以有多种方法,其中使用终端控制台查看和修改交换机的配置是最基本、最常用的一种。
随以太网交换机的不同,配置方法和配置命令也有很大差异。
Cisco2924以太网交换机带有24个端口,并具有10/100M自适应功能。
下面,已Cisco2924以太网交换机组成的如图5.3所示的局域网为例,介绍其简单的配置方法。
1. 实验拓扑PC Switch_ACom1 Console图5.3 PC机与交换机的控制台端口相连终端控制台的连接和配置通过控制台查看和修改交换机的配置需要一台PC机或一台简易的终端,但是该PC机或简易终端应该能够仿真VT100终端。
实际上,Windows 2000 Server 中的“超级终端”软件可以对VT100终端进行仿真。
PC机或终端需要一条电缆进行连接,它一段与交换机的控制台端口相连,如图5.1所示,另一端与PC机或终端的串行口(DB9口或DB25口)相连。
2.超级终端设置利用PC机作为控制终端使用,在连接完毕后可以通过以下步骤进行设置:①启动Windows XP操作系统,通过“开始”→“程序”→“附件”→“通信”→“超级终端”进入超级终端程序;②选择交换机使用的串行口COM1,并将该串口设置为9600波特、8个数据位、1个停止位、无奇偶校验和硬件流量控制,如图5.4所示;图5.4 设置超级终端的串行口③登录交换机:单击“回车”键,系统将收到交换机的回送信息,进入交换机的用户模式,如图5.5所示。
第一题.目的:验证内部类对象总与创建它的外部类对象关联 (1)第二题.定义一个Father类 (1)第三题.修改BankAccount (2)第四题.拷贝自身重要数据 (3)第五题.连锁店问题 (4)第六题.修改外围类对象数据,影响内部类行为 (4)第七题.迭代器的局部类实现 (6)第一题参考答案 (7)第二题参考答案 (7)第三题参考答案 (8)第四题参考答案 (10)第五题参考答案 (10)第六题参考答案 (11)第七题参考答案 (11)实验五. 内部类,局部类,匿名类背景知识内部类内部类对象的创建局部类匿名类实验目的1.掌握内部类,局部类,匿名类概念2.学习定义内部类,局部类,匿名类。
3.学习创建内部类,局部类,匿名类对象。
实验内容和步骤第一题.目的:验证内部类对象总与创建它的外部类对象关联1.定义一个类A,它有一个内部类B.2.定义B的方法g,它访问A的数据成员。
3.定义A的方法f,它访问B的数据成员,注意必须指明那个内部类对象的数据成员。
4.确保类A有方法修改A的域。
5.确保类B有方法print,输出A的域。
6.定义类C,它只有一个main方法。
在main方法体内创建A类对象a。
a作为外围对象创建B类对象b;7.验证:每个内部类对象,都有一个相关联的外部类对象,就是创建它的外部类对象。
方法:首先对象b调用print,打印a的域,然后修改a的域,最后b再次调用print,打印a的域,打印结果应该与对a的修改一致,从而说明b与a相关联。
第二题.定义一个Father类它包括:1.内部类Son,表示儿子的类,包括a)数据域phone,表示儿子电话号。
b)内部类构造方法c)CallFather方法,给父亲打电话,打印“xxx给yyy打电话”即可,xxx是儿子电话号,yyy是父亲电话号。
2.数据域phone,表示父亲电话号。
3.Son数组,保存儿子。
4.count,保存儿子个数5.构造函数。
6.给儿子打电话的方法CallSon,打印“给xxx打电话”即可,xxx是儿子电话号。
5 . (广义积分)计算广|sec3xdx一实验目的:1加深理解积分理论中分割、近似、求和、取极限的思想方法;2 了解定积分近似计算的矩形法、梯形法与抛物线法;3会用MATLAB语言编写求定积分近似值的程序,会用MALAB中的命令求定积分。
二实验准备素材见附件。
三实验内容1.(不定积分)用int计算下列不定积分,并用diff验证「p dx ( dx rJxsin/dx J 仃忘J 771 Jarcsinxdx2.(定积分)用trapz,int计算下列定积分(里卜Fx『e* sin(2x)dx dx3.(椭圆的周长)用定积分的方法计算椭圆9 4 的周长jj(l + 兀 + y)dxdy4.(二重积分)计算积分%2+/-2^ syms x;g 1 =int(x. *sin(x). *sin(x))gl = x*(-l/2*cos(x)*sin(x)+l/2*x)+l/4*sin(x)A2-l/4*x A2 clear;syms x;dl=diff(x*(-l/2*cos(x)*sin(x)+l/2*x)+l/4*sin(x)A2-l/4*x A2)syms x;eg2)必g2=int(l/(l +cos(x)))g2 =tan(l/2*x)clear;syms x;d2=diff(tan( l/2*x))syms x;g3=int( l/(exp(x)+1))g3 =log(exp(x))-log(exp(x)+1)clear;syms x;d3=diff(exp(x))-log(exp(x)+l))syms x;g4=int(finverse(sin(x)))g4 =x*asin(x)+(l -x A2)A(l/2)clear;syms x;d4=diff(x*asin(x)+( 1 -x A2)A(l/2))syms x;g5=int(sec(x).A3)g5 =l/2/cos(x)A2*sin(x)+l/2*log(sec(x)+tan(x)) clear;syms x;d5=diff(l/2/cos(x)A2*sin(x)+l/2*log(sec(x)+tan(x))) 7.2x=10e-100:0.001:l;y=sin(x)./x;trapz(x,y)clear all;syms x;int('sin(x)/x',x,O,l) x=0:0.001:l;y=x.A x;trapz(x,y)clear all;syms x;syms esp;x 1 =log(esp) ;x2=log(l);int('exp(x);x,x 1 ,x2)注释:根据公式x.A x=exp(x*log(x)) clear all;syms x;x 1 =log(l Oe-100) ;x2=log(l);int('exp(x);x,x 1 ,x2) x=0:0.001:2*pi; y=exp(x). *sin(2 *x); trapz(x,y) clear all;syms x; int('exp(x)*sin(2*x)',x,0,2*pi) x=0:0.001:l;y=exp(-x.*x);trapz(x,y) clear all;syms x;int('exp(-x*x)',x,0,1)7.3syms x;int('(4*sqrt((36・4*x*x)/9));x,0,3)7.4clear;syms x y;» int(int(l +x+y,y, 1 -sqrt(l -x.A2),l +sqrt(l-x.A2)),x,-1,1)7.5mt('exp(-x*x)/(l+x*x*x*x)','x',-inf,inf)int('tan(x)/sqrt(x)','x,,0,1)int(,sin(x)/sqrt(l-x*x),;x,,0,1)。
--创建学生视图if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_stu]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[v_stu]gocreate view v_stuasselect sid, sname, ssexy, sbdate, Datediff(year, sbdate, getdate()) as sage, stele,ugrade.gid, gname, gyear,udept.did, dname, daddr, dtele, demail,uteacher.tid, tname, tsexy, tbdate, tfield, tprof, tele, qq, email, msnfrom ustudent, ugrade, udept, uteacherwhere ustudent.gid=ugrade.gid and ugrade.did=udept.did and ugrade.tid=uteacher.tid--创建选修课程视图if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_sc]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[v_sc]gocreate view v_scasselect ustudent.sname, usc.*, cname, credit, pcid, chour, cattr, cnumfrom ustudent, usc, ucoursewhere ustudent.sid=usc.sid and usc.cid=ucourse.cid--1、显示所有学生的详细信息,包括学号、姓名、性别、年龄、班级名称,入学年份select sid, sname, ssexy, sage, gname, gyearfrom v_stu--2、显示信息科学与技术系同学的名单,包括学号、姓名、性别、年龄、班级名称、入学年份select sid, sname, ssexy, sage, gname, gyearfrom v_stuwhere dname='信息科学与技术系'--3、显示选修了“数据库”的所有同学的学号、姓名select sid, snamefrom v_scwhere cname='数据库'--4、显示白云同学的班主任老师的姓名、联系电话select tname, telefrom v_stuwhere sname='白云'--5、显示白云同学所在院系的名称、办公地点与联系电话select dname, daddr, dtelefrom v_stuwhere sname='白云'--6、统计计算机科学与技术系每个同学已经修完的学分,显示学号、姓名、学分总数select v_stu.sid, v_stu.sname, sum(v_sc.credit)from v_stu, v_scwhere v_stu.sid=v_sc.sid and v_stu.dname='计算机科学与技术系'group by v_stu.sid, v_stu.sname--7、显示李山同学已修课程及期末成绩select sid, sname, cname, score2from v_scwhere sname='李山'--8、显示计算机科学与技术系、信息科学与技术系的班级名称、入学年份、班导名称与联系电话select distinct gname, gyear, tname, telefrom v_stuwhere dname in ('计算机科学与技术系', '信息科学与技术系')--9、显示2006年入学的同学的学号、姓名、班级名称select sid, sname, gnamefrom v_stuwhere gyear='2006'--10、显示已修数据库的同学的学号、姓名及期末成绩select sid, sname, score2from v_scwhere cname='数据库'--11、显示平均成绩75分以上的课程名称与平均成绩select cname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_scgroup by cid, cnamehaving avg(score2)>75--12、显示平均成绩80分以上同学的学号、姓名与平均成绩select sid, sname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_scgroup by sid, snamehaving avg(score2)>80--13、显示一周课时数为6节及以上的教师的姓名与研究领域select tname, tfieldfrom uteacherwhere tid in (select tidfrom ujobtablegroup by tidhaving sum(len(timeseg))>=6)--14、按照班级统计期末平均成绩,显示班级名称与平均成绩select gname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_stu, uscwhere v_stu.sid=usc.sidgroup by gid, gname--15、按照学期统计计算机科学与技术系的期末平均成绩select term, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_stu, uscwhere v_stu.sid=usc.sid and v_stu.dname='计算机科学与技术系' group by term--16、统计每个院系一周的课时数,显示院系名称与课时数select dname, sum(len(timeseg))from ujobtable, uteacher, udeptwhere ujobtable.tid=uteacher.tid and uteacher.did=udept.didgroup by udept.dname--17、显示没有选修任何课程的学生学号、姓名、班级名称select sid, sname, gnamefrom v_stuwhere sid not in (select sid from usc)--18、显示上过李飞老师的课的学生的学号、姓名与联系电话select sid, sname, stelefrom ustudentwhere gid in (select gidfrom ujobtable, uteacherwhere ujobtable.tid=uteacher.tid and uteacher.tname='李飞')--19、显示一周6节课及以上的课程名称、学分select cname, creditfrom ucoursewhere cid in (select cidfrom ujobtablegroup by cidhaving sum(len(timeseg))>=6)--20、显示一周6节课及以上班级名称select gnamefrom ugradewhere gid in (select gidfrom ujobtablegroup by gidhaving sum(len(timeseg))>=6)--21、查询周四上午第3节有课的同学的学号、姓名与班级名称select sid, sname, gnamefrom v_stu, ujobtablewhere v_stu.gid=ujobtable.gid and week='4' and timeseg like '%3%'--22、显示没有不及格课程的班级的名称select distinct gnamefrom ugrade, ustudent, uscwhere ugrade.gid=ustudent.gidand ustudent.sid=usc.sidand ustudent.gid not in (select distinct gidfrom ustudent, uscwhere ustudent.sid=usc.sid and usc.score2<60)--23、显示已修数据库的同学的信息,包括学号、姓名、班级名称select v_stu.sid, v_stu.sname, gnamefrom v_stu, v_scwhere v_stu.sid=v_sc.sid and v_ame='数据库'--24、显示不及格1门以上的同学学号、姓名、门数select sid, sname, count(cid)from v_scwhere score2<60group by sid, snamehaving count(cid)>1--25、统计每个班级的最高分,显示班级名称、成绩select gname, max(score2) as '最高分'from v_sc, ustudent, ugradewhere v_sc.sid=ustudent.sid and ustudent.gid=ugrade.gidgroup by ugrade.gid, gname--26、显示一周8节课及以上的学生的名单,显示学号、姓名、班级select distinct sid, sname, gnamefrom v_stu, ujobtablewhere v_stu.gid in (select gidfrom ujobtablegroup by gidhaving sum(len(timeseg))>8)--27、显示计算机科学与技术1班一周上课的时间、地点,课程名称select week, timeseg, room, cnamefrom ujobtable, ugrade, ucoursewhere ujobtable.gid=ugrade.gid and ujobtable.cid=ucourse.cid and ugrade.gname='计算机科学与技术1班'--28、统计教授上课的课时数,显示姓名、课时数select tname, sum(len(timeseg))from ujobtable, uteacherwhere ujobtable.tid=uteacher.tid and uteacher.tprof='教授'group by uteacher.tid, uteacher.tname--29、显示没有班导师的班级名称、院系名称select gname, dnamefrom ugrade, udeptwhere ugrade.did=udept.did and ugrade.tid is null--30、显示指导两个班级以上的班导的姓名、所指导的班级名称select tname, gnamefrom uteacher, ugradewhere uteacher.tid=ugrade.tidand uteacher.tid in (select uteacher.tidfrom uteacher, ugradewhere uteacher.tid=ugrade.tidgroup by uteacher.tidhaving count(ugrade.gid)>1)。
上机实验五循环结构程序设计(一)一.目的要求1.掌握while、do-while、for语句的语法规则、执行流程。
2.比较3种循环语句的异同。
3.按题目要求,完成代码。
二.实验内容思考问题:3种循环的异同点?能否相互转换?for循环控制单元的表达式与while循环中表达式是如何对应的?第1题、分别用while、do-while、for语句编程,求数列前20项之和:2/1,3/2,5/3,8/5,13/8······算法提示:1)定义实变量sum、term、a、b、c,整变量i2)初始化:sum=0,分子a=2,分母b=13)初始化:i(计数器)=14)计算第i项term =a/b5)累加sum=sum+term6)计算c=a+b,更新b= a,更新a=c7)计数器加1,i++8)重复4、5、6、7,直到i>209)输出2位精度的结果编写程序:方法一,用while语句:#include<stdio.h>void main(){float s=0, a=2,b=1,c;int i=1;while(i<=20){s=s+a/b;c=a+b;b=a;a=c;i++;}printf(“s=%.2f”,s);}方法二,用do-while语句:#include<stdio.h>void main(){float s=0,a=2,b=1,c;int i=1;do {s=s+a/b;c=a+b;b=a;a=c;i++;} while(i<=20);printf(“s=%.2f”,s);}方法三,用for语句:#include<stdio.h>void main(){float s=0,a=2,b=1,c;int i;for(i=1;i<=20;i++){s=s+a/b;c=a+b;b=a;a=c;}printf(“s=%.2f”,s);}第2题、计算多项式的值:s=1!+2!+3!+4!+ (20)算法提示:该多项式迭代公式为:term=term*i,sum=sum+term注意:哪些变量需要初始化?变量应采用什么类型?编写程序:#include<stdio.h>void main(){int i;double s=0,fact=1;for(i=1;i<=20;i++){fact*=i;s=s+fact;}printf(“s=%f”,s);}把每一次迭代结果输出,程序应做怎样的修改?第3题、输入x和n,计算并输出下式的值:s=x/1+x/3+……+x/n参考答案:#include <stdio.h>int main(){int n,i;float x,s=0;printf("请输入x,n,以,分隔");scanf("%f,%d",&x,&n);for(i=1;i<=n;i+=2){s+=(x/i);}printf("\ns=%f",s);}第4题、输入一批正整数,求出其中的偶数之和。
实验五字符数组(参考答案)
1、设计程序sy5-1.c,编写程序实现对4个字符串的升序排序。
算法分析:
4个字符串的升序排序,和4个整数的排序一样,可以用冒泡法,唯一不同的是在两两比较时要用字符串的比较函数,而在条件满足时,交换的三条赋值语句,同样需要用字符串的赋值函数。
参考答案:
# include <stdio.h>
# include <string.h>
void main()
{
char str[20],s[4][20];
int i,j;
printf("Input 4 strings:\n");
for(i=0;i<4;i++)//输入字符串
gets(s[i]); //gets函数的参数s[i],表示第i行的首地址,即给第i行赋值for(j=0;j<3;j++) //用冒泡法处理字符串的排序
for(i=0;i<3-j;i++)
if(strcmp(s[i],s[i+1])>0) //strcmp字符串的比较函数
{ strcpy(str,s[i]); //strcmp字符串的比较函数
strcpy(s[i],s[i+1]);
strcpy(s[i+1],str);
}
printf("The sorted string:\n");
for(i=0;i<4;i++)
printf("%s\n",s[i]); //可以用puts(s[i])代替
}
运行结果:
2、设计程序sy5-2.c,写一程序,要求将字符串a的第n个字符之后的内容由字符串b替代,a,b,n由运行时输入。
算法分析:
要将字符串a的第n个字符之后的内容由字符串b替代,这时把字符串看成数组来处理,a的第n个
字符之后即字符数组下标为i=n开始用字符数组b[0],b[1]------b[j]---来替代,直到b数组的‘\0’结束,注意这个循环没有写入b数组的’\0’,所以赋值结束后,还得给字符数组a[i]赋值为’\0’。
参考答案:
# include <stdio.h>
# include <string.h>
void main()
{
char a[100],b[100];
int n,i,j;
printf("Input string a:");
gets(a);
printf("Input string b:");
gets(b);
printf("Input n:");
scanf("%d",&n);
for(i=n,j=0;b[j]!='\0';i++,j++) //a的第n个字符之后的内容由字符串b替代
a[i]=b[j];
a[i]='\0'; //给新的字符数组a末尾加上结束标志’\0’
printf("The result is :%s\n",a);
}
运行结果:
3、设计程序sy5-3.c,写一程序,输入一个字符串,要求将该字符串所有奇数位置上的字母转换为大写字母(若该位置上不是小写字母则不转换),结果输出到显示器。
算法分析:
把字符数组的奇数位置即从小标为i=0,2,4,6---直到s[i]=’\0’结束,逐一去判断当前位置的s[i]是否是小写字母,如果是则转换。
参考答案:
# include <stdio.h>
# include <string.h>
void main()
{
char s[100];
int i;
printf("Input a string:");
gets(s);
for(i=0;s[i]!='\0';i+=2) //i=i+2—步长,即所有的奇数位置
if(s[i]>='a'&&s[i]<='z') //判断s[i]是否是小写字母,如果是转换为大写字母
s[i]-=32;
printf("The result is:%s\n",s);
}
运行结果:
4、设计程序sy5-4.c,写一程序,要求将一个数字字符串转换为一个整数。
例如,有字符串“-1234567”程序将它转换为整数-1234567。
算法分析:
输入数字字符串后,首先要分析整数还是负数,然后逐一去遍历字符串的每一位数字字符并转换为数字并进行累加。
参考答案:
# include <stdio.h>
# include <string.h>
void main()
{
char s[100];
int i=0;
long n=0; //输入的数值字符串长度未限制,所以n定义为长整数
printf("请输入数值字符串付给字符数组s:");
gets(s);
if(s[0]=='-') //如果条件成立,有效数值小标就从1开始
i=1;
for( ; s[i]!='\0';i++) //将字符串中的所有数字字符转换为整数
n=n*10+(s[i]-'0'); //n为绝对值
if(s[0]=='-') //如果是负数,把n还原
n=-n;
printf("n=%ld\n",n);
}
运行结果:
5、设计程序sy5-5.c,有3个字符串,要求找出其中的最小者。
算法分析:
3个字符串的求最值算法和求3个整数的最小值的方法相同,先求前两个数的最小值,再将最小值和第三个数比较。
不同的是比较和赋值时一定要用字符串的比较和赋值函数。
参考答案:
#include <stdio.h>
#include <string.h>
void main()
{
char string[20],str[3][20];
int i;
for(i=0;i<3;i++) //等待从键盘接收3个字符串
gets(str[i]); //str[i]是一维字符数组名
if(strcmp(str[0],str[1])<0) //求前两个字符串的最小值存在数组string中strcpy(string,str[0]);
else
strcpy(string,str[1]);
if(strcmp(str[2],string)<0) //再将前两个的最小值和第三个字符串比较strcpy(string,str[2]);
printf("最小字符串:%s",string);
printf("\n");
}
运行结果:。