大学生C语言程序设计(第四版 谭洪强)实验5答案

大学生C语言程序设计(第四版 谭洪强)实验5答案
大学生C语言程序设计(第四版 谭洪强)实验5答案

实验四参考答案(参考答案)

(1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。

算法分析:

对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i;

参考答案:

#include

int main()

{

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int i,j,sum=0;

for(i=0;i<3;i++)

sum=sum+a[i][i]+a[i][2-i]; //a[i][i]当前行的主对角线元素

//a[i][2-i]当前行的反对角线元素printf("矩阵的正、反对角线元素之和为:%d\n",sum);

return 0;

}

运行结果:

(2) 设计程序sy5-2.c,找出一个3×4的矩阵中的最小值及其位置。

算法分析:

首先把二维数组中的第一个数即a[0][0]看成最小值,然后逐行逐列的去遍历每个元素,逐一判断每一个元素是否比最小值还好小,如果是,就改写最小值,并记录他的下标。

参考答案:

#include

#include

int main()

{

int a[3][4]={{10,21,41,5},{12,15,46,35},{40,21,26,30}};

int i,j,row,colum,min;

printf("数组a:\n");

for(i=0;i<3;i++)

{ for(j=0;j<4;j++)

printf("%5d",a[i][j]);

printf("\n");

}

min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数

for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j]

for(j=0;j<4;j++)

if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小

{min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum);

return 0;

}

运行结果:

(3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为

| 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 |

| 2 3 8 | | 6 9 8 |

| 4 5 6 | | 12 15 18 |

算法分析:

主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。

参考答案:

#include

#include

int main()

{

int a[3][3];

int i,j,n;

printf("原来a的值:");

for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出

{ for(j=0;j<3;j++)

{a[i][j]=rand()%20; //rand()参看教材385页

//rand()%20 产生一个20以内的整数

printf("%5d",a[i][j]); } printf("\n"); } printf("请输入n :"); scanf("%d",&n); for(i=0;i<3;i++) //i 表示每一行 for(j=0;j<=i;j++) //j 从0到i ,即每行的对角线及前面的数的列下标 a[i][j]=a[i][j]*n; printf("\n 数组左下三角元素乘以n 后值为:"); for(i=0;i<3;i++) {for(j=0;j<=i;j++) printf("%5d",a[i][j]); printf("\n"); } return 0; }

运行结果:

(4) 设计程序sy5-4.c ,输入一个整数m (2≤m ≤9〕,在m 行m 列的二维数组中存放如下所示规律的数据。例如,若输入2,则输出:???

? ??4221,若输入4,则输出: ??

?

??

?

?

?

?1612841296386424321

算法分析:

分析:m 的值是不定的,所以可以申明一个二维数组int a[10][10],当m=2时,只用前两行两列,当m=4时,就只用前四行四列;元素a[i][j]的值和他的行列下标可找到规律如下:每行的第0列元素a[i][0]=i+1;除第0列元素其它元素a[i][j]=a[i][0]*(j+1)。

参考答案:

#include

{

int a[10][10],i,j,m;

printf("Input m:");

scanf("%d",&m);

for(i=0;i

a[i][0]=i+1;

for(i=0;i

for(j=1;j

a[i][j]=a[i][0]*(j+1);

for(i=0;i

{ for(j=0;j

printf("%5d",a[i][j]);

printf("\n");

}

}

运行结果:

(5) 设计程序sy5-5.c,将3×3矩阵中元素的值按列右移1个位置,右边被移出矩阵的元素绕回左边。例如,有下列矩阵

1 2 3

4 5 6

7 8 9

计算结果为

3 1 2

6 4 5

9 7 8

算法分析:

二维数组的移动,类似于一维数组的元素移动;只是在一维数组移动的外面加上外循环。即:对每一行元素(i行),首先把最后一列即a[i][2]用中间变量t保存;然后就从第1列到第0列,每个元素向后移动一列(a[i][j]=a[i][j-1]);最后再给a[i][0]赋值为t(以前的a[i][2])。

#include

#include

int main()

{

int a[3][3];

int i,j,t;

printf("原来数组a的值:\n");

for(i=0;i<3;i++) //生成数组元素,并按矩阵形式输出

{ for(j=0;j<3;j++)

{a[i][j]=rand()%20; //rand()参看教材385页

//rand()%20 产生一个20以内的整数printf("%5d",a[i][j]);

}

printf("\n");

}

for(i=0;i<3;i++) //i--每一行

{ t=a[i][2]; //每一行的最后列元素用t保存

for(j=2;j>0;j--) //从最后一列到第1列逐次向后移动一列

a[i][j]=a[i][j-1];

a[i][0]=t; //给第一列赋值t,即以前行的最后一列}

printf("矩阵变换后:\n");

for(i=0;i<3;i++)

{ for(j=0;j<3;j++)

printf("%5d",a[i][j]);

printf("\n");

}

return 0;

}

运行结果:

5、设计程序sy4-5.c,从键盘输入m的值(2<=m<=9),并用双重循环给数组赋值,在m行m 列的二维数组中存放如下所示的数据,并将结果输出在显示上。

例如:输入3 输入5

则输出: 则输出:

1 2 3 1 2 3 4 5

2 4 6 2 4 6 8 10

3 6 9 3 6 9 12 15

4 8 12 16 20

5 10 15 20 25

算法分析:

分析:m的值是不定的,所以可以申明一个二维数组int a[10][10],当m=3时,只用前三行三列,当m=5时,就只用前五行五列;元素a[i][j]的值和他的行列下标可找到规律如下:每行的第0列元素a[i][0]=i+1;除第0列元素其它元素a[i][j]=a[i][0]*(j+1)。

参考答案:

#include

void main()

{

int a[10][10],i,j,m;

printf("Input m:");

scanf("%d",&m);

for(i=0;i

a[i][0]=i+1;

for(i=0;i

for(j=1;j

a[i][j]=a[i][0]*(j+1);

for(i=0;i

{ for(j=0;j

printf("%5d",a[i][j]);

printf("\n");

}

}

运行结果:

MATLAB课后实验答案

%实验一MATLAB运算基础 %第一题%(1) z1=2*sin(85*pi/180)/(1+exp(2)) %(2) x=[2,1+2i;-0.45,5]; z2=0.5*log(x+sqrt(1+x.^2)) %(3) a=-3.0:0.1:3.0; z3=(exp(0.3*a)-exp(-0.3*a))/2.* sin(a+0.3)+log((0.3+a)/2) %(4) t=0:0.5:2.5; z4=t.^2.*(t>=0&t<1)+(t.^2-1).*( t>=1&t<2)+(t.^2-2*t+1).*(t>=2&t <3)%第二题 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(size(A)) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2]%第三题 A=[1 2 3 4 5;6 7 8 9 10;11 12 13 14 15;16 17 18 19 20;21 22 23 24 25] B=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11] C=A*B F=size(C) D=C(F(1)-2:F(1),F(2)-1:F(2)) whos%第四题 %(1): A=100:999; B=rem(A,21); C=length(find(B==0)) %(2): A='lsdhKSDLKklsdkl'; k=find(A>='A'&A<='Z'); A(k)=[] %实验二MATLAB矩阵分析与处理 %第一题 E=eye(3); R=rand(3,2); O=zeros(2,3); S=diag([2,3]);%判断AB是否相等 A=[E,R;O,S];A^2 B=[E,(R+R*S);O,S^2] %第二题 H=hilb(5) P=pascal(5) Hh=det(H) Hp=det(P) Th=cond(H) Tp=cond(P) %第三题: A=fix(10*rand(5)) H=det(A)Trace=trace(A) Rank=rank(A)Norm=norm(A) %第四题: A=[-29,6,18;20,5,12;-8,8,5] [V,D]=eig(A)%数学意义略 %第五题方法一: %(1): A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4, 1/5,1/6]; b=[0.95,0.67,0.52]'; x=inv(A)*b %(2): B=[0.95,0.67,0.53]'; x=inv(A)*B %(3): cond(A) %第五题方法二: A=hilb(4) A(:,1)=[] A(4,:)=[] B=[0.95,0.67,0.52]'; X=inv(A)*B B1=[0.95,0.67,0.53]'; X1=inv(A)*B1 N=cond(B) N1=cond(B1) Na=cond(A) %矩阵A为病态矩阵 %第六题 A=[1,4,9;16,25,36;49,64,81] B=sqrtm(A) C=sqrt(A) %sqrtm函数是以矩阵为单位进行计算,sqrt函数是以矩阵中的元素进行计算 %实验三选择程序结构设计 %第一题程序一 x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5. 0]; y=[]; %建立存放所有y值的矩阵

C语言实验报告参考答案(原)

C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述 四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include<> main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.编写程序: (1) a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 (2)a=160,b=46,c=18,d=170, 编写求(a+b)/(b-c)*(c-d)的程序。 答案: (1) #include<> main() { int a,b,c,x,y;

a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } (2) #include<> main() { int a,b,c,d; float x; a=160; b=46; c=18; d=170; x=(a+b)/(b-c)*(c-d);

printf("(a+b)/(b-c)*(c-d)=%f\n",x); } 3. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将0赋给c。(提示:用条件运算符) 答案: #include<> main() { int a,b,c; a=0; b=-10; c= (a>b) b:a; printf("c = %d\n",c); } 五、调试和测试结果 1.编译、连接无错,运行后屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 2、(1) 编译、连接无错,运行后屏幕上显示以下结果: a/b的商=7 a/c的商=3

实验5(答案)

实验五 连续系统分析 一、实验目的 1.深刻理解连续时间系统的系统函数在分析连续系统的时域特性、频域特性及稳定性中的重要作用及意义,掌握根据系统函数的零极点设计简单的滤波器的方法。 2.掌握利用MATLAB 分析连续系统的时域响应、频响特性和零极点的基本方法。 二、实验原理及内容 MATLAB 提供了许多可用于分析线性时不变连续系统的函数,主要包含有系统函数、系统时域响应、系统频域响应等分析函数。 1. 连续系统的时域响应 连续时间LTI 系统可用如下的线性常系数微分方程来描述: ) ()( )()(01)1(1)(t y a t y a t y a t y a n n n n ++++-- )()( )()(01)1(1)(t x b t x b t x b t x b m m m m ++++=-- 已知输入信号x (t )以及系统初始状态)0(,),0('),0()1(----n y y y ,就可以求出系统的响应。 MATLAB 提供了微分方程的数值计算的函数,可以计算上述n 阶微分方程描述的连续系统的响应,包括系统的单位冲激响应、单位阶跃响应、零输入响应、零状态响应和完全响应。 在调用MATLAB 函数时,需要利用连续系统对应的系数函数。对微分方程进行Laplace 变换即可得系统函数: 1110111)()()(a s a s a s a b s b s b s b s X s Y s H n n n n m m m m ++++++++==---- 在MATLAB 中可使用向量和向量分别保存分母多项式和分子多项式的系数: ],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -= 这些系数均按s 的降幂直至s 0排列。 ● 连续系统的单位冲激响应h (t )的计算 impulse(sys)计算并画出系统的冲激响应。 参数:sys 可由函数tf(b,a)获得。其中: ],,,,[011a a a a a n n -= ],,,,[011b b b b b m m -= h=impulse(sys, t) 计算出系统在向量t 定义的区间上的冲激响应, 向 量h 保存对应区间的系统冲激响应的输出值。 ● 连续系统的单位阶跃响应g (t )的计算 step(sys)计算并画出系统的阶跃响应。

实验五数值积分参考答案

一 实验目的: 1 加深理解积分理论中分割、近似、求和、取极限的思想方法; 2 了解定积分近似计算的矩形法、梯形法与抛物线法; 3 会用MATLAB 语言编写求定积分近似值的程序,会用MALAB 中的命令求定积分。 二 实验准备素材 见附件。 三 实验内容 1.(不定积分)用int 计算下列不定积分,并用diff 验证 ?dx x x 2 sin ,?+x dx cos 1,?+1x e dx ,?xdx arcsin ,?xdx 3sec 2.(定积分)用trapz,int 计算下列定积分 ?10sin dx x x ,?10dx x x ,?π20)2sin(dx x e x ,?-102dx e x 3.(椭圆的周长) 用定积分的方法计算椭圆1492 2=+y x 的周长 4.(二重积分)计算积分??≤+++y y x dxdy y x 222)1( 5. (广义积分)计算广义积分 ?∞∞-+-dx x x 421)exp(,?10)tan(dx x x ,?-1021sin dx x x 7.1 syms x; g1=int(x.*sin(x).*sin(x)) g1 = x*(-1/2*cos(x)*sin(x)+1/2*x)+1/4*sin(x)^2-1/4*x^2

clear;syms x; d1=diff(x*(-1/2*cos(x)*sin(x)+1/2*x)+1/4*sin(x)^2-1/4*x^2) syms x; g2=int(1/(1+cos(x))) g2 = tan(1/2*x) clear;syms x; d2=diff(tan(1/2*x)) syms x; g3=int(1/(exp(x)+1)) g3 = log(exp(x))-log(exp(x)+1) clear;syms x; d3=diff(exp(x))-log(exp(x)+1)) syms x; g4=int(finverse(sin(x))) g4 = x*asin(x)+(1-x^2)^(1/2) clear;syms x; d4=diff(x*asin(x)+(1-x^2)^(1/2)) syms x; g5=int(sec(x).^3) g5 = 1/2/cos(x)^2*sin(x)+1/2*log(sec(x)+tan(x)) clear;syms x; d5=diff(1/2/cos(x)^2*sin(x)+1/2*log(sec(x)+tan(x))) 7.2 x=10e-100:0.001:1; y=sin(x)./x; trapz(x,y) clear all;syms x;

实验报告答案

实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 二. 实验内容和步骤 首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。 (2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。 (3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。 (4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。 (5)、查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。 (6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条有 (有,无)符号载入字节 (字节,半字,字)指令。 3)单步执行一条指令(F7)。 4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。 5)下一条指令地址为0x00000008,是一条有 (有,无)符号载入字 (字节,半字,字)指令。 6)单步执行1条指令。 7)查看R1的值,[R1]=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条无 (有,无)符号载入字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,[R1]= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存字 (字节,半字,字)指令。 13)单步执行一条指令。

实验五 连接查询参考答案

--创建学生视图 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] go create view v_stu as select 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, msn from ustudent, ugrade, udept, uteacher where 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] go create view v_sc as select ustudent.sname, usc.*, cname, credit, pcid, chour, cattr, cnum from ustudent, usc, ucourse where ustudent.sid=usc.sid and usc.cid=ucourse.cid --1、显示所有学生的详细信息,包括学号、姓名、性别、年龄、班级名称,入学年份select sid, sname, ssexy, sage, gname, gyear from v_stu --2、显示信息科学与技术系同学的名单,包括学号、姓名、性别、年龄、班级名称、入学年份 select sid, sname, ssexy, sage, gname, gyear from v_stu where dname='信息科学与技术系' --3、显示选修了“数据库”的所有同学的学号、姓名 select sid, sname from v_sc where cname='数据库' --4、显示白云同学的班主任老师的姓名、联系电话 select tname, tele from v_stu

大学物理实验报告答案大全(实验数据)

U 2 I 2 大学物理实验报告答案大全(实验数据及思考题答案全包括) 伏安法测电阻 实验目的 (1) 利用伏安法测电阻。 (2) 验证欧姆定律。 (3) 学会间接测量量不确定度的计算;进一步掌握有效数字的概念。 实验方法原理 根据欧姆定律, R = U ,如测得 U 和 I 则可计算出 R 。值得注意的是,本实验待测电阻有两只, 一个阻值相对较大,一个较小,因此测量时必须采用安培表内接和外接两个方式,以减小测量误差。 实验装置 待测电阻两只,0~5mA 电流表 1 只,0-5V 电压表 1 只,0~50mA 电流表 1 只,0~10V 电压表一 只,滑线变阻器 1 只,DF1730SB3A 稳压源 1 台。 实验步骤 本实验为简单设计性实验,实验线路、数据记录表格和具体实验步骤应由学生自行设计。必要时,可提示学 生参照第 2 章中的第 2.4 一节的有关内容。分压电路是必须要使用的,并作具体提示。 (1) 根据相应的电路图对电阻进行测量,记录 U 值和 I 值。对每一个电阻测量 3 次。 (2) 计算各次测量结果。如多次测量值相差不大,可取其平均值作为测量结果。 (3) 如果同一电阻多次测量结果相差很大,应分析原因并重新测量。 数据处理 (1) 由 U = U max ? 1.5% ,得到 U 1 = 0.15V , U 2 = 0.075V ; (2) 由 I = I max ? 1.5% ,得到 I 1 = 0.075mA , I 2 = 0.75mA ; (3) 再由 u R = R ( 3V ) + ( 3I ) ,求得 u R 1 = 9 ? 101 &, u R 2 = 1& ; (4) 结果表示 R 1 = (2.92 ± 0.09) ?10 3 &, R 2 = (44 ± 1)& 光栅衍射 实验目的 (1) 了解分光计的原理和构造。 (2) 学会分光计的调节和使用方法。 (3) 观测汞灯在可见光范围内几条光谱线的波长 实验方法原理

2010C语言实验报告参考答案

2010C语言实验报告参考答案

长沙理工大学2010C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: The dress is long The shoes are big The trousers are black 答案: #include main() { printf("The dress is long\n"); printf("The shoes are big\n"); printf("The trousers are black\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序: a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { int a,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x); printf("a/c的商=%d\n",y);

x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4. 设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { int a,b,c; a=0; b=-10; c= (a>b) ? b:a;

C实验报告1参考答案范文

《高级语言程序设计》实验报告 班级: 学号: 姓名: 成绩: 实验1熟悉Visual C++6.0环境及运行C 程序 一、实验目的 1.掌握在Visual C++6.0环境下C 程序的建立、编辑、编译和执行过程。 2.掌握C 程序的最基本框架结构,完成简单程序的编制与运行。 3.了解基本输入输出函数scanf()、printf ()的格式及使用方法。 4.掌握发现语法错误、逻辑错误的方法以及排除简单错误的操作技能。 二、实验内容 1.下列程序的功能是:从键盘输入两个数a 和b ,求它们的平方和,并在屏幕上输出。输入该C 程序,编译并运行之,记下屏幕的输出结果,以文件名sy1_1.c 保存。 #include main() { int a,b,sum; /*定义整型变量a 、b 、sum */ printf("Please Input a,b \n "); /*输出提示信息*/ scanf("%d%d",&a,&b); /*从键盘输入两个整数分别赋予a 和b*/ sum=a*a+b*b; /*赋值语句,把a 2+b 2的结果赋给变量sum*/ printf("%d*%d+ %d*%d=%d\n",a,a,b,b,sum); /*输出语句*/ } (1)下列程序的功能为:计算x*y 的值并将结果输出。试纠正程序中存在的错误,以实现其功能。程序以文件名sy1_2.c 保存。 #include main main () { int x=2;y=3;a int x=2;y=3;a ;

A=x*y a =x*y ; print ('a=%d",A); print f ("a=%d",a ); printf("\n"); } (2)下程序的功能为:求两数中的较大数据并输出。纠正程序中存在的错误,以实现其功能。程序以文件名 sy1_3.c 保存。 #include viod main() void main() { int a ,b , max; Scanf(“%d,%d ”,&a,&b); s canf(“%d,%d ”,&a,&b); Max=a; m ax=a; If (max main() { int x,y,total; /* 定义整型变量x,y,total*/ printf("Please input x,y ! "); /* 输出提示信息 */ scanf(“%d%d ”,&x,&y); /* 由键盘输入两个数分别赋予x 和y*/ total=x+y; /* 赋值语句 */ printf("%d + %d=%d\n",x,y,total); /* 输出两个整数的和 */ }

大学化学实验课后思考题参考答案

(2)吸取溶液手拿刻度以上部分,将管的下口插入欲取的溶液中,吸取溶液 至刻度线2cm以上,迅速用食指堵住移液管管口。 (3)调节液面将移液管垂直提离液面,调节溶液的弯月面底部于刻度线相切 (4)放出溶液放液以后使尖嘴口在容器内壁靠约30秒,注意最后一滴的处 理,吹或不吹。 为了使液体自由落下,不停留在管内壁,确保移液准确定量,故放液时要垂直流下液体; 若移液管上没有注明“吹”字,最后一滴不可吹出,因为在设计移液管时,移液管体积没有包括最后一滴溶液的体积。 3)使用容量瓶配制溶液时,应如何进行定量转移? 答:称取一定质量的固体放在小烧杯中,用水溶解,转移过程中,用一根玻璃棒插入容量瓶内,烧杯嘴紧靠玻璃棒,使溶液沿玻璃棒慢慢流入,玻璃棒下端要靠近瓶颈内壁,不要接近瓶口,以免有溶液溢出。 待测液流完后,将烧杯沿玻璃棒向上稍提起,同时直立,是附着在烧杯嘴上的一滴溶液流回烧杯内。残留在烧杯中的少许溶液,可用少量蒸馏水按上述方法洗3-4次,洗涤液转移合并到容量瓶中;定容并摇匀。

实验二酸碱标准溶液的配制与浓度的标定 思考题: 1)配制酸碱标准溶液时,为什么用量筒量取盐酸和用台秤称固体氢氧化钠,而 不用移液管和分析天平?配制的溶液浓度应取几位有效数字?为什么 答:因为浓盐酸容易挥发,氢氧化钠吸收空气中的水分和二氧化碳,准确量取无意义,只能先近似配制溶液浓度,然后用基准物质标定其准确浓度,,所以配制时不需要移液管和分析天平。 因为配制时粗配,配制的溶液浓度应取一位有效数字。 2)标定HCl溶液时,基准物,称0.13g左右,标定NaOH溶液时,称邻苯 二甲酸氢钾0.5g左右,这些称量要求是怎么算出来的?称太多或太少对标定有何影响? 答:根据滴定时所需盐酸或氢氧化钠的体积在20-25ml估算出来的。因为滴定管在读数时会存在一定误差,消耗体积在20-25ml时相对误差较小。称太多,所需盐酸或氢氧化钠可能会超过滴定范围,而且会造成浪费;称太少,相对误差较大,不能满足误差要求。 3)标定用的基准物质应具备哪些条件? 答:基准物质应具备:(1)组成物质应有确定的化学式;(2)纯度要求在99%以上; (3)性质稳定;(4)有较大的摩尔质量;(5)与待标定物质有定量的化学反应。 4)溶解基准物质时加入50ml蒸馏水应使用移液管还是量筒?为什么? 答:用量筒。因为基准物质的质量是一定的,加入50ml蒸馏水只是保证基准物质完全溶解,不影响定量反应有关计算,所以只需用量筒取用就可以了。 5)用邻苯二甲酸氢钾标定氢氧化钠溶液时,为什么选用酚酞指示剂?用甲基橙 可以吗?为什么? 答:邻苯二甲酸氢钾与氢氧化钠反应的产物在水溶液中显微碱性,酚酞的显色范围为pH8-10,可准确地指示终点。 甲基橙的显色范围为pH3.1-4.4,在反应尚未达到终点时,就已经变色,会产生较大的误差,所以不能用甲基橙为指示剂。 6)能否作为标定酸的基准物?为什么? 答:不能,因为草酸的和值接近,不能分步滴定,滴定反应的产物不是唯一的,所以不能作为标定酸的基准为。但能作为氧化还原滴定的基准物。

