实验03选择结构程序设计第4章.docx

上传人:b****2 文档编号:18591128 上传时间:2023-08-19 格式:DOCX 页数:25 大小:108.71KB
下载 相关 举报
实验03选择结构程序设计第4章.docx_第1页
第1页 / 共25页
实验03选择结构程序设计第4章.docx_第2页
第2页 / 共25页
实验03选择结构程序设计第4章.docx_第3页
第3页 / 共25页
实验03选择结构程序设计第4章.docx_第4页
第4页 / 共25页
实验03选择结构程序设计第4章.docx_第5页
第5页 / 共25页
实验03选择结构程序设计第4章.docx_第6页
第6页 / 共25页
实验03选择结构程序设计第4章.docx_第7页
第7页 / 共25页
实验03选择结构程序设计第4章.docx_第8页
第8页 / 共25页
实验03选择结构程序设计第4章.docx_第9页
第9页 / 共25页
实验03选择结构程序设计第4章.docx_第10页
第10页 / 共25页
实验03选择结构程序设计第4章.docx_第11页
第11页 / 共25页
实验03选择结构程序设计第4章.docx_第12页
第12页 / 共25页
实验03选择结构程序设计第4章.docx_第13页
第13页 / 共25页
实验03选择结构程序设计第4章.docx_第14页
第14页 / 共25页
实验03选择结构程序设计第4章.docx_第15页
第15页 / 共25页
实验03选择结构程序设计第4章.docx_第16页
第16页 / 共25页
实验03选择结构程序设计第4章.docx_第17页
第17页 / 共25页
实验03选择结构程序设计第4章.docx_第18页
第18页 / 共25页
实验03选择结构程序设计第4章.docx_第19页
第19页 / 共25页
实验03选择结构程序设计第4章.docx_第20页
第20页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验03选择结构程序设计第4章.docx

《实验03选择结构程序设计第4章.docx》由会员分享,可在线阅读,更多相关《实验03选择结构程序设计第4章.docx(25页珍藏版)》请在冰点文库上搜索。

实验03选择结构程序设计第4章.docx

实验03选择结构程序设计第4章

实验03选择结构程序设计

(第4章MATLAB程序设计)

一、实验目的

1.掌握建立和执行M文件的方法。

2.掌握利用if语句实现选择结构的方法。

