资源描述
实验五 第3章 MATLAB程序设计
第二节 程序控制结构
三、选择结构
选择结构是根据给定的条件成立或不成立,分别执行不同的语句.Matlab用于实现选择结构的语句有
条件语句:if –end 和 开关语句:switch-end .
1.单分支结构 if—end语句 2.双分支结构 if—else—end语句
if 条件表达式
语句组1
else
语句组2
end
if-end语句的格式为: if-else-end语句的格式为:
if 条件表达式
语句组
end
3.多分支结构 if — elseif — else — end语句
if — elseif — else — end语句的格式为:
if 条件表达式1
语句组1
elseif 条件表达式 2
语句组2
... ...
elseif 条件表达式 m
语句组m
else
语句组
end
■例11 求函数 ,输入x 值,输出y值.
function y=fuhao(x)
if x<0
y=-1;
elseif x==0
y=0;
else
y=1;
end
解:
■例12 一个三位正整数各位数字的立方和等于该数本身则称该数为水仙花数.输出全部水仙花数.
解:程序如下
A=[];
for m=100:999
m1=fix(m/100); %求m的百位数字
m2=rem(fix(m/10),10); %求m的十位数字
m3=rem(m,10); %求m的个位数字
if m==m1*m1*m1+m2*m2*m2+m3*m3*m3
A=[A,m];
end
end
disp(A)
以flower.m命名,运行结果:
153 370 371 407
4. switch-end 语句
根据表达式的不同取值,分别执行不同的语句.其格式如下:
switch 表达式
case 值1
语句组1
case 值2
语句组2
... ...
case 值m
语句组m
otherwise
语句组n
end
method=input('请输入方法名:')
switch method
case {'linear','bilinear'}
disp('Method is linear')
case 'cubic'
disp('Method is cubic')
case 'nearest'
disp('Method is nearest')
otherwise
disp('Unknown method.')
end
■例13 阅读程序
■例14 用switch-end语句编一程序,对于给定的一个百分制成绩,输出相应的五分制成绩,设: 90分以上为‘A’, 80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’.
function sctole(score)
grade=fix(score/10);
switch grade
case {10,9}
grade='A'
case 8
grade='B'
case 7
grade='C'
case 6
grade='D'
otherwise
grade='E'
end
■关于 switch-end 语句的几点注解:
l Matlab首先计算表达式的值,然后将它依次与各个case指令后的检测值进行比较,当比较结果为真时,就执行相应的语句组,然后跳出 switch-end 结构
l 如果所有的比较结果都为假,则执行 otherwise 后面的语句组,然后跳出 switch-end 结构
l otherwise 指令可以不出现
l switch 后面的表达式的值可以是一个标量或字符串
l case 指令后的检测值超过一个时,应用{}括起来
习题:
一、阅读下列程序,并在计算机上运行.
1. control.m
function y=control(n)
a=20;
if n==0
y=a+1;
elseif n==1
y=a*(1+n);
elseif n==2
y=a+n;
else
y=a;
end
2. qhshzh.m
x=input('请输入x的值:');
if x==10
y=cos(x+1)+sqrt(x*x+1);
else
y=x*sqrt(x+sqrt(x));
end
y
3. wufen.m
clear
n=input(‘输入百分制分数n= ');
if n>=90
r='A'
elseif n>=80
r='B'
elseif n>=70
r='C'
elseif n>=60
r='D'
else
r='E'
end
4. chenji.m
s=0;
a=[65,76,56,78;98,83,74,85;76,67,78,79;98,58,42,73;67,89,76,87];
for k=a
s=s+k;
end
disp(s);
5. jituo.m
% 鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,求笼内关了多少只兔子和多少只鸡?
clear
chicken=1;
while 1
if rem(100-chicken*2, 4)==0&(chicken+(100-chicken*2)/4)==36
break;
end
chicken=chicken+1;
end
chicken
rabbit=(100-2*chicken)/4
二、 编写M文件,对任意的a,b,c求方程的根,并对有没有实根给出判断.
三、选做题 编程实现lagrange插值多项式的计算.
7
展开阅读全文