版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、循環(huán)結構程序設計第 1 節(jié) For 循環(huán)程序實例【問題描述】計算一副撲克牌的點數(shù),其中牌A為1點,牌J、Q、K分別為11、12、13點,大、小 王不算點?!締栴}分析】根據(jù)題意,要計算一副撲克牌的點數(shù),可以先求出一種花色牌的點數(shù)和,再乘以4即可。 進一步分析,求一種花色牌的點數(shù)和,即是求113的連續(xù)自然數(shù)之和。我們用S表示 所求數(shù)的和,用T表示加數(shù),這樣可以讓T從1變化到13,每次讓T不斷加入到S中, 就可以求出S的值,最后乘以4即可?!舅惴ㄔO計】自然語言1置初值,即S=0, T=1;2使S=S+T,所求出的和仍放入S中;3使T增加1,即T=T+1;4如果T小于等于13,轉第二步,否則轉第五步;
2、5輸出計算結果。程序設計】程序清單program ex3_1;vars,t:integer;begins:=0; S置初值為0for t:=1 to 13 do For循環(huán)語句s:=s+t;writeln(total:,s*4);end.運行示例 total:364【知識拓展】1在程序處理過程中,經(jīng)常需要對某一條或一組語句重復執(zhí)行多次,以最終完成某項 任務,這就是循環(huán)。對于重復次數(shù)已知, 而不依賴循環(huán)中語句的結果, 常用計數(shù)循環(huán) (f or / to /do語句)。2for循環(huán)語句格式:格式一:for控制變量:=初值to終值do循環(huán)體語句;格式二:for控制變量:=初值downto終值do循環(huán)
3、體語句;其中for、to、downto、do為保留字,do后面的語句稱為循環(huán)體。其中循環(huán)控制變量 可以是整型、字符或布爾型,但不能為實型。一般地,可以是順序類型數(shù)據(jù)。 初值、終值表達式通常要與控制變量的類型相同。在for語句中如果使用的是to,稱為遞增型計數(shù)循環(huán)語句,如果使用的是downto,稱為遞減型計數(shù)循環(huán)語句。3For語句的執(zhí)行過程: 先將初值表達式的值計算出來并賦給循環(huán)控制變量。2判斷循環(huán)控制變量的值是否已“超過”終值(對于遞增型循環(huán)來說,“超過” 是指“大于”;對遞減型循環(huán)來說,“超過”是指“小于”)。如已超過,則跳到步驟 。3如果未超過終值,則執(zhí)行do后面的語句(稱為循環(huán)體)。4循
4、環(huán)變量遞增(或遞減)。5返回執(zhí)行步驟。6循環(huán)結束,執(zhí)行for循環(huán)下面的一個語句4使用For語句的的注意事項:1循環(huán)控制變量必須為順序類型。例如,可以是整型、字符型、布爾型,不能為實型, 如:for i=3.5 to 8.5 do write(i)是錯誤的。2循環(huán)控制變量的值遞增或遞減的規(guī)律是:若是遞增型循環(huán),則按Succ函數(shù)規(guī)律變化;若是遞減型循環(huán),則按Pred函數(shù)規(guī)律變化。例如:for k:=atozdo write(k)將按順序打印出26個小寫英文字母“abedz”。3循環(huán)體可以是一條基本語句,也可以是一條復合語句。例如:for j:=1 to n dobeginreadln(x);wre
5、teln(x+1)end;循環(huán)語句的范圍直到end才結束4循環(huán)控制變量不得在循環(huán)體內再被賦值。例如:for x;=1 to 10 dobegi nx:=2*z+1;end;是錯誤的。5循環(huán)控制變量的初值和終值一經(jīng)確定,循環(huán)次數(shù)就確定不變了。循環(huán)的次數(shù)可用如下公式計算:0若初值終值遞增型循環(huán)的循環(huán)次數(shù)=Ord(終值)-Ord(初值)+1若初值w終值0若初值終值Ord(初值)-(終值)+1若初值終值【同步練習】1宰相的麥子:相傳古印度宰相達依爾,是國際象棋的發(fā)明者。有一次,國王因 為他的貢獻要獎勵他,問他想要什么。達依爾說:“只要在國際象棋棋盤上(共64格)擺上這么些麥子就行了:第一格一粒,第二格
6、兩粒,后面一格的麥子總是前一格 麥子數(shù)的兩倍,擺滿整個棋盤,我就感恩不盡了?!眹跻幌?,這還不容易。于是令人 扛來一袋麥子,可很快用完了,又扛來一袋,很快用完了國王很奇怪,請你幫國王8計算一下,要多少麥子。(1立方米的麥子約為1.42X10粒)問題分析:對于編程類問題的描述,要特別注意正確、全面地理解題意,要學會從描述性語言中抽遞減型循環(huán)的循環(huán)次數(shù)=象出具體的數(shù)據(jù),并建立數(shù)學模型。在本題中根據(jù)國際象棋棋盤上共有64格,第,后面一格的麥子總是前一格麥子數(shù)的兩倍 ”的題意,我們可以建立數(shù)學模型: 第一格為2。, 第二格為21, 第三格為2,第64格為263,設64格中應放麥子數(shù)為S,則可用下面的公
7、式表示:S= 20+21+22+23+2631立方米的麥子約為1.42X108粒,那么S粒麥子的體積T為:T=S/(1.42X108)立方米。這樣我們將問題轉化為一般數(shù)學模型, 再根據(jù)數(shù)學模型寫出算法設計, 再寫出具體程序就水道渠成。程序清單program p3_1_2(input,output);varn,s,t:integerbegins:=0;for n:=0 to 63 dos: =s+2An;t:=s/(1.42*10A8)writeln(s=,s,)writeln(t=,t );end.運行示例S=1.84467441E+19T=1.29906648E+112閱讀下面的程序,說明該
8、程序的作用程序清單program p3_1_3(input,output);var a,b,c:integer此處integer表示整型數(shù)據(jù)格一粒,第二格兩粒,beg ingwriteln(請任意輸入一個數(shù):);readl n(b);for c:=1 to 5 dobegi nread(a);if ab the n b:=a;end;writeln(最后的值是:,b:5);end.運行示例請任意輸入一個數(shù):6/4/7/13/8/11/最后的值是:13第 2 節(jié)當循環(huán)程序實例【問題描述】農場主的預算報告放暑假學校組織夏令營來到一個農場,農場主熱情的接待了他們。在參觀時,同學們發(fā)現(xiàn)在農場的左上角圈
9、出了一塊地方,這兒陽光充足,通風也不錯,但卻什么也沒有,覺得很奇怪。農場主告訴大家因為農場四周由許多小朋友因沒錢交學費而綴學,所以決定 引進品種不錯的雌雄一對小白兔, 在這飼養(yǎng)。小白兔需經(jīng)過一個月才能長大,長大后每 個月都生雌雄一對小白兔。想等小白兔繁殖到1000對的時候,在分發(fā)給周圍貧困的人, 希望能幫助他們重新進入課堂?,F(xiàn)正在寫一份預算報告,其中預計所需時間卻卻沒算出 來。同學們現(xiàn)在就讓我們來幫助這位好心的農場主算出時間?!締栴}分析】這問題從表面來看好象沒有什么規(guī)律,不妨設計一張表格來推算一下月份123456兔子數(shù)(對)12481632因為第一個月小白兔沒長大,所以兔子數(shù)是1對。到了第二個
10、月小白兔長大了,生 了一對小白兔,兔子數(shù)是2對。第三個月小白兔也長大了,大白兔是2對,它們都生了 一對小白兔,兔子數(shù)是4對。依此類推,發(fā)現(xiàn)除了第一個月,其它都是:前一個月 的兔子數(shù)X2 =本月兔子數(shù)。我們發(fā)現(xiàn)這又是一個循環(huán),直到兔子數(shù)為1000對的時 候結束??墒怯胒or語句顯然不行,因為我們不知道循環(huán)的次數(shù)。下面我們用當型循環(huán)(while/do語句)來編寫程序。農場主的預算可以描述如下:月份:=1;兔子數(shù):=1; 預定義第一個月的兔子數(shù)是1對while兔子數(shù)1000 do當兔子數(shù)小于1000對時進入循環(huán)beg in月份:=月份+1;兔子數(shù):=兔子數(shù)*2;end;【程序設計】程序清單 prog
11、ram p4-1(i nput,output);varmonth, rabbit: integer;beginmonth:= 1;rabbit:= 1;while rabbit0 DOBEGINWriteln (k);k:=k-1END;其中WHIIE和DO是PASCALS留關鍵字,是WHILE循環(huán)語句的組成部分。(2)保留關鍵字DO后面的“語法”只能是一條語句,稱為“循環(huán)體”;如果 循環(huán)體中需要包含多個語句則應該如上例所示,采用一條復合語句。2.WHILE循環(huán)的執(zhí)行功能當執(zhí)行到WHILE語句時(1)求出布爾表達式的值若布爾表達式的值為真,貝揪行循環(huán)體內的語句;若為“假”,執(zhí)行步驟4(3)重復
12、步驟1和2(4)循環(huán)結束,執(zhí)行循環(huán)后面的語句。3本例While循環(huán)的結構化流程圖如下:While 布爾表達式循環(huán)體語句【同步練習】1.周末小明遇到一個有趣的題目:找出四位整數(shù)abed中滿足下述關系的數(shù):(ab + cd)(ab + cd)= abed請你幫小明編寫一個程序,找出滿足條件的所有的數(shù)。問題分析: 這道題屬于搜索問題,因為是四位整數(shù),不難看出范圍是從10009999,所求的數(shù)究 竟在哪里,無法確定,只有在這個范圍內從小到大一個一個進行搜索, 對每一個數(shù)看它 的高兩位數(shù)與低兩位數(shù)和的平方是否與該數(shù)相等。ab和cd兩個數(shù)可以在abcd中將 高兩位與低兩位分離開來。我們可以這樣考慮,將ab
13、cd整除100,可得到高兩位ab如:abcd=1234,1234 div 100 = 12。有了ab,也就可用下面的式子把低兩位cd分離出來:abedabx100 = abedabOO = cd如:123412x100 = 12341200 = 34同學們仔細想想,在求解的過程中,條件都是一樣的,只是abed這個數(shù)不同。實際上 是在反復做同一個步驟。下面我們用當型循環(huán)來解這道題。程序清單Program xuhuan(input,output);Var i,m,n,k:integer;BeginI:=1000;給I賦值,即abed假設一個數(shù);While l=9999 do 判斷I(即abed)的
14、值是否超出范圍,;如果超過則不執(zhí)行循環(huán)Begin體中的語句,結束循環(huán);M:=l div 100; 分離出ab和ed兩個數(shù),如果符合條件,就寫出來;N:=I - m*100;K:=(m+n)*(m+n);If k=I thenWriteln(符合條件的四位整數(shù)是:,I);I:=I+1 I的值加1;End;End.運行示例符合條件的四位整數(shù)是:2025符合條件的四位整數(shù)是:3025符合條件的四位整數(shù)是:98012從n個數(shù)中挑選出最大的數(shù)。問題分析:本題可以借助于古代比武的 “打擂臺 ”來比喻: 先有任意一人站在擂臺上, 然后第二個人上來與它比武,勝者留在臺上,如此反復進行 下去,直到第n個人比完為
15、止(要注意:一共比n-1次) ,這樣最后留在臺上的人肯定 是最強者。設計算法:1從n個數(shù)中任選一數(shù)放在變量X中, 并設一計數(shù)器m=0(這里變量X就是比 武的擂臺,m=0表示尚未進行比較);2將下一個數(shù)與X中的數(shù)進行比較;3使m的值加1(計一次數(shù));4若m的值小于(n-1),則重新進行第步,否則執(zhí)行下一步;5輸出此時X的值,即為n個數(shù)中的最大者;6結束。程序清單PROGRAM 323(input,output);VARn,x,m,y:integer;BEGINwrite(輸入共需參加比較的總數(shù):);readln(n);write(先將n個數(shù)的第一個數(shù)輸入給變量x)readln(x);m:=0;w
16、hile m=y then x:=y; m:=m+1;END;write (n ,個數(shù)中最大的是:, x);END.運行示例輸入共需參加比較的總數(shù): 3先將n個數(shù)的第一個數(shù)輸入給變量x:1輸入一個其他參加比較的數(shù)2輸入一個其他參加比較的數(shù)103個數(shù)中最大的是:10第 3 節(jié) 直到循環(huán)程序實例【問題描述】 小明和小強是好朋友, 他倆都喜愛數(shù)學, 一個周末的下午他們進行了一場比賽, 題目是這樣的:任意給出兩個正整數(shù)M和N,求出M和N的最大公約數(shù),看誰算的又快又準。請你用計算機編寫一程序幫助他倆又快又準的計算出M和N的最大公約數(shù)。【問題分析】設用M作為被除數(shù),N作為除數(shù),R作為余數(shù)。這樣我們就可以用
17、輾轉相除法求出M和N的最大公約數(shù),輾轉相除法的具體算法如下:第1步:輸入M和N的值;第2步:求出M除以N所得的余數(shù)R;第3步:將N的值賦給M,R的值賦給N;第4步:若R=0,則M為所求得的最大公約數(shù),轉第5步,否則轉第1步;第5步:輸出最大公約數(shù)M的值。根據(jù)上述算法,我們可以用結構化流程(N-S)圖表示該算法:輸入M和N的值RT除以N的余數(shù)MT, kRR=0輸岀M的數(shù)值【程序設計】程序清單Program p3_3_1(input,output);varm, n,r:real;beg inwrite(輸入兩個正整數(shù):);readl n(m, n);if nm the nbeg in它的N-S圖如
18、下圖所示or:=n;n:=m;m:=r;end;repeatr:=m mod n;m:=n;n:=r;until r=0;writeln(m,和,n,最大公約數(shù)是:,m)end.運行示例輸入兩個正整數(shù):112 77112和77最大公約數(shù)是:7輸入兩個正整數(shù):12 3412和34最大公約數(shù)是:2【知識拓展】1在程序設計中,如果需要在執(zhí)行了某操作過程之后,再根據(jù)某一指定條件判定 是否重復執(zhí)行,應采用直到循環(huán)語句,即repeat-until語句實現(xiàn)循環(huán)。此語句的含義 是:“重復執(zhí)行循環(huán)體,直到指定條件為真時為止”。2Repeat-until語句格式:repeatuntil 循環(huán)體語句un til布爾
19、表達其中repeat和until為保留字。3它的執(zhí)行過程:1執(zhí)行循環(huán)體;2計算布爾表達式的值,若為false則返回,否則,退出循環(huán)體執(zhí)行下一 語句。4.它的特點是:先執(zhí)行(循環(huán)體),后判斷(布爾表達式)。repeat-u ntil是個整體,它是一個語句(構造型語句),在這個句中可以包含若干個語句,不要誤認為repeat是一個語句,until是一個語句;5. Repeat語句與while語句都可以實現(xiàn)循環(huán)結構,且可以相互轉化,但有四點不 同:Repeat語句While語句先執(zhí)行語句,后判斷條件。先判斷后執(zhí)行語句。指定語句可以是多條語句,無需 用beg in和end。指疋語句只能是一條語句或一條復
20、 合語句。當條件不成立時重復執(zhí)行。當條件成立時重復執(zhí)行。無論條件是否成立,總要執(zhí)行一 次指定語句序列。當條件一開始就不成立時,則不執(zhí)行 循環(huán)中的指定語句?!就骄毩暋?利用格里高公式求n。二=1+一-I+,直到最后一項的值小于10-6為止4357問題分析:解本題的關鍵就是求右邊數(shù)值序列的和,序列有明顯的特點:分母是從1開始的奇數(shù),來設置它們各項的符號位。畫出程序的N-S圖程序清單program ex2_34;varf:i nteger;n ,t,pai:real;beg inpai:=0;t:=1;n:=1.0;f:=1;repeatpai:=pai+1;n:=n+2.0;f:=-f;t:=
21、f/nun til abs(t)1e-6;pai:=pai*4;writln(pai=,pai:10:8);readl nend.pai.=0; L=1; n.=1; L=1pai:=pai+tn:=n+2.0f:=-ft:=f/nun til abs(t)max THEN max:=aELSEIF a=9avg:=s/i;writeln(最大值是:,max, 最小值是:,min);writeln(10個數(shù)和是:,s ,10個數(shù)平均值是:,avg:5:1 );END.運行示例please in put:1 2 3 4 5 6 7 8 9 10最大值是:10最小值是:110個數(shù)和是:5510個數(shù)
22、平均值是:5.5第 4 節(jié)多重循環(huán)程序實例【問題描述】一個炊事員上街采購,用500元錢買了90只雞,其中母雞一只15元,公雞一只10元,小雞一只5元,正好把錢買完。問母雞、公雞、小雞各買多少只?【問題分析】設母雞I只,公雞J只,小雞為k只,我們可列方程組:丿l+J+K=90顯然這是一個不定方程組,一般情況下有多解。 由方程可得I和J、K的取值范圍:0I90,0J90,0K90我們用窮舉法在范圍內搜索求解?!境绦蛟O計】程序清單program ex3_4_1;var i,j,k:integer;beginfor i:=0 to 90 dofor j:=0 to 90 dofor k:=0 to 9
23、0 doif(i+j+k=90)AND(15*i+10*j+5*k=500)thenwriteln(i:5,j:5,k:5);end;運行示例010 8018812682348342845085【知識拓展】1.以上的程序是一個三重的for循環(huán)嵌套。循環(huán)體由PASCA語句構成,當然也可以包含F(xiàn)OR語句,這就構成了循環(huán)的嵌套,形成多重循環(huán)2 為了減少無用的循環(huán)次數(shù),我們進一步研究題目,分析后,可以將循環(huán)次數(shù)縮小,這里I的值可以是0到33(因為如果500元錢全部用來買母雞,最多可以買500/1 5只),同樣J的值可以從0到50。知道I和J的值,又可求出K的值為90-I-J, 這樣又可減少循環(huán)嵌套的層
24、數(shù)。以上的程序可以優(yōu)化為:programr ex4_6;var i,j,k:integer;beginfor i:=0 to 33 dofor j:=0 to 50 dobegink:=90-i-j;if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);end;end.優(yōu)化后的程序運行速度會大大提高。 在以后設計程序時, 同學們不僅要注意如何解 題,還要盡量使程序優(yōu)化,提高運行速度?!就骄毩暋?試編寫能夠打印輸出如下圖形的程序:# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
25、 # # # # # # # # # # # # # # # # # # #問題分析:這道題屬于打印平面圖形問題。程序的設計如下:由兩個并列循環(huán)外加一個嵌套循環(huán)構成的。各環(huán)的作用為:1。外層循環(huán)控制打印的行數(shù),此倒三角形共需8行,故外層循環(huán)的設置為遞減型循環(huán)。2嵌套在外環(huán)內的第一個并列循環(huán)為空格輸出,根據(jù)圖形變化控制輸出不同數(shù)量的空格。3外環(huán)內第二個并列循環(huán)為控制三角形每行中“#”號的個數(shù)。程序清單program ex2_36;vari,j,k:integer;bginfor i:=8 downto 1 dobeginfor j:=1 to 8i dowrite();for k:=2*i-1
26、downto 1 dowriteln;end;readlnend.2.求s=1!+2!+3!+10!的值。問題分析:這個問題是求10自然數(shù)的階乘之和,可以用for循環(huán)來實現(xiàn),通過10次的循環(huán)可求 出1!,2!,10!,并同時累加起來,可求得S的值。而求T=N!,又可以用一個for循環(huán)來實 現(xiàn),構成了二重循環(huán)。程序清單program ex4_5;var t,s:real;i,j,n:integer;beginS:=0;for n:=1 to 10 dobegint:=1;for j:=1 to n dot:=t*j;S:=S+t;end;writeln(s=,s:0:0);end.3.求100999中的水仙花數(shù)。(若三位數(shù)ABC ABC=A+B+C,則稱ABC為水仙花數(shù)。333例如153,13+53+33=1+125+27=153,則153是水仙花數(shù)。) 問題分析: 根據(jù)題意,采用三重循環(huán)來求解。由于循
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 敘事性報告范文
- 2025年海西年貨運從業(yè)資格證考試題庫
- 2025年盤錦年貨運從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 變量與賦值課件
- 2025年桂林貨物從業(yè)資格證考試
- 2025年廣安年貨運從業(yè)資格證考試從業(yè)從業(yè)資格資格題庫及答案
- 鹽化肥復習課件人教
- 《放大器的噪聲》課件
- 外科護理學的發(fā)展
- 《訴訟時效》課件
- 智慧購物中心整體解決方案
- 壓力表以及壓力變送器-課件
- BIM技術咨詢管理服務招標投標文件技術標
- 最美動畫大師新海誠介紹PPT講義
- 送達地址確認書(完整版)
- 高中化學必修1 優(yōu)秀課件萃取
- 河北省邢臺市藥品零售藥店企業(yè)藥房名單目錄
- 外貿基礎知識考題(50題)
- 圍絕經(jīng)期異常子宮出血專家共識55張課件
- 四川省綿陽市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細
- 光伏電站數(shù)據(jù)接入信息表
評論
0/150
提交評論