实验1:循环结构程序设计
实验目的:
1.熟悉VC++6.0的运行环境,掌握C程序的执行方法;
2.掌握三种基本数据类型、部分运算符号和常用函数;
3.掌握三种循环控制语句及break和continue语句的使用方法;
4.掌握循环结构的嵌套及正确控制计数型循环结构次数的方法。
实验内容:
程序1:搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬1砖,要求一次搬完,问男、女和小孩各若干?
/*#include
main()
{
int men,women,children;
men=0;
while(men<=8)
{women=0;
while(women<=11)
{children=36-men-women;
if((men*4+women*3+children/2==36)&&children%2==0)
printf("men=%d,women=%d,children=%d\n",men,women,children);
women++;}
men++;}
}
*/
#include
main()
{
int men,women,children;
men=0;
for(men=0;men<=9;men++)
for(women=0;women<=12;women++)
{children=36-men-women;
if((men*4+women*3+children/2==36)&&children%2==0)
printf("men=%d,women=%d,children=%d\n",men,women,children);
}
}
程序2 打印形状为直角三角形的乘法口诀。
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
…………………………
………………………………
9*1=9…………………………………………………………
#include
main()
{int i,j;
for(i=1;i<=9;i++)
{for(j=1;j<=i;j++)
printf("%d*%d=%2d ",i,j,i*j);
printf("\n");}
}
程序3 求1000以内的所有素数。
#include
#include
void main( )
{
int m,i,k;
for(m=3;m<1000;m=m+2)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0) break;
if(i>k) printf("%d\t",m);
}
}
程序4:计算和统计旅客运费程序。
由键盘输入旅客行李重量(w),按公式:
若( w<=50kg )f=1.5*w ,若(w>50kg)f=1.5*50 + 2.8*(w-50) ( w>50kg ) 计算运费,要求:
(1)打印每位旅客的顺序号,行李重量,应付运费;
(2)假定每天最多办理100人的行李托运手续或当w≤0时循环结束, 下班时打印出全天的运费总收入和办理的总人数。
方法一(while结构)
#include
main( )
{int num=0;
float w,f,t=0;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
while(num<=100&&w>0)
{if(w<=50) f=w*1.5;
else f=1.5*50 + 2.8*(w-50); num++;
printf("旅客编号为:%d,应付金额为:%.2f元,行李重量为:%.2fkg\n",num,f,w); t=t+f;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
}
printf("t=%.2f,num=%d\n",t,num);
}
方法二(do-while结构)
#include
main( )
{int num=0;
float w,f,t=0;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
do
{if(w<=50) f=w*1.5;
else f=1.5*50 + 2.8*(w-50); num++;
printf("旅客编号为:%d,应付金额为:%.2f元,行李重量为:%.2fkg\n",num,f,w); t=t+f;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
} while(num<=100&&w>0);
printf("t=%.2f,num=%d\n",t,num);
}
方法三(for结构)
#include
main( )
{int num;
float w,f,t=0;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
for(num=0;num<=100&&w>0; num++)
{
if(w<=50) f=w*1.5;
else f=1.5*50 + 2.8*(w-50);
printf("旅客编号为:%d,应付金额为:%.2f元,行李重量为:%.2fkg\n",num,f,w); t=t+f;
printf("请输入该名旅客行李的重量:") ;
scanf("%f",&w);
}
printf("t=%.2f,num=%d\n",t,num);
}
实验二基尔霍夫定律的验证 一、实验目的 1.通过实验验证基尔霍夫电流定律和电压定律 2.加深理解“节点电流代数和”及“回路电压代数和”的概念 3.加深对参考方向概念的理解 二、原理 基尔霍夫节点电流定律 ∑ I= 基尔霍夫回路电压定律 ∑ U= 参考方向: 当电路中的电流(或电压)的实际方向与参考方向相同时取正值,其实际方向与参考方向相反时取负值。 三、实验仪器和器材 1.0-30V可调直流稳压电源 2.+15直流稳压电源 3.200mA可调恒流源 4.电阻 5.交直流电压电流表 6.实验电路板 7.短接桥 8.导线 四、实验内容及步骤 1.验证基尔霍夫电流定律(KCL) 可假定流入该节点的电流为正(反之也可),并将电流表负极接在节点接口上,电流表正极接到支路接口上进行测量。测量结果如2-1所示。
图2-1 2.验证基尔霍夫回路电压定律(KVL) 用短接桥将三个电流接口短接,测量时可选顺时针方向为绕行方向,并注意电压表的指针偏转方向及取值的正与负,测量结果如表2-2所示。 图2-2
五、思考题 1.利用表2-1和表2-2中的测量结果验证基尔霍夫两个定律。 表一中数据有4.0A+5.1A-9.1A=0这与基尔霍夫电流定律一致; 表二中数据有1.6V+2.7V+5.7V-10V=0; 14.9V-4.2V-2V-5.5V=0; 这与基尔霍夫电压定律基本一致;可见,基尔霍夫电压定律成立 2.利用电路中所给数据,通过电路定律计算各支路电压和电流,并计算测量值与计算值之 间的误差,分析误差产生的原因。 测量误差;读数误差以及所用电表并非理想电表;电压表内阻不是无穷大;电流表内阻不为零;电源输出不稳定;仪器不准确;导线有电阻等。 3.回答下列问题 (1)已知某支路电流约为3mA,现有一电流表分别有20mA、200mA和2A三挡量程,你将使用电流表的哪档量程进行测量?为什么? 选20mA档,因为只有20mA档最接近3mA的电流,其他的档位均太大,造成测量误差大。 (2)改变电流或电压的参考方向,对验证基尔霍夫定律有影响吗?为什么? 没影响。基尔霍夫电压定律的根本原理是回路电压之和为零;基尔霍夫电流定律的根本原理是回路电流相等,改变电压或电流方向,不会影响电压之和为零和回路电流相等的根本规律,因此对验证基尔霍夫定律没有影响 小家伙们,够给力吧!
北京交通大学海滨学院考试试题 课程名称:数学实验2010-2011第一学期出题教师:数学组适用专业: 09机械, 物流, 土木, 自动化 班级:学号:姓名: 选做题目序号: 1.一对刚出生的幼兔经过一个月可以长成成兔, 成兔再经过一个月后可以 繁殖出一对幼兔. 如果不计算兔子的死亡数, 请用Matlab程序给出在未来24个月中每个月的兔子对数。 解: 由题意每月的成兔与幼兔的数量如下表所示: 1 2 3 4 5 6 ··· 成兔0 1 1 2 3 5··· 幼兔 1 0 1 1 2 3··· 运用Matlab程序: x=zeros(1,24); x(1)=1;x(2)=1; for i=2:24 x(i+1)=x(i)+x(i-1); end x 结果为x = 1 1 2 3 5 8 13 21 3 4 5 5 89 144 233 377 610 987 1597 2584 4181 6765 1094 6 7711 2865 7 46368 2.定积分的过程可以分为分割、求和、取极限三部分, 以1 x e dx 为例, 利用
已学过的Matlab 命令, 通过作图演示计算积分的过程, 并与使用命令int() 直接积分的结果进行比较. 解:根据求积分的过程,我们先对区间[0,1]进行n 等分, 然后针对函数x e 取和,取和的形式为10 1 i n x i e e dx n ξ=≈ ∑ ? ,其中1[ ,]i i i n n ξ-?。这里取i ξ为区间的右端点,则当10n =时,1 x e dx ?可用10 101 1.805610 i i e ==∑ 来近似计算, 当10n =0时,100 100 1 01 =1.7269100 i x i e e dx =≈ ∑?,当10n =000时,10000 10000 1 1 =1.718410000 i x i e e dx =≈ ∑ ?. 示意图如下图,Matlab 命令如下: x=linspace (0,1,21); y=exp(x); y1=y(1:20); s1=sum(y1)/20 y2=y(2:21); s2=sum(y2)/20 plot(x,y); hold on for i=1:20 fill([x(i),x(i+1),x(i+1),x(i),x(i)],[0,0,y(i),y(i),0],'b') end syms k;symsum(exp(k/10)/10,k,1,10);%n=10 symsum(exp(k/100)/100,k,1,100);%n=100 symsum(exp(k/10000)/10000,k,1,10000);%n=10000
Laboratory Exercise 1 Switches, Lights, and Multiplexers ED实验参与答案 Part1 library ieee; use ieee.std_logic_1164.all; entity part1 is port(SW:in std_logic_vector(17 downto 0); LEDR:out std_logic_vector(17 downto 0)); end part1; architecture Behavior of part1 is begin LEDR <= SW; end Behavior; part2 library ieee; use ieee.std_logic_1164.all; --a 2 to 1 multiplexer entity entity mux21 is port(in_x, in_y, in_s:in std_logic; out_m:out std_logic); end mux21; --a 2 to 1 multiplexer architecture architecture structural of mux21 is signal u, v:std_logic; begin u <= in_x and (not in_s); v <= in_y and in_s ; out_m <= u or v ; end structural;
--a eight-bit wide 2 to 1 multiplexer library ieee; use ieee.std_logic_1164.all; --eight-bit wide 2 to 1 multiplexer entity entity mux21_8bit is port( SW: in std_logic_vector (17 downto 0); --SW: in std_logic_vector (15 downto 8); --SW: in std_logic_vector (17 downto 17); LEDR: out std_logic_vector (7 downto 0)); end mux21_8bit; --eight-bit wide 2 to 1 multiplexera rchitecture architecture Structural of mux21_8bit is component mux21 port(in_x, in_y, in_s:in std_logic; out_m:out std_logic); end component; begin U1:mux21port map (in_x=>SW(0), in_y=>SW(8), in_s=>SW(17), out_m=>LEDR(0)); U2:mux21port map (in_x=>SW(1), in_y=>SW(9), in_s=>SW(17), out_m=>LEDR(1)); U3:mux21port map (in_x=>SW(2), in_y=>SW(10), in_s=>SW(17), out_m=>LEDR(2)); U4:mux21port map (in_x=>SW(3), in_y=>SW(11), in_s=>SW(17), out_m=>LEDR(3)); U5:mux21port map (in_x=>SW(4), in_y=>SW(12), in_s=>SW(17), out_m=>LEDR(4)); U6:mux21port map (in_x=>SW(5), in_y=>SW(13), in_s=>SW(17), out_m=>LEDR(5)); U7:mux21port map (in_x=>SW(6), in_y=>SW(14), in_s=>SW(17), out_m=>LEDR(6)); U8:mux21port map (in_x=>SW(7), in_y=>SW(15), in_s=>SW(17), out_m=>LEDR(7)); end Structural; part3 library ieee; use ieee.std_logic_1164.all; --a 2 to 1 multiplexer entity entity mux21 is port(in_x, in_y, in_s:in std_logic; out_m:out std_logic);
1.(1) [1 2 3 4;0 2 -1 1;1 -1 2 5;]+(1/2).*([2 1 4 10;0 -1 2 0;0 2 3 -2]) 2. A=[3 0 1;-1 2 1;3 4 2],B=[1 0 2;-1 1 1;2 1 1] X=(B+2*A)/2 3. A=[-4 -2 0 2 4;-3 -1 1 3 5] abs(A)>3 % 4. A=[-2 3 2 4;1 -2 3 2;3 2 3 4;0 4 -2 5] det(A),eig(A),rank(A),inv(A) 求计算机高手用matlab解决。 >> A=[-2,3,2,4;1,-2,3,2;3,2,3,4;0,4,-2,5] 求|A| >> abs(A) ans = ( 2 3 2 4 1 2 3 2 3 2 3 4 0 4 2 5 求r(A) >> rank(A) ans =
4 求A-1 《 >> A-1 ans = -3 2 1 3 0 -3 2 1 2 1 2 3 -1 3 -3 4 求特征值、特征向量 >> [V,D]=eig(A) %返回矩阵A的特征值矩阵D 与特征向量矩阵V , V = - + + - - + - + - + - + D = { + 0 0 0 0 - 0 0 0 0 + 0 0 0 0 - 将A的第2行与第3列联成一行赋给b >> b=[A(2,:),A(:,3)'] b = 《 1 - 2 3 2 2 3 3 -2