实验报告5答案

实验报告 课程名称:高级语言程序设计 实验五:循环结构程序设计 班级: 学生姓名: 学号: 专业: 指导教师: 学期:2010-2011学年上学期 云南大学信息学院

一、实验目的 1、理解循环的概念 2、理解并掌握循环结构相关语句的含义、格式及使用 3、学会循环的应用及控制,包括: ① 掌握使用循环输入多个数据的方法 ② 掌握在多个数据中有选择地输出数据的方法 ③ 掌握在多个数据中对某种数据进行计数的方法 ④ 掌握求多个数据中最大值、最小值的方法 ⑤ 掌握使用break 、continue 语句终止循环 4、掌握循环的嵌套 二、知识要点 1、循环变量、循环条件、循环体的概念 2、三种循环语句的一般格式、执行过程 3、理解选择结构与循环结构中“条件表达式”之不同含义 4、二重循环的执行过程 三、实验预习 (要求做实验前完成) 1、循环变量的主要用途是: 2、用循环求多个数的和之前,先要把和的初始值赋为: 3、用循环求多个数的乘积之前,先要把乘积的初始值赋为: 4、字符变量能否作为循环变量? 5、循环过程中,如果循环条件成立,但需要结束循环,可采用什么办法? 6、什么叫循环的嵌套? 四、实验内容 (要求提供:① 算法描述或流程图 ② 源程序 ) 1、编程,利用循环计算以下表达式的值: (5+52)*(4+42)*(3+32)*(2+22)*(1+12)*(1/2+1/3+1/4+1/5)(for 循环) 2、编程,从键盘输入若干个整数,当输入0时,输入停止。统计并输出总共输入了几个 数,以及所有输入数的和。(while 循环) 3、输入一行字符,分别统计其中的英文字母、数字、空格和其他字符的个数。 4、使用二重循环编程,绘制如下图形: *****A ****B ***C **D *E 5. 输入10个整数,输出最大值、最小值和平均分。 6. 编写程序,其功能是:根据以下公式求π的值(要求精度0.0005,即某项小于0.0005时停止迭代)。程序运行后,若输入精度0.0005,则程序应输出为3.14…。 () 1121231234121233535735793521n n π?????????=++++++?????????+………… 五、实验结果(要求写出运行界面及输出的运行结果)

