【正文】
所有編號是 2的倍數(shù)的房間 “相反處理 ”,第三個服務(wù)員把所有編號是 3 的倍數(shù)的房間作 “相反處理 ”, …… ,以后每個服務(wù)員都是如此。 [練習(xí)及作業(yè) ]: 1. 輸入 10 個整數(shù),把這 10 個數(shù)按從小到大的順序排列。 請編程輸入一串明文和密鑰,輸出其密文。它非常簡單,就是對字母表中的每個字母,用它之后的第 3 個字母來代換。1234567839。 s:=s1+s2。 s2:=39。{i 的值為 1} + 運算符 將兩個字符串連接起來 s1:=39。 39。 39。Honest Abe Lincoln39。, S, 8)。 Insert(39。 } Insert(s1, S, w) 過程 將 s1 插到 s 中第 w位 S := 39。 { 39。 Delete(s,8,4)。} Delete(s,w,k) 過程 在 s 中刪除從第 w 位開始的k 個字符 s := 39。{s=39。 str(i,s)。 write(k)。123439。k,code:integer。3456739。 s1:=copy(s,3,5)。{l 的值為 9} copy( s,w,k) 函數(shù) 復(fù)制 s 中從 w開始的 k 位 字符串 s:=39。12345678939。 ………. For i:=1 to 20 do s1[i]:=chr(64+i)。如: var hisname:string[15]。 2.字符串賦值語句 賦值語句可應(yīng)用于字符串類型,它表示計算右部字符串表達式的值,并將結(jié)果賦予左部字符串變量。如果兩個字符串長度不等,但短字符串與長字符串前面的字符逐個相等,則認為短字符串小于長字符串。 可使用關(guān)系運算符 =,=,=,比較任意兩個字符串的大小,這些運算符的優(yōu)先級別比連接符“ +”號低,要注意這點,該加括號的地方要加括號。運算符主要是 +,用來進行字符串的連接。 NewLine:string[2]=1310。 FalseString:string[5]=?no?。 字符串類型常數(shù)定義要規(guī)定字符串類型及所取的初始值,形式為: const 類型標(biāo)識符:字符串類型 =字符串常數(shù); 如: const Password:string[7]=?private?。 splitline=??。字符串常數(shù)定義的一般形式為: const 常數(shù)標(biāo)識符 =字符串常數(shù); 其中字符串常數(shù)是用單引號括起的字符串序列。另外允許長度為 0 的空串 {此時字符串的存儲仍然要一個字節(jié),用來存放其長度字符 },但字符類型必須也只能有一個字符。如‘ A’可看作是字符,也可視為 字符串。 也可以直接用系統(tǒng)函數(shù)來求字符串的長度,如 length(myname)。由于系統(tǒng)允許對一個字符串變量進行整體訪問,也可以對字符串變量中的各個字 符逐個地訪問,第二種訪問應(yīng)指定某字符在字符串中的位置即下標(biāo),如 myname[1]表示字符串變量 myname 的第一個字符, myname[2]表示第二個字符,依次類推。 3.字符串長度 為了記錄一個字符串的實際長度即有效字符的長度,系統(tǒng)在所有字符串變量前保留一個不可見字符,稱它為長度字節(jié),因此 turbopascal編譯器為每一字符串變量在內(nèi)存中所分配的字節(jié)數(shù)(一個字符占一個字節(jié))是其長度加 1。 myname, yourname, hisname: string[20]。 heraddress: address。 曾上例子可以寫出如下的字符串類型變量說明: var class1, class2: class。 定 義了三個字符串類型,最大長度為別是 10, 20, 255。 name=string[20]。 end. 二、字符串類型定義和變量說明 1.定義 type 變量標(biāo)識符 =string[常數(shù) ]; 還可以使用不帶字符串最大長度(即不用方括號)的字符串定義,此時取時大長度的缺省值 255,形式為: type 變量標(biāo)識符 =string。 for i:=1 to 40 do if not odd(a[i]) then write(a[i]:5)。 for i:=1 to 40 do if odd(a[i]) then write(a[i]:5)。 begin for i:=1 to 40 do read(a[i])。 var a:array[1..40] of integer。 [分析與算法選擇 ]: 判定一個數(shù)是奇數(shù)或偶數(shù)比較簡單,如果不是要分批輸出可以一邊輸入一邊判定,現(xiàn)在要分批輸入所以輸入跟輸出的過程要分開,輸入的 40 個數(shù)要先存放起來,通過數(shù)組很方便。 writeln(?Max=?,max)。 max:=a[1]。 begin randomize。 var a:array[1..100] of integer。選最大數(shù)時可用“擂臺比武”的思想,假設(shè)最大數(shù)放在變量 max里,如果 a[i]比 max大,則取而代之, i從 1 到 100 重復(fù)此操作。 end. 例 4_1:讓計算機隨機產(chǎn)生 100 個 0 到 1000 之間的整數(shù),輸出其中最大的數(shù)。 for i:=1 to 20 do write(b[i]:5:1)。{————計算總分 } b[i]:=b[i]/3。 {————從鍵盤上讀入 20 個同學(xué)的三次競賽成績 } for i:=1 to 20 do b[i]:=0。 readln。 i,j:integer。 var a:array [1..20,1..3] of integer。定義一個 20 個元素的一維數(shù)組來存放平均分。 {————最常用 的輸出方法:按矩陣形式輸出二維數(shù)組的值 } 例:競賽小組共有 20位同學(xué),這學(xué)期每位同學(xué)共參與了三項比賽,請統(tǒng)計每位同學(xué)的平均分。 writeln。 {————最常用的方法:從鍵盤讀入數(shù)據(jù)初始化二維數(shù)組 } for i:=1 to 10 do for j:=1 to 5 do a[i,j]:=0。 二維數(shù)組的輸入輸出要用雙重循環(huán)來控制: for i:=1 to 10 do{————控制行數(shù) } begin for j:=1 to 5 do read(a[i,j]){————第一行讀入 5 個元素 } readln。則固定列號為 4。 對某一列進行處理。則固定行號為 4。 對某一行進行處理。 (2).使用二維數(shù)組: 數(shù)組元素的指稱:數(shù)組名 [行號,列號 ]。 (1).二維數(shù)組的定義: var a: array[1..10,1..5] of integer; 其中: a 是數(shù)組名,由程序員自定; array 和 of 是定義數(shù)組的保留字;(這兩點和一維數(shù)組定義的格式一樣)中括號中的兩個范圍表示二維數(shù)組共有多少行、多少列(第一個范圍表示行數(shù),第二個范圍表示列數(shù));最后一個表示數(shù)組元素的類型,規(guī)定和一維數(shù)組一樣。二維數(shù)組在編程中多數(shù)用于描述二維的關(guān)系:如地圖、棋盤、城市 街道、迷宮等等。 一維數(shù)組在編程中多用于描述線性的關(guān)系:如一組數(shù);一組成績;一組解答等。)。通常也用循環(huán)結(jié)構(gòu)來完成這一功能: for i:=1 to 10 do write(a[i],39。 {————隨機產(chǎn)生 10 個 100 以內(nèi)的數(shù),賦給各數(shù)組元素 } (2)數(shù)組元素的輸出: 和數(shù)組元素的輸入相同,數(shù)組元素的輸出也不能由一個 write 語句直接完成。 {————數(shù)組元素 a[1]到 a[10]的值分別為 1 到 10;數(shù)據(jù)賦初值 } for i:=1 to 10 do a[i]:=0。下面是幾個常用輸入數(shù)組元素的例子: for i:=1 to 10 do read(a[i])。后面我們會專門介紹排序的算法的。 2.?dāng)?shù)組的使用 剛才我們已從代數(shù)上使用說明了數(shù)組使用的優(yōu)點,特別是要保存的量比較多且這些量之間又有某種聯(lián)系。 c:array[1..20] of char。 描述下標(biāo)范圍一般通過離散(有序)類型,如從一個整數(shù)到另一個整數(shù),或者從一個字符到另一個字符等。 var a,b:array1。 1.?dāng)?shù)組的說明 可以先通過 type 標(biāo) 識符 =array[下標(biāo)范圍 ] of 值類型; 然后再在變量說明里引用。 數(shù)組其實是一組相同值類型的變量的集合,這些變量共用一個名,彼此之間通過下標(biāo)來區(qū)別。從前面的變量名里我們已經(jīng)知道,a1,a2..ai彼此之間是相互獨立的,并沒有必然的聯(lián)系。指針類型是一種特殊的數(shù)據(jù)類型,它涉及到動態(tài)存儲分配。描述一個構(gòu)造類型特征的是其成分的類型和它的構(gòu)造方法。 Turbopascal的數(shù)據(jù)類型分為三種類型:簡單類型、構(gòu)造類型、指針類型?!?,現(xiàn)已知四人中三人說的是真話,一人說的是假話?!?C 說:“小偷肯定是 D。 8. 誰是小偷 ? 問題:警察局抓了 4 名嫌疑犯: A, B, C, D,其中一人是小偷,審問中 A說:“我不是小偷?!? ?。骸白畲筵蛾柡钚√?,洪澤湖第二,洞庭湖第三?!? 乙:“最大洪澤湖,最小洞庭湖,鄱陽湖第二,太湖第三。例:153=13+33+53 1~100 內(nèi)所有的素數(shù) 6. 要將一張 100 元的鈔票換成等值的 10 元、 5 元、 2元、 1元的小鈔票,要求每次換成 40張小鈔票,每種至少一張,編程輸出所有可能的換法,程序應(yīng)適當(dāng)考慮減少重復(fù)次數(shù)。,n)。 writeln(39。 end end。 if _____(2)_______ then begin write(________(3)________:5)。 j:=2。 begin n:=0。 [程序清單 ]: program ex7_2_2。 writeln(h) end. 1. 輸出四位數(shù)以內(nèi)(包括四位數(shù))是一個質(zhì)數(shù)的完全平方數(shù)的數(shù),并輸出總的個數(shù)。 if _____(2)_______ then h:=____(3)_______。 for i:=3 to 100 do begin j:=2。 var i,j,h:integer。 [練習(xí)及作業(yè) ]: 一、完善程序 1.求 100 以內(nèi)所有質(zhì)數(shù)的和。 {換行 } end。 {輸出一行的左半部分 } for ch:=pred(c) downto ?A? do write(ch)。 begin for c:=?A? to ?Z? do begin write(? ?:ord(?Z?)ord(c)+10)。 例 編寫程序輸出如下的字母塔: A ABA ABCBA ……………. ABCD……DCBA [分析 ]: 此題有兩個關(guān)鍵:一是確定每一行前導(dǎo)空格符的數(shù)目;二是按一定規(guī)律輸出英文大寫字母,共 26行。 四.多重循環(huán)(循環(huán)的嵌套) 當(dāng)程序中要用到多個循環(huán)時,如果這些循環(huán)是并列的關(guān)系,那么它們彼此之間的控制變量不相互影響。 For I:=1 to 100 do S:=S+I。變量標(biāo)識符在這里稱作是控制變量,必須是離散(有序)數(shù)據(jù)類型,如: for i:=1 to 100 do …. for ch:=?a? to ?z? do…. 3.示例 上面的例題我們可以用計數(shù)循環(huán)來實現(xiàn): begin s:=0。它 們的主要區(qū)別是 : while 是先判斷后執(zhí)行,而 repeat 是先執(zhí)行后判斷,因此 while 語句的循環(huán)體有可能一次也不執(zhí)行,而 repeat 語句至少執(zhí)行一次; 前者是當(dāng)條件滿足時執(zhí)行,而后者是當(dāng)條件不滿足時執(zhí)行; 前者的循環(huán)體是復(fù)合語句時要用 begin、 end,而后者卻不一定要用。 Until I=100。 Repeat S:=s+1。 begin s:=0。 3. 功能 反復(fù)執(zhí)行循環(huán)體直到布爾表達式的值為 true 時為止。 Writeln(s) End. [注意 ]: 在 while 循環(huán)體中一定要有相應(yīng)的語句使布爾表達式的值可能為 false,否則就會構(gòu)成死循環(huán)。 I:=I+1。I:=1。 Var S,I:integer。如果一開始就為布爾表達式就不成立(值為 FALSE),那么循環(huán)體一次也不執(zhí)行。 Do 后面的語句可以是單一語句也可以是復(fù)合語句,稱為循環(huán)體。直接簡便的方法是用循環(huán)語句來實現(xiàn)循環(huán)。 第 三講 循環(huán)結(jié)構(gòu)的程序設(shè)計 主要內(nèi)容: 掌握三種循環(huán)語句的格式和執(zhí)行過程; 掌握三種循環(huán)語句的異同,能夠根據(jù)實際情況靈活運用循環(huán)語句; 掌握累加器和累乘器和計數(shù)器; 掌握多重循環(huán)及循環(huán)的嵌套; 熟練運用循環(huán)語句解各種實際問題,如打印圖形、判斷素數(shù)等常用算法。請你編寫一程序,幫小 Q制訂出一種買筆的方案。已知商店里有三種鋼筆,它們的單價為 6 元、 5 元和 4元。 4. 編程輸入三角形的三條邊長,輸出三角形的面積,如果不