实验 选择结构程序设计_第1页
实验 选择结构程序设计_第2页
实验 选择结构程序设计_第3页
实验 选择结构程序设计_第4页
实验 选择结构程序设计_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数学软件课内实验13信科273王平李倩15实验03 选择结构程序设计(第4章 MATLAB程序设计)一、实验目的1. 掌握建立和执行M文件的方法。2. 掌握利用if语句实现选择结构的方法。3. 掌握利用switch语句实现多分支选择结构的方法。4. 掌握try语句的使用。二、实验内容1.(用if)求分段函数的值用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。文本编辑器中的程序:x=input('请输入x的值:');if x<0&&x=-3 y=x2+x-6elseif x<5&&x>

2、;=0&&x=2&&x=3 y=x2-5*x+6else y=x2-x-1end命令窗口中的运行结果:请输入x的值:-5.0y = 14请输入x的值:-3.0y = 11请输入x的值:1.0y = 2请输入x的值:2.0y = 1请输入x的值:2.5y = -0.2500请输入x的值:3.0y = 5请输入x的值:5.0y = 192.(用if、switch)输出成绩等级输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分100分为A,80分89分为B,79分79分为C,60分69分为D,60分以下为E。要求:(1)分别用if语句和switch语句

3、实现。(2) 要求输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。用if语句实现:文本编辑器窗口中的程序:x=input('输入一个百分制成绩:x=');if x<=100&&x>=90 disp('成绩:A')elseif x<=89&&x>=80 disp('成绩:B')elseif x>=70&&x<=79 disp('成绩:C')elseif x>=60&&x<=69 disp('成绩

4、:D')elseif x<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=');switch f

5、ix(grades) case num2cell(90:100) display('A') case num2cell(80:89) display('B') case num2cell(70:79) display('C') case num2cell(60:69) display('D') case num2cell(0:59) display('E') otherwise display('输入内容不符合规则,请输入100以内的整数!')end命令窗口中的运行结果:3. 工资计算硅谷公司员工的