C语言实验参考答案11

C语言实验参考答案 实验一 5、输入并运行自已编写的程序(教材第一章P14 三编程题)。 实验二 1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。 #include main() {float x,y,z,s,t,a; printf(“x,y,z=”); scanf(“%f,%f,%f”,&x,&y,&z); s=x+y+z; t=x*y*z; a=s/3; printf(“s=%f,t=%f,a=%f\n”,s,t,a); } 2、编程。要求用户输入两个整数a、b(分别为20、10),读取用户从键盘输入的值,然后: 1)用整数输出这两个数的和、差; 2)用长整型输出这两个数的积,用float输出商; 3)用整数输出这两个数的余数,用float输出平均值。 #include

{int a,b,he,cha,yu; long ji; float shang,aver; printf(“a,b=”); scanf(“%d,%d”,&a,&b); he=a+b; cha=a-b; ji=(long)a*b; shang=1.0*a/b; yu=a%b; aver=(a+b)/2.0; printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji); printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver); } 3. 再次运行程序第2题中的程序,使整数a、b的值分别为10、20,分析程序运行结果,并给出说明。 程序同上。 实验三 1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。例如,输入整数5,程序运行后输出字符5。 #include

实验报告5

实验5 配置MSTP 组名:C组 组长:程达 组员:陈婉丽张佳莉张文倩张青邢留洋郝亚磊 【实验名称】 配置MSTP 【实验目的】 在接入和分层交换机上配置MSTP并进行验证。 【背景描述】某企业网络管理人员认识到,传统的生成树协议(stp)是基于整个网络产生一个树形拓扑结构,所有的VLANs都共享一个生成树,这种结构不能进行网络流量的负载均衡,使得有些交换设备比较繁忙,而另一些设备又很空闲,为了克服这个问题,他决定采用基于VLAN的多生成树协议MSTP,现要在交换机上做适当配置来完成这一任务。【需求分析】 利用MSTP除了可以实现网络中的冗余链路外,还能还能够在实现网络冗余和 可靠性的同时实现负载均衡(分担)。 【实验拓扑】 【实验设备】 二层交换机2台 三层交换机2台

