實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章)_第1頁
實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章)_第2頁
實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章)_第3頁
實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章)_第4頁
實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章)_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、數(shù)學(xué)軟件課內(nèi)實驗2013161431001713信科273王平李倩15實驗03 選擇結(jié)構(gòu)程序設(shè)計(第4章 MATLAB程序設(shè)計)一、實驗?zāi)康?. 掌握建立和執(zhí)行M文件的方法。2. 掌握利用if語句實現(xiàn)選擇結(jié)構(gòu)的方法。3. 掌握利用switch語句實現(xiàn)多分支選擇結(jié)構(gòu)的方法。4. 掌握try語句的使用。二、實驗內(nèi)容1.(用if)求分段函數(shù)的值用if語句實現(xiàn),分別輸出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

2、&&x>=0&&x=2&&x=3 y=x2-5*x+6else y=x2-x-1end命令窗口中的運行結(jié)果:請輸入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)分別

3、用if語句和switch語句實現(xiàn)。(2) 要求輸入百分制成績后要判斷該成績的合理性,對不合理的成績應(yīng)輸出出錯信息。用if語句實現(xiàn):文本編輯器窗口中的程序: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<=6

4、9 disp('成績:D')elseif x<60 disp('成績:E')else disp('輸入內(nèi)容不符合規(guī)則,請輸入100以內(nèi)的整數(shù)!')end命令窗口中的運行結(jié)果:輸入一個百分制成績:x=78成績:C輸入一個百分制成績:x=54成績:E輸入一個百分制成績:x=83成績:B輸入一個百分制成績:x=63成績:D輸入一個百分制成績:x=209輸入內(nèi)容不符合規(guī)則,請輸入100以內(nèi)的整數(shù)!輸入一個百分制成績:x=98成績:A用switch語句實現(xiàn):文本編輯器窗口中的程序:grades=input('請輸入百分制成績:grades=&

5、#39;);switch fix(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('輸入內(nèi)容不符合規(guī)則,請輸入100以內(nèi)的整數(shù)!')end命令窗口中的運行結(jié)果:

6、3. 工資計算硅谷公司員工的工資計算方法如下:(1) 工作時數(shù)超過120小時者,超過部分加發(fā)15%。(2) 工作時數(shù)低于60小時者,扣發(fā)700元。(3) 其余按每小時84元計發(fā)。試編程按輸入的工號和該號員工的工時數(shù),計算應(yīng)發(fā)工資。文本編輯器窗口中的程序a=input('員工號: ');b=input('工時數(shù):');if b>=120 c=120*84+(b-120)*84*(1+0.15)elseif b<=60 c=b*84-700else c=b*84enddisp('工號為',num2str(a),'員工應(yīng)得工資為&#

7、39;,num2str(c) 命令窗口中的運行結(jié)果:員工號: 289工時數(shù):125c = 10563工號為289員工應(yīng)得工資為10563員工號: 89工時數(shù):98c = 8232工號為89員工應(yīng)得工資為8232員工號: 876工時數(shù):57c = 4088工號為876員工應(yīng)得工資為40884. 兩位數(shù)的加、減、乘、除四則運算設(shè)計程序,完成兩位數(shù)的加、減、乘、除四則運算,即產(chǎn)生兩個兩位隨機整數(shù),再輸入一個運算符號,做相應(yīng)的運算,并顯示相應(yīng)的結(jié)果。文本編輯器中的程序:x1=10+(99-10)*rand(1);x2=10+(99-10)*rand(1);m=fix(x1)n=fix(x2)x=inp

8、ut('輸入一個運算符:','s');switch x case '+' c=m+n; case '-' c=m-n; case '*' c=m*n; case '/' c=m/n; otherwise c='false'endc命令窗口中運行結(jié)果:m = 95n = 95輸入一個運算符:+c = 190m = 24n = 96輸入一個運算符:-c = -72m = 95n = 53輸入一個運算符:*c = 5035m = 81n = 22輸入一個運算符:/c = 3.68185.(

9、用trycatch)建立5×6矩陣,要求輸出矩陣第n行元素要求:當(dāng)n值超過矩陣的行數(shù)時,自動轉(zhuǎn)為輸出矩陣最后一行元素,并給出出錯信息。程序:A=input('輸入A的值:')n=input('輸入n的值:')try B=A(n,:);catch B=A(5,:);endBlasterr運行結(jié)果:輸入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

10、0.1493 0.2435 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)求分段函數(shù)的值用if語句實現(xiàn),分別輸出x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0時的y值。步驟:(1

11、) 點擊MATLAB主窗口的“文本編輯器”按鈕,彈出“文本編輯器”窗口。(2) 在其中輸入程序。(3) (建議先將主窗口中的命令窗口提取出來),點擊“保存并運行”按鈕,系統(tǒng)提示用何文件名保存該程序,可用默認(rèn)文件名,或自己起文件名,然后程序運行。(4) 若程序無語法錯誤,則在命令窗口中顯示運行結(jié)果;否則顯示的是錯誤信息。如有錯,回到文本編輯器進(jìn)行修改再運行。本程序要用到input語句,在運行中輸入即時數(shù)據(jù)。注意給出提示信息,下面的參考結(jié)果中的輸入:x=是提示信息。用到標(biāo)量邏輯“與”運算符 “&&”。注意單個 “&” 是數(shù)組邏輯“與”。本程序要運行7次,因為要輸入7個數(shù)據(jù),

12、參考結(jié)果:本程序中第一行可為:x=input(輸入:x= );之后是ifelseifelseend語句,其中x是自變量,y是因變量。最后一行簡單輸入個y即可。注意其后不加分號,否則不顯示y的值。2.(用if、switch)輸出成績等級參考例4.5用switch。用于取整的函數(shù)有fix向0方向取整floor向-方向取整ceil向+方向取整round四舍五入到最鄰近的整數(shù)4. 兩位數(shù)的加、減、乘、除四則運算用switch。用if語句處理除數(shù)為0。產(chǎn)生兩個兩位隨機整數(shù)可參考下例中的相關(guān)用法:例4.19(遞歸與非遞歸)任意排列問題p74randperm(n)產(chǎn)生一個從整數(shù)1到整數(shù)n的任意排列。編寫函數(shù)

13、實現(xiàn)randperm(n)的功能,即給出一個由任意數(shù)組成的行向量,然后產(chǎn)生這個行向量元素的任意排列。%非遞歸,函數(shù)文件function Y=rndprm1(X)%RNDPRM1 用for產(chǎn)生一行向量的任意排列%RNDPRM1(X) 產(chǎn)生行向量X的任意排列m,n=size(X);if m>1 error(' RNDPRM1只接受列向量的輸入');endY= ; %從一個空矩陣開始l=n; %X的元素個數(shù)for i=1:n k=1+fix(l*rand);%隨機選擇Y的下一個元素的位置,rand等價于rand(1),0<rand<1 x=X(k); %被選擇的元素

14、 Y=Y,x; %將x添加到Y(jié)中 X(k)= ; %從X中刪除x元素 l=l-1; %更新X的元素個數(shù)end5. 建立5×6矩陣,要求輸出矩陣第n行元素用trycatchend語句。可用隨機函數(shù)rand自動生成矩陣。四、教程:第4章 MATLAB程序設(shè)計(1/3)4.1 M文件 p564.1.1 M文件的分類用MATLAB語言編寫的程序,稱M文件,擴展名為m。M文件按調(diào)用方式分為:命令文件(Script File)函數(shù)文件(Function File)兩種文件的主要區(qū)別:(1) 命令文件無輸入?yún)?shù),無返回輸出參數(shù);函數(shù)文件可帶輸入?yún)?shù),可返回輸出參數(shù)。(2) 命令文件對工作空間中的變