`

3.掌握利用switch语句实现多分支选择结构的方法。

4.掌握try语句的使用。

二、实验内容

1.(用if)求分段函数的值

用if语句实现,分别输出x=,,,,,,时的y值。

文本编辑器中的程序:

x=input('请输入x的值:

');

ifx<0&&x~=-3

y=x^2+x-6

elseifx<5&&x>=0&&x~=2&&x~=3

y=x^2-5*x+6

else

y=x^2-x-1

end

命令窗口中的运行结果:

请输入x的值:

y=

14

请输入x的值:

y=

11

!

请输入x的值:

y=

2

请输入x的值:

y=

1

请输入x的值:

y=

请输入x的值:

y=

5

请输入x的值:

y=

19

2.(用if、switch)输出成绩等级

:

输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。

其中90分~100分为A,80分~89分为B,79分~79分为C,60分~69分为D,60分以下为E。

要求:

(1)分别用if语句和switch语句实现。

(2)要求输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。

用if语句实现:

文本编辑器窗口中的程序:

x=input('输入一个百分制成绩:

x=');

%

ifx<=100&&x>=90

disp('成绩:

A')

elseifx<=89&&x>=80

disp('成绩:

B')

elseifx>=70&&x<=79

disp('成绩:

C')

elseifx>=60&&x<=69

disp('成绩:

D')

?

elseifx<60

disp('成绩:

E')

else

disp('输入内容不符合规则,请输入100以内的整数!

')

end

 

命令窗口中的运行结果:

|

输入一个百分制成绩:

x=78

成绩:

C

输入一个百分制成绩:

x=54

成绩:

E

输入一个百分制成绩:

x=83

成绩:

B

输入一个百分制成绩:

x=63

成绩:

D

:

输入一个百分制成绩:

x=209

输入内容不符合规则,请输入100以内的整数!

输入一个百分制成绩:

x=98

成绩:

A

用switch语句实现:

文本编辑器窗口中的程序:

grades=input('请输入百分制成绩:

grades=');

switchfix(grades)

<

casenum2cell(90:

100)

display('A')

casenum2cell(80:

89)

display('B')

casenum2cell(70:

79)

display('C')

casenum2cell(60:

69)

display('D')

!

casenum2cell(0:

59)

display('E')

otherwise

display('输入内容不符合规则,请输入100以内的整数!

')

end

命令窗口中的运行结果:

·

3.工资计算

硅谷公司员工的工资计算方法如下:

(1)工作时数超过120小时者,超过部分加发15%。

(2)工作时数低于60小时者,扣发700元。

(3)其余按每小时84元计发。

试编程按输入的工号和该号员工的工时数,计算应发工资。

文本编辑器窗口中的程序

~

a=input('员工号:

');

b=input('工时数:

');

ifb>=120

c=120*84+(b-120)*84*(1+

elseifb<=60

c=b*84-700

else

c=b*84

#

end

disp(['工号为',num2str(a),'员工应得工资为',num2str(c)])

 

命令窗口中的运行结果:

员工号:

289

?

工时数:

125

c=

10563

工号为289员工应得工资为10563

员工号:

89

工时数:

98

c=

8232

工号为89员工应得工资为8232

员工号:

876

工时数:

57

c=

4088

工号为876员工应得工资为4088

4.两位数的加、减、乘、除四则运算

}

设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。

文本编辑器中的程序:

x1=10+(99-10)*rand

(1);

x2=10+(99-10)*rand

(1);

m=fix(x1)

n=fix(x2)

x=input('输入一个运算符:

','s');

#

switchx

case{'+'}

c=m+n;

case{'-'}

c=m-n;

case{'*'}

c=m*n;

case{'/'}

"

c=m/n;

otherwise

c='false';

end

c

命令窗口中运行结果:

m=

95

n=

95

输入一个运算符:

+

c=

190

m=

24

n=

96

输入一个运算符:

-

c=

-72

m=

95

n=

53

输入一个运算符:

*

c=

5035

m=

81

n=

22

输入一个运算符:

/

c=

5.(用try…catch)建立5×6矩阵,要求输出矩阵第n行元素

要求:

当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。

程序:

A=input('输入A的值:

')

n=input('输入n的值:

')

try

B=A(n,:

);

catch

B=A(5,:

);

end

B

$

lasterr

运行结果:

输入A的值:

rand(5,6)

A=

输入n的值:

6

n=

6

B=

ans=

AttemptedtoaccessA(6,:

);indexoutofboundsbecausesize(A)=[5,6].

三、实验提示

1.(用if)求分段函数的值

用if语句实现,分别输出x=,,,,,,时的y值。

步骤:

(1)点击MATLAB主窗口的“文本编辑器”按钮

,弹出“文本编辑器”窗口。

$

(2)在其中输入程序。

(3)(建议先将主窗口中的命令窗口提取出来),点击“保存并运行”按钮

,系统提示用何文件名保存该程序,可用默认文件名,或自己起文件名,然后程序运行。

(4)若程序无语法错误,则在命令窗口中显示运行结果;否则显示的是错误信息。

如有错,回到文本编辑器进行修改再运行。

本程序要用到input语句,在运行中输入即时数据。

注意给出提示信息,下面的参考结果中的‘输入:

x=’是提示信息。

用到标量逻辑“与”运算符“&&”。

注意单个“&”是数组逻辑“与”。

本程序要运行7次,因为要输入7个数据,参考结果:

:

本程序中第一行可为:

x=input(‘输入:

x=’);

之后是if…elseif…else…end语句,其中x是自变量,y是因变量。

最后一行简单输入个y即可。

注意其后不加分号,否则不显示y的值。

2.(用if、switch)输出成绩等级

参考例用switch。

用于取整的函数有

fix向0方向取整

floor向-∞方向取整

ceil向+∞方向取整

round四舍五入到最邻近的整数

4.两位数的加、减、乘、除四则运算

用switch。

用if语句处理除数为0。

产生两个两位随机整数可参考下例中的相关用法:

例(递归与非递归)任意排列问题p74

?

randperm(n)产生一个从整数1到整数n的任意排列。

编写函数实现randperm(n)的功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列。

%非递归,函数文件

functionY=rndprm1(X)

%RNDPRM1用for产生一行向量的任意排列

%RNDPRM1(X)产生行向量X的任意排列

[m,n]=size(X);

ifm>1

error('RNDPRM1只接受列向量的输入');

end

Y=[];%从一个空矩阵开始

l=n;%X的元素个数

fori=1:

n

k=1+fix(l*rand);%随机选择Y的下一个元素的位置,rand等价于rand

(1),0

x=X(k);%被选择的元素

Y=[Y,x];%将x添加到Y中

'

X(k)=[];%从X中删除x元素

l=l-1;%更新X的元素个数

end

5.建立5×6矩阵,要求输出矩阵第n行元素

用try…catch…end语句。

可用随机函数rand自动生成矩阵。

四、教程:

第4章MATLAB程序设计(1/3)

4.1M文件p56

4.1.1M文件的分类

用MATLAB语言编写的程序,称M文件,扩展名为m。

M文件按调用方式分为:

命令文件(ScriptFile)

函数文件(FunctionFile)

两种文件的主要区别:

(1)命令文件无输入参数,无返回输出参数;

函数文件可带输入参数,可返回输出参数。

~

(2)命令文件对工作空间中的变量操作;

函数文件中定义的变量为局部变量,执行完时,它们被清除。

(3)命令文件直接执行;

函数文件要以函数调用的方式来调用它。

例(命令文件、函数文件)互换变量a,b的值。

%程序1:

建立命令文件,文件名

clc;clear;%清命令窗口,清工作空间

a=1:

10;

b=[11,12,13,14;15,16,17,18];

tmp=a;a=b;b=tmp;

a

b

a=

11121314

15161718

b=

-

12345678910

%程序2:

建立函数文件,取文件名

function[x,y]=fexch(a,b)%a,b为局部变量

x=b;y=a;

%调用函数文件

x=1:

10;

y=[11,12,13,14;15,16,17,18];

[x,y]=fexch(x,y)

>

a=

11121314

15161718

b=

12345678910

4.1.2M文件的建立与打开p57

1.建立新的M文件

启动文本编辑器有3种方法:

[

(1)菜单操作

从主窗口的“文件”菜单中选“新建”,再选“空白M-文件”。

(2)命令操作

在命令窗口输入命令edit。

(3)命令按钮操作

单击主窗口工具栏上的“新建M-文件”按钮。

2.打开已有的M文件(4种方法)

(1)菜单操作

$

从“文件”菜单中选“打开”,屏幕出现“打开”对话框,再选要打开的M文件。

(2)命令操作

在命令窗口输入:

edit文件名,打开指定的M文件。

(3)命令按钮操作

单击工具栏上的“打开文件”按钮,再从弹出的对话框中选所需的M文件。

(4)在当前目录窗口操作

在当前目录窗口双击要打开的文件名。

程序控制结构p58

4.2.1顺序结构

按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。

1.数据的输入(从键盘输入)

A=input(提示信息,选项);

采用's'选项,允许用户输入一个字符串。

A=input('输入矩阵A:

');

xm=input('输入姓名:

','s');

A

xm

输入矩阵A:

[1,2,3;4,5,6]

输入姓名:

Lingming

A=

123

456

xm=

Lingming

2.数据的输出

disp(输出项)

输出项既可为字符串,也可为矩阵。

例(顺序结构)求一元二次方程ax2+bx+c=0的根p59

%p59

clc;

a=input('a=');

b=input('b=');

~

c=input('c=');

d=b*b-4*a*c;

x=[-b+sqrt(d),-b-sqrt(d)]/(2*a);

disp(['x1=',num2str(x

(1)),...

',x2=',num2str(x

(2))]);

a=1

b=-5

c=6

x1=3,x2=2

3.程序的暂停

pause(延迟秒数)

pause暂停程序,按任一键程序继续执行。

Ctrl+c强行中止程序的运行。

4.2.2选择结构p60

1.if语句(3种格式)

(1)单分支if语句

if条件

语句组

end

条件成立,执行语句组;否则不执行语句组。

(2)双分支if语句

if条件

语句组1

else

语句组2

end

条件成立,执行语句组1;否则执行语句组2。

例(ifelse)计算分段函数的值p61

clc;

x=input('输入x的值:

');

*

ifx==10

y=cos(x+1)+sqrt(x*x+1);

else

y=x*sqrt(x+sqrt(x));

end

y

输入x的值:

10

y=

输入x的值:

5

y=

(3)多分支if语句

if条件1

语句组1

elseif条件2

语句组2

……

elseif条件m

语句组m

else

语句组n

end

语句用于实现多分支选择结构。

!

例(ifelseif)字符转换输出p62

输入一个字符:

若为大写字母,则输出其小写字母;

若为小写字母,则输出其大写字母;

若为数字字符,则输出其对应的数值;

若为其他字符,则原样输出。

c=input('输入一个字符:

','s');

ifc>='A'&&c<='Z'%标量“与”用&&

}

disp(char(abs('a')+abs(c)-abs('A')));

elseifc>='a'&&c<='z'

disp(char(abs('A')+abs(c)-abs('a')));

elseifc>='0'&&c<='9'

disp(abs(c)-abs('0'));

else

disp(c);

end%setstr用char代替,setstr将淘汰

>

输入一个字符:

a

A

输入一个字符:

B

b

输入一个字符:

5

5

输入一个字符:

&

&

2.switch语句

根据表达式的取值,分别执行不同的语句。

switch表达式

case表达式1

语句组1

case表达式2

语句组2

……

case表达式m

语句组m

otherwise

语句组n

end

当任意一个分支的语句执行完后,直接执行switch语句的下一句。

例(switchcase)打折销售p63

某商场对商品实行打折销售,标准如下(价格用price表示):

\

price<200没有折扣

200≤price<5003%折扣

500≤price<10005%折扣

1000≤price<25008%折扣

2500≤price<500010%折扣

5000≤price14%折扣

输入所售商品的价格,求其实际销售价格。

price=input('输入商品价格:

');

switchfix(price/100)

case{0,1}%价格<200

rate=0;

case{2,3,4}%200<=价格<500

rate=3/100;

casenum2cell(5:

9)%500<=价格<1000

rate=5/100;

casenum2cell(10:

24)%1000<=价格<2500

rate=8/100;

casenum2cell(25:

49)%2500<=价格<5000

rate=10/100;

otherwise%5000<=价格

rate=14/100;

end

price=price*(1-rate)%输出商品实际销售价格

输入商品价格:

2300

price=

2116

3.try语句

try

语句组1

catch

语句组2

lasterr

end

先试探性执行语句组1;

若语句组1在执行过程中出错,则将错误信息赋给lasterr变量,并转去执行语句组2。

新用法:

try

语句组1

catchexception

语句组2

throw(exception);

end

exception放错误信息,throw(exception)显示exception的内容。

例(trycatch)矩阵乘法和点乘p64

矩阵乘法运算要求两矩阵的维数相容,否则出错。

先求两矩阵乘积,若出错,则转去求两矩阵点乘。

clc;

A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];

try

C=A*B;

catch

C=A.*B;

lasterr%显示出错原因

end

C

C=

71627

405572

ans=

Errorusing==>mtimes

Innermatrixdimensionsmustagree.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2