【预备知识】 交换机基本配置、MSTP技术原理。

【实验原理】 MSTP技术可以认为是STP和RSTP技术升级版本,除了保留低级版本的特性外,MSTP 考虑到网络中VLAN技术的使用,引入了实例和域的概念。实例为VLAN的组合,这样可以针对一个或多个VLAN进行生成树运算,从而不会阻断网络中应保留的链路,同时也可以让各实例的数据经由不同路径得以转发,实现网络中的负载分担。 【实验步骤】 步骤1 在交换机SA上划分VLAN并配置trunk端口 SWA(config)#vl 10 SWA(config-vlan)#vl 20 SWA(config-vlan)#vl 40 SWA(config-vlan)#int f 0/1 SWA(config-if-FastEthernet 0/1)#sw acc vl 10 SWA(config-if-FastEthernet 0/1)#int f 0/2 SWA(config-if-FastEthernet 0/2)#sw acc vl 20 SWA(config-if-FastEthernet 0/2)#int f 0/23 SWA(config-if-FastEthernet 0/23)#sw m t SWA(config-if-FastEthernet 0/23)#int f 0/24 SWA(config-if-FastEthernet 0/24)#sw m t 步骤2在SA上设置MSTP SWA(config)#span Enable spanning-tree. SWA(config)#span m mstp SWA(config)#span mst conf SWA(config-mst)#instance 1 vl 1,10 %Warning:you must create vlans before configuring instance-vlan relationship SWA(config-mst)#instance 2 vl 20,40 %Warning:you must create vlans before configuring instance-vlan relationship SWA(config-mst)#name region1 SWA(config-mst)#revision 1 在SWA上验证MSTP SWA(config-mst)#sho span mst conf Multi spanning tree protocol : Enable Name : region1 Revision : 1 Instance Vlans Mapped -------- -------------------------------------------- 0 : 2-9, 11-19, 21-39, 41-4094 1 : 1, 10 2 : 20, 40