15、量操作;函數(shù)文件中定義的變量為局部變量,執(zhí)行完時,它們被清除。(3) 命令文件直接執(zhí)行;函數(shù)文件要以函數(shù)調(diào)用的方式來調(diào)用它。例4.1(命令文件、函數(shù)文件)互換變量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:建立函數(shù)文件,取文件名fexch.mfunction x,y=fexch(a,b)%a,b為局部變量x=b; y=a;%調(diào)

16、用函數(shù)文件x=1:10;y=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) 菜單操作從“文件”菜單中選“打開”,屏幕出現(xiàn)“打開”對話框,再選要打開的M文件。(2) 命令操作在

17、命令窗口輸入:edit 文件名,打開指定的M文件。(3) 命令按鈕操作單擊工具欄上的“打開文件”按鈕,再從彈出的對話框中選所需的M文件。(4) 在當(dāng)前目錄窗口操作在當(dāng)前目錄窗口雙擊要打開的文件名。4.2 程序控制結(jié)構(gòu) p584.2.1 順序結(jié)構(gòu) 按照程序中語句的排列順序依次執(zhí)行,直到程序的最后一個語句。1數(shù)據(jù)的輸入(從鍵盤輸入) A=input(提示信息,選項);采用's'選項,允許用戶輸入一個字符串。A=input('輸入矩陣A:');xm=input('輸入姓名:','s');Axm輸入矩陣A:1,2,3;4,5,6輸入姓名:

18、Ling mingA = 1 2 3 4 5 6xm =Ling ming2數(shù)據(jù)的輸出 disp(輸出項)輸出項既可為字符串,也可為矩陣。例4.2(順序結(jié)構(gòu))求一元二次方程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程

19、序的暫停 pause(延遲秒數(shù))pause 暫停程序,按任一鍵程序繼續(xù)執(zhí)行。 Ctrl+c 強行中止程序的運行。4.2.2 選擇結(jié)構(gòu) p601if語句(3種格式) (1) 單分支if語句if 條件 語句組end 條件成立,執(zhí)行語句組;否則不執(zhí)行語句組。 (2) 雙分支if語句if 條件 語句組1else 語句組2end 條件成立,執(zhí)行語句組1;否則執(zhí)行語句組2。例4.3(if else)計算分段函數(shù)的值p61clc;x=input('輸入x的值: '); if x=10 y= cos(x+1)+sqrt(x*x+1);else y=x*sqrt(x+sqrt(x);endy輸入

20、x的值: 10y = 10.0543輸入x的值: 5y = 13.4500(3) 多分支if語句if 條件1 語句組1elseif 條件2 語句組2 elseif 條件m 語句組melse 語句組nend語句用于實現(xiàn)多分支選擇結(jié)構(gòu)。例4.4(if elseif)字符轉(zhuǎn)換輸出 p62輸入一個字符:若為大寫字母,則輸出其小寫字母;若為小寫字母,則輸出其大寫字母;若為數(shù)字字符,則輸出其對應(yīng)的數(shù)值;若為其他字符,則原樣輸出。c=input('輸入一個字符:','s');if c>='A' && c<='Z'%標(biāo)

21、量“與”用&& disp(char(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將淘汰輸

22、入一個字符:aA輸入一個字符:Bb輸入一個字符:5 5輸入一個字符:&&2switch語句 根據(jù)表達(dá)式的取值,分別執(zhí)行不同的語句。switch 表達(dá)式case 表達(dá)式1 語句組1case 表達(dá)式2 語句組2 case 表達(dá)式m 語句組motherwise 語句組nend當(dāng)任意一個分支的語句執(zhí)行完后,直接執(zhí)行switch語句的下一句。例4.5(switch case)打折銷售 p63某商場對商品實行打折銷售,標(biāo)準(zhǔn)如下(價格用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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論