6、工资计算方法如下:(1) 工作时数超过120小时者,超过部分加发15%。(2) 工作时数低于60小时者,扣发700元。(3) 其余按每小时84元计发。试编程按输入的工号和该号员工的工时数,计算应发工资。文本编辑器窗口中的程序a=input('员工号: ');b=input('工时数:');if b>=120 c=120*84+(b-120)*84*(1+0.15)elseif b<=60 c=b*84-700else c=b*84enddisp('工号为',num2str(a),'员工应得工资为',num2str(c)

7、 命令窗口中的运行结果:员工号: 289工时数:125c = 10563工号为289员工应得工资为10563员工号: 89工时数:98c = 8232工号为89员工应得工资为8232员工号: 876工时数:57c = 4088工号为876员工应得工资为40884. 两位数的加、减、乘、除四则运算设计程序,完成两位数的加、减、乘、除四则运算,即产生两个两位随机整数,再输入一个运算符号,做相应的运算,并显示相应的结果。文本编辑器中的程序:x1=10+(99-10)*rand(1);x2=10+(99-10)*rand(1);m=fix(x1)n=fix(x2)x=input('输入一个运算

8、符:','s');switch x case '+' c=m+n; case '-' c=m-n; case '*' c=m*n; case '/' c=m/n; otherwise c='false'endc命令窗口中运行结果:m = 95n = 95输入一个运算符:+c = 190m = 24n = 96输入一个运算符:-c = -72m = 95n = 53输入一个运算符:*c = 5035m = 81n = 22输入一个运算符:/c = 3.68185.(用trycatch)建立5&

9、#215;6矩阵,要求输出矩阵第n行元素要求:当n值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。程序:A=input('输入A的值:')n=input('输入n的值:')try B=A(n,:);catch B=A(5,:);endBlasterr运行结果:输入A的值:rand(5,6)A = 0.4456 0.6797 0.9597 0.2551 0.5472 0.2543 0.6463 0.6551 0.3404 0.5060 0.1386 0.8143 0.7094 0.1626 0.5853 0.6991 0.1493 0.2435

10、0.7547 0.1190 0.2238 0.8909 0.2575 0.9293 0.2760 0.4984 0.7513 0.9593 0.8407 0.3500输入n的值:6n = 6B = 0.2760 0.4984 0.7513 0.9593 0.8407 0.3500ans =Attempted to access A(6,:); index out of bounds because size(A)=5,6.三、实验提示1.(用if)求分段函数的值用if语句实现,分别输出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。步骤:(1) 点击MATLAB主窗口的

11、“文本编辑器”按钮,弹出“文本编辑器”窗口。(2) 在其中输入程序。(3) (建议先将主窗口中的命令窗口提取出来),点击“保存并运行”按钮,系统提示用何文件名保存该程序,可用默认文件名,或自己起文件名,然后程序运行。(4) 若程序无语法错误,则在命令窗口中显示运行结果;否则显示的是错误信息。如有错,回到文本编辑器进行修改再运行。本程序要用到input语句,在运行中输入即时数据。注意给出提示信息,下面的参考结果中的输入:x=是提示信息。用到标量逻辑“与”运算符 “&&”。注意单个 “&” 是数组逻辑“与”。本程序要运行7次,因为要输入7个数据,参考结果:本程序中第一行可为

12、:x=input(输入:x= );之后是ifelseifelseend语句,其中x是自变量,y是因变量。最后一行简单输入个y即可。注意其后不加分号,否则不显示y的值。2.(用if、switch)输出成绩等级参考例4.5用switch。用于取整的函数有fix向0方向取整floor向-方向取整ceil向+方向取整round四舍五入到最邻近的整数4. 两位数的加、减、乘、除四则运算用switch。用if语句处理除数为0。产生两个两位随机整数可参考下例中的相关用法:例4.19(递归与非递归)任意排列问题p74randperm(n)产生一个从整数1到整数n的任意排列。编写函数实现randperm(n)的

13、功能,即给出一个由任意数组成的行向量,然后产生这个行向量元素的任意排列。%非递归,函数文件function Y=rndprm1(X)%RNDPRM1 用for产生一行向量的任意排列%RNDPRM1(X) 产生行向量X的任意排列m,n=size(X);if m>1 error(' RNDPRM1只接受列向量的输入');endY= ; %从一个空矩阵开始l=n; %X的元素个数for i=1:n k=1+fix(l*rand);%随机选择Y的下一个元素的位置,rand等价于rand(1),0<rand<1 x=X(k); %被选择的元素 Y=Y,x; %将x添加到

14、Y中 X(k)= ; %从X中删除x元素 l=l-1; %更新X的元素个数end5. 建立5×6矩阵,要求输出矩阵第n行元素用trycatchend语句。可用随机函数rand自动生成矩阵。四、教程:第4章 MATLAB程序设计(1/3)4.1 M文件 p564.1.1 M文件的分类用MATLAB语言编写的程序,称M文件,扩展名为m。M文件按调用方式分为:命令文件(Script File)函数文件(Function File)两种文件的主要区别:(1) 命令文件无输入参数,无返回输出参数;函数文件可带输入参数,可返回输出参数。(2) 命令文件对工作空间中的变量操作;函数文件中定义的变量

15、为局部变量,执行完时,它们被清除。(3) 命令文件直接执行;函数文件要以函数调用的方式来调用它。例4.1(命令文件、函数文件)互换变量a,b的值。%程序1:建立命令文件,文件名exch.mclc; clear;%清命令窗口,清工作空间a=1:10;b=11,12,13,14;15,16,17,18;tmp=a; a=b; b=tmp;aba = 11 12 13 14 15 16 17 18b =1 2 3 4 5 6 7 8 9 10%程序2:建立函数文件,取文件名fexch.mfunction x,y=fexch(a,b)%a,b为局部变量x=b; y=a;%调用函数文件x=1:10;y=

16、11,12,13,14;15,16,17,18;x,y=fexch(x,y)a = 11 12 13 14 15 16 17 18b =1 2 3 4 5 6 7 8 9 104.1.2 M文件的建立与打开 p571建立新的M文件启动文本编辑器有3种方法:(1) 菜单操作从主窗口的“文件”菜单中选“新建”,再选“空白M-文件”。(2) 命令操作在命令窗口输入命令edit。(3) 命令按钮操作单击主窗口工具栏上的“新建M-文件”按钮。2打开已有的M文件(4种方法)(1) 菜单操作从“文件”菜单中选“打开”,屏幕出现“打开”对话框,再选要打开的M文件。(2) 命令操作在命令窗口输入:edit 文件

17、名,打开指定的M文件。(3) 命令按钮操作单击工具栏上的“打开文件”按钮,再从弹出的对话框中选所需的M文件。(4) 在当前目录窗口操作在当前目录窗口双击要打开的文件名。4.2 程序控制结构 p58 顺序结构 按照程序中语句的排列顺序依次执行,直到程序的最后一个语句。1数据的输入(从键盘输入) A=input(提示信息,选项);采用's'选项,允许用户输入一个字符串。A=input('输入矩阵A:');xm=input('输入姓名:','s');Axm输入矩阵A:1,2,3;4,5,6输入姓名:Ling mingA = 1 2 3

18、4 5 6xm =Ling ming2数据的输出 disp(输出项)输出项既可为字符串,也可为矩阵。例4.2(顺序结构)求一元二次方程ax2+bx+c=0的根 p59%p59clc;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=1b=-5c=6x1=3,x2=23程序的暂停 pause(延迟秒数)pau

19、se 暂停程序,按任一键程序继续执行。 Ctrl+c 强行中止程序的运行。 选择结构 p601if语句(3种格式) (1) 单分支if语句if 条件 语句组end 条件成立,执行语句组;否则不执行语句组。 (2) 双分支if语句if 条件 语句组1else 语句组2end 条件成立,执行语句组1;否则执行语句组2。例4.3(if else)计算分段函数的值p61clc;x=input('输入x的值: '); if x=10 y= cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endy输入x的值: 10y = 10.0543输入x的值:

20、 5y = 13.4500(3) 多分支if语句if 条件1 语句组1elseif 条件2 语句组2 elseif 条件m 语句组melse 语句组nend语句用于实现多分支选择结构。例4.4(if elseif)字符转换输出 p62输入一个字符:若为大写字母,则输出其小写字母;若为小写字母,则输出其大写字母;若为数字字符,则输出其对应的数值;若为其他字符,则原样输出。c=input('输入一个字符:','s');if c>='A' && c<='Z'%标量“与”用&& disp(cha

21、r(abs('a') +abs(c) -abs('A');elseif c>='a' && c<='z' disp(char(abs('A') +abs(c)- abs('a');elseif c>='0' && c<='9' disp(abs(c)-abs('0');else disp(c);end%setstr用char代替,setstr将淘汰输入一个字符:aA输入一个字符:Bb输入一个字符:

22、5 5输入一个字符:&&2switch语句 根据表达式的取值,分别执行不同的语句。switch 表达式case 表达式1 语句组1case 表达式2 语句组2 case 表达式m 语句组motherwise 语句组nend当任意一个分支的语句执行完后,直接执行switch语句的下一句。例4.5(switch case)打折销售 p63某商场对商品实行打折销售,标准如下(价格用price表示): price < 200没有折扣 200 price < 5003%折扣 500 price < 10005%折扣 1000 price < 25008%折扣 2500 price < 500010%折扣 5000 price14%折扣输入所售商品的价格,求其实际销售价格。price=input('输入商品价格:'); switch fix(price/100) case 0,1 %

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论