【正文】
用 for循環(huán)列舉出所有的兩位數(shù), x為循環(huán)變量; ② 用公式 a:= x div 10分離出 x的十位數(shù)字; ③ 用公式 b:= x mod 10分離出 x的個(gè)位數(shù)字; ④ 用公式 y:= b*10+a合成新數(shù) y; ⑤ 用式子 yx=36篩選出符合條件的數(shù) x并輸出。 readln。 Program ex4_9。 計(jì)算 n!,其中 n由鍵盤輸入。 ③ 返回步驟 1。故從第一項(xiàng)開始,當(dāng) s的值小于或等于 10時(shí),就繼續(xù)將下一項(xiàng)值累加起來。 //將下一項(xiàng)值累加到 s end。 程序如下 : program ex4_11。 r:=a mod b。 end. 例 利用格里高公式求 π。 n : =1。 writeln(pai : 10 : 8)。 雞兔同籠 ,頭 30,腳 90, 求雞兔各幾只? 第三節(jié) 直到循環(huán)( REPEAT語句) 用 while語句可以實(shí)現(xiàn)“當(dāng)型循環(huán)”,用 repeatuntil 語句可以實(shí)現(xiàn)“直到型循環(huán)”。 ③ repeat語句在布爾表達(dá)式的值為真時(shí)不再執(zhí)行循環(huán)體,且循環(huán)體可以是若干個(gè)語句,不需用begin和 end把它們包起來, repeat 和 until已經(jīng)起了 begin和 end的作用。 m: =n。求校體操隊(duì)至少是多少人 ? 【 分析 】 ① 設(shè)校體操隊(duì)為 X人 ,根據(jù)題意 X應(yīng)是 7的倍數(shù) ,因此 X的初值為 7,以后用inc(x,7)改變 X值; ②為了控制循環(huán) , 用邏輯變量 yes為真 (True) 使循環(huán)結(jié)束; ③如果諸條件中有一個(gè)不滿足 , yes 的值就會為假 (false),就繼續(xù)循環(huán)。 if x mod 3 1 then yes:=false。 readln end. 程序中對每個(gè) X值,都先給 Yes 賦真值,只有在循環(huán)體各句對 X進(jìn)行判斷時(shí),都得到“通過”(此處不賦假值)才能保持真值。 n : =1。 writeln(pai : 10 : 8)。 用輾轉(zhuǎn)相除法求兩個(gè)自然數(shù)的最大公約數(shù)。程序結(jié)構(gòu)如下: for n:=1 to 10 do begin ① N!的值 ?t ② 累加 N!的值 ?s end 顯然 ,通過 10次的循環(huán)可求出 1!,2!…,10!, 并同時(shí)累加起來 , 可求得 S的值。 //累加 n! end。t:=1。 例 一個(gè)炊事員上街采購 ,用 500元錢買了 90只雞 , 其中母雞一只 15元 ,公雞一只 10元 ,小雞一只 5元 ,正好把錢買完。 end。 begin for a : =1 to 9 do for b : =0 to 9 do for c : =0 to 9 do if a*a*a+b*b*b+c*c*c=a*100+b*10+c then write(a*100+b*10+c : 6)。 end。 var i,x :integer。 begin for i : =8 downto 1 do //總共要輸出 8行內(nèi)容 begin for j : =1 to 8i do write (39。)。例如: 4=2+2 6=3+3 8=3+5 98=17+79 輸入一個(gè)數(shù),不是偶數(shù)則輸出:“ is not even.”,否則輸出表示它的二個(gè)素?cái)?shù)。 var n,p,q,j : integer。 flagq : =true。)。問:有幾種換法?應(yīng)適當(dāng)考慮減少重復(fù)次數(shù)。將 4100中的所有偶數(shù)分別用兩個(gè)素?cái)?shù)之和表示。經(jīng)過若干次這樣的變換,一定會使 n變?yōu)?1。問有哪幾種換法? 百雞問題:一只公雞值 5元,一只母雞值 3元,而 1元可買 3只小雞。 39。 //p從 1開始枚舉 repeat p : =p+1。 充分大的偶數(shù)用 N表示,將它分成 P和 Q,使 N= P+Q。各環(huán)的作用如下: ( 1)外層環(huán)控制打印的行數(shù),此倒三角形共 8行,故外環(huán)的設(shè)置為遞減型循環(huán)。 39。 if xtrunc(sqrt(i)) then write(i:8)。而對于任意整數(shù) i,根據(jù)素?cái)?shù)定義,我們從 2開始,到 ,找 i的第一個(gè)約數(shù)。 begin for m : =100 to 999 do begin a : =m div 100。) 【 分析 】 根據(jù)題意,采用三重循環(huán)來求解。 源程序如下: programr ex4_18。 writeln(‘s=’,s:0:0)。 程序可改為: program ex4_17。 begin S:=0。 第四節(jié) 多重循環(huán)結(jié)構(gòu) 當(dāng)一個(gè)循環(huán)的循環(huán)體中又包含循環(huán)結(jié)構(gòu)程序時(shí),我們就稱之為循環(huán)嵌套。 for 循環(huán)在大多數(shù)場合也能用 while和 repeatuntil循環(huán)來代替。 f : =f。 var f : integer。 until yes。 begin x:=0。 end. 例 校體操隊(duì)到操場集合 ,排成每行 2人 ,最后多出 1人 。 Program ex4_13。 until 布爾表達(dá)式 。 輸入任一的自然數(shù) A, B, 求 A , B的最小公倍數(shù)。 f : =f。 Var n,f : integer。 end。)。 //輸出結(jié)果 end. 例 求兩個(gè)正整數(shù) m和 n的最大公約數(shù)。 //n表示項(xiàng)數(shù) begin s : =。 while語句的特點(diǎn)是:先判斷,后執(zhí)行 。 a0=0, a1=1, a2=a1+a0, a3=a2+a1, …… , an=an1+an2;如 0,1,1,2,3,5,8,13,21,…… 第二節(jié) 當(dāng)語句( WHILE語句) WHILE循環(huán) 對于 for循環(huán)有時(shí)也稱為計(jì)數(shù)循環(huán),當(dāng)循環(huán)次數(shù)未知,只能根據(jù)某一條件來決定是否進(jìn)行循環(huán)時(shí),用 while 語句或 repeat語句實(shí)現(xiàn)循環(huán)要更方便。 s : =0。 ① 為了確保 N=(a*a)在四位數(shù)( 1000~ 9999)范圍內(nèi),可確定 a在 32~ 99循環(huán); ② 計(jì)算 N=a*a;將四位數(shù) N拆分為兩個(gè)數(shù) n1和 n2; ③ 若滿足條件 (n1+n2)*(n1+n2)= N 就輸出 N 。 b := x mod 10。 lastx : =x。 例 已知一對兔子,每個(gè)月可以生一對小兔,而小兔經(jīng)過一個(gè)月生長后也可每月生一對小兔。 //輸出 n!的值