实验03 选择结构程序设计第4章Word文档格式.docx

上传人:b****6 文档编号:21256393 上传时间:2023-01-28 格式:DOCX 页数:21 大小:106.13KB
下载 相关 举报
实验03 选择结构程序设计第4章Word文档格式.docx_第1页
第1页 / 共21页
实验03 选择结构程序设计第4章Word文档格式.docx_第2页
第2页 / 共21页
实验03 选择结构程序设计第4章Word文档格式.docx_第3页
第3页 / 共21页
实验03 选择结构程序设计第4章Word文档格式.docx_第4页
第4页 / 共21页
实验03 选择结构程序设计第4章Word文档格式.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

实验03 选择结构程序设计第4章Word文档格式.docx

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

实验03 选择结构程序设计第4章Word文档格式.docx

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

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

用if语句实现:

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

输入一个百分制成绩:

x='

=100&

=90

disp('

成绩:

A'

=89&

=80

B'

elseifx>

=70&

x<

=79

C'

=60&

=69

D'

60

E'

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

 

x=78

C

x=54

E

x=83

B

x=63

D

x=209

x=98

A

用switch语句实现:

grades=input('

请输入百分制成绩:

grades='

switchfix(grades)

casenum2cell(90:

100)

display('

casenum2cell(80:

89)

casenum2cell(70:

79)

casenum2cell(60:

69)

casenum2cell(0:

59)

otherwise

3.工资计算

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

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

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

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

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

文本编辑器窗口中的程序

a=input('

员工号:

'

b=input('

工时数:

ifb>

=120

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

elseifb<

=60

c=b*84-700

c=b*84

disp(['

工号为'

num2str(a),'

员工应得工资为'

num2str(c)])

289

125

c=

10563

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

89

98

8232

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

876

57

4088

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

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

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

x1=10+(99-10)*rand

(1);

x2=10+(99-10)*rand

(1);

m=fix(x1)

n=fix(x2)

输入一个运算符:

'

s'

switchx

case{'

+'

}

c=m+n;

-'

c=m-n;

*'

c=m*n;

/'

c=m/n;

c='

false'

;

c

命令窗口中运行结果:

m=

95

n=

+

190

24

96

-

-72

53

*

5035

81

22

/

3.6818

5.(用try…catch)建立5×

6矩阵,要求输出矩阵第n行元素

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

程序:

A=input('

输入A的值:

n=input('

输入n的值:

try

B=A(n,:

catch

B=A(5,:

lasterr

运行结果:

rand(5,6)

A=

0.44560.67970.95970.25510.54720.2543

0.64630.65510.34040.50600.13860.8143

0.70940.16260.58530.69910.14930.2435

0.75470.11900.22380.89090.25750.9293

0.27600.49840.75130.95930.84070.3500

6

6

B=

ans=

AttemptedtoaccessA(6,:

indexoutofboundsbecausesize(A)=[5,6].

三、实验提示

步骤:

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

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

(2)在其中输入程序。

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

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

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

否则显示的是错误信息。

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

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

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

x=’是提示信息。

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

”。

注意单个“&

”是数组逻辑“与”。

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

本程序中第一行可为:

x=input(‘输入:

x=’);

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

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

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

参考例4.5用switch。

用于取整的函数有

fix向0方向取整

floor向-∞方向取整

ceil向+∞方向取整

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

用switch。

用if语句处理除数为0。

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

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

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

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

%非递归,函数文件

functionY=rndprm1(X)

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

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

[m,n]=size(X);

ifm>

1

error('

RNDPRM1只接受列向量的输入'

Y=[];

%从一个空矩阵开始

l=n;

%X的元素个数

fori=1:

n

k=1+fix(l*rand);

%随机选择Y的下一个元素的位置,rand等价于rand

(1),0<

rand<

x=X(k);

%被选择的元素

Y=[Y,x];

%将x添加到Y中

X(k)=[];

%从X中删除x元素

l=l-1;

%更新X的元素个数

5.建立5×

用try…catch…end语句。

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

四、教程:

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

4.1M文件p56

4.1.1M文件的分类

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

M文件按调用方式分为:

命令文件(ScriptFile)

函数文件(FunctionFile)

两种文件的主要区别:

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

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

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

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

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

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

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

%程序1:

建立命令文件,文件名exch.m

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:

建立函数文件,取文件名fexch.m

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

x=b;

y=a;

%调用函数文件

x=1:

y=[11,12,13,14;

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

4.1.2M文件的建立与打开p57

1.建立新的M文件

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

(1)菜单操作

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

(2)命令操作

在命令窗口输入命令edit。

(3)命令按钮操作

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

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

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

在命令窗口输入:

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

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

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

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

4.2程序控制结构p58

4.2.1顺序结构

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

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

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

采用'

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

输入矩阵A:

xm=input('

输入姓名:

xm

[1,2,3;

4,5,6]

Lingming

123

456

xm=

2.数据的输出

disp(输出项)

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

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

%p59

a='

b='

c=input('

c='

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

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

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条件

语句组

条件成立,执行语句组;

否则不执行语句组。

(2)双分支if语句

语句组1

语句组2

条件成立,执行语句组1;

否则执行语句组2。

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

输入x的值:

ifx==10

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

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

y

10

10.0543

13.4500

(3)多分支if语句

if条件1

elseif条件2

……

elseif条件m

语句组m

语句组n

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

例4.4(ifelseif)字符转换输出p62

输入一个字符:

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

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

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

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

ifc>

='

&

c<

Z'

%标量“与”用&

disp(char(abs('

a'

)+abs(c)-abs('

)));

elseifc>

z'

)+abs(c)-abs('

0'

9'

disp(abs(c)-abs('

));

disp(c);

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

5

2.switch语句

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

switch表达式

case表达式1

case表达式2

case表达式m

otherwise

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

例4.5(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;

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

2300

price=

2116

3.try语句

语句组1

catch

语句组2

lasterr

Ø

先试探性执行语句组1;

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

新用法:

catchexception

throw(exception);

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

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

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

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

A=[1,2,3;

4,5,6];

B=[7,8,9;

10,11,12];

C=A*B;

C=A.*B;

lasterr%显示出错原因

C=

71627

405572

Errorusing==>

mtimes

Innermatrixdimensionsmustagree.

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

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1