实验5(2) 参考答案

实验5(2) 类的继承与派生 参考答案 一、实验目的与实验要求 (1)掌握单继承和多重继承下派生类的定义方法,理解基类成员在不同的继承方式下不同的访问属性。 (2)正确定义派生类的构造函数与析构函数,理解定义一个派生类对象时构造函数、析构函数的调用次序。 (3)理解同名冲突的产生原因,会使用虚基类来解决第三类同名冲突问题,并理解引入虚基类后构造函数、析构函数的调用顺序。 (4)理解赋值兼容的相关使用方法。 二、实验内容 题目1:定义一个车基类,派生出自行车类和汽车类,并以自行车类和汽车类为基类共同派生出摩托车类,每个类都要定义带有参数的构造函数。自行车类分别使用private、protected、public三种方式来继承车基类,观察基类成员在派生类中的访问属性;观察自行车类、汽车类和摩托车类对象定义时构造、析构函数的调用顺序。最后将车基类定义为虚基类再观察程序运行结果。题目的具体要求如下。 ①定义基类V ehicle,它具有两个保护成员变量:MaxSpeed、Weight,有3个公有的成员函数:Run( )、Stop( )、Show( ),以及带参数的构造函数、析构函数;再定义一个从Vehicle 公有继承的Bicycle类,增加保护属性的成员变量Height,定义Bicycle类的构造函数、析构函数,改造Show函数,用于输出本类中的完整信息。main( )函数中定义Bicycle类对象,观察构造函数和析构函数的执行顺序,以及各成员函数的调用。使用跟踪的方法观察程序运行的每一步究竟调用的是哪一个函数。 ②在上一步基础上,将继承方式分别修改为protected和private,再重新编译,观察这时的报错信息并进行分析。 ③将Bicycle类的继承方式恢复为public,代码回到①的状态,再在Bicycle类下面增加一个第二层汽车类Car的定义,Car也是公有继承基类Vehicle,其中增加了一个保护成员变量SeatNum,表示汽车有几个座位,其定义方式与类Bicycle类似。主函数中定义该类对象,观察运行结果。 ④在上一步的基础上,再定义一个第三层类MotorCycle,该类以公有方式继承了第二层的Bicycle和Car类。定义其构造函数,要调用两个直接基类的构造函数,再改造函数Show( ),输出所有四个成员变量的信息。主函数中只定义类MotorCycle的对象并调用相应的函数,代码请参考实验指导1的④。程序进行编译,会产生4个错误、8个警告,因为存在二义性问题,在同名成员前增加“基类名::”以消除二义性直到程序正确,观察运行结果。 ⑤再将代码恢复至上一步未修改前,即存在4个错误、8个警告的状态,再作一定的修改,将Vehicle声明为虚基类以消除二义性,同时修改第三层类的构造函数,其余代码不变,具体请参考实验指导1的⑤。观察运行结果,理解此时构造函数、析构函数的调用顺序及用虚基类消除二义性的原理。 参考程序如下:

实验5 循环及其应用实验报告答案

实验五循环及其应用 【实验类型】设计性 【实验学时】2学时 【实验目的】 1、熟悉掌握用while语句,do-while语句和for语句实现循环的方法。 2、掌握在程序设计中用循环语句实现一些常用算法(如穷举、迭代、递推等)。【实验内容】 编程序并上机调试运行。 1.输入两个正整数m和n,求它们的最大公约数和最小公倍数。 输入时,使m void main() {int hcf(int,int); int lcd(int,int,int); int m,n,h,x; printf("请输入两个整数m,n:\n"); scanf("%d,%d",&m,&n); h=hcf(m,n); x=lcd(m,n,h); printf("最大公约数是%d,\n最小公倍数是%d。\n",h,x); } int hcf(int m,int n) {int r; if((r=m%n)!=0) {m=n;n=r;} return(r); } int lcd(int m,int n,int h) {return (m*n/h);} (2) #include void main() {int hcf(int,int); int lcd(int,int,int); int m,n,h,x; printf("请输入两个整数m,n:\n");

scanf("%d,%d",&m,&n); h=hcf(m,n); x=lcd(m,n,h); printf("最大公约数是%d ,\n 最小公倍数是%d 。\n",h,x); } int hcf(int m,int n) { int t,r; if(n>m) {t=n;n=m;m=t;} while((r=m%n)!=0) {m=n;n=r;} return(n); } int lcd(int m,int n,int h) { int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } 2.编写程序利用公式:! n 1!21!111e ++++= 求e 的近似值,精确到小数后6位 解: (1) #include void main() { int i=1; double e=1,k=1; do { e=e+1/k; i++; k=k*i; }while(1/k>=1e-6); printf("e 的近似值e=%f\n",e); } (2) #include void main() { int i;

实验5(1) 参考答案

实验5(1) 类的组合 参考答案 一、实验目的与实验要求 (1)理解类组合的概念与作用。 (2)掌握对象成员的定义方法,理解对象成员的构造与析构方法。 (3)理解组合后类的构造函数与析构函数的调用次序。 (4)掌握对象成员中私有成员和保护成员的访问方法。 二、实验内容 题目1:对象成员的定义、构造与访问。 定义三个类Member1、Member2和New。Member2中包含有Member1类型的成员,New中包含有Member1与Member2类型的成员。程序的具体要求如下。 ①在Member1类中,它含有一个int型私有数据成员x以及三个公有成员函数。三个成员函数分别为构造函数、析构函数与显示函数show( )。show( )函数的作用是输出x的值。 ②在Member2类中,它含有三个私有数据成员,分别是Member1型的对象obj1、obj2与int型的数据y。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出y的值。 ③在New类中,它含有三个私有数据成员,分别是Member1型的对象m1、Member2型的对象m2与int型的数据z。此外,它还含有三个公有成员函数,分别是构造函数、析构函数与显示函数show( )。show( )函数的作用是输出z的值。 ④main( )函数中定义一个New型的对象,并调用show( )函数。 程序为: #include using namespace std; class Member1 { public: Member1(int a) { x = a; cout << "constructing Member1 " << x << endl; } ~Member1( ) { cout << "donstructing Member1\n"; } void show( ) { cout << "Member1 x = " << x << endl;

access实验五 窗体设计(参考答案)

实验五窗体 一、实验目的 1. 熟悉创建窗体的方法; 2. 掌握在窗体的设计视图对常用控件的使用; 3. 掌握窗体属性的设置方法; 4. 掌握在窗体中添加子窗体的方法; 5. 掌握使用窗体处理数据的方法。 二、实验要求 1. 掌握使用设计视图创建窗体的操作方法; 2. 掌握实用窗体的设计方法。 三、实验内容 在“FLY飞翔数据库”数据库中,完成以下创建窗体实验。(以下的创建窗体实验中可能有多种创建方式,建议同学多思考、多尝试) 实验5-1使用Access的自动创建窗体功能,创建一个名为“商品信息”的分割窗体。要求该窗体包括表“商品”表中“商品编号”“商品名称”“销售价格”“购入价”等字段以及表“商品类型”中“类型名称”字段。 根据实验要求,操作步骤如图5.1所示:

(1)打开数据库文件(“FLY飞翔公司数据库”)。 (2)首先,选中在“创建”选项卡中“查 询”组的“查询设计”对象,单击“查 询设计”按钮,打开“显示表”对话框。 (3)通过“显示表”对话框,在选择查 询中添加“商品”和“商品类型”两个 表,并建立一对多的关系。 (4)在设计视图中,添加“商品” 和“商品类型”两个表中所需字段。 (5)然后,把该查询命名为“商品信息查询”,单 击“确定”按钮。并将该查询作为数据源引用。 (6)预览查询“商品信 息查询”数据源结果。 图5.1 创建“商品信息”的分割窗体

(7)接着,选定前面建立的查询“商 品信息查询”作为数据来源。然后 选中在“创建”选项卡中“窗体” 组的“其他窗体”按钮, 单击“其他窗体”按钮。 (8)在“其他窗体”按钮下选择“分割窗体” 选项,得到窗体视图。 (9)同时把该窗体命名为“商品 信息”,单击“确定”按钮。 图5.1 创建“员工工资查询”的表格式窗体 提示(或注意): 整个操作过程包含两个部分:第一,先在“查询”操作对象里,建立名为“商品信息查询”的数据源,数据源来源于表“商品”和表“商品类型”中选择所需要的字段。注意:自动创建窗体功能(包括分割窗体)只适合单表数据的操作,如果数据来自多个表,必须新建一个查询作为新的数据源;第二,在“窗体”选项组中,选择“其他窗体”中的“分割窗体”,依次完成名为“商品信息”的分割窗体的创建。

相关文档
最新文档