【正文】
EPEAT語句后,即進入循環(huán)體,順序執(zhí)行循環(huán)體內(nèi)的語句。(2)遇到UNTIL語句后,求布爾表達式的值。若值為假,則返回步驟1;若為真,執(zhí)行步驟3(3)循環(huán)結(jié)束,執(zhí)行UNTIL后面的下一條語句。第六章數(shù)組與字符串定義:var a:array[]of integer;其中:a是這一批數(shù)據(jù)的名稱,稱為數(shù)組名;array、of是定義數(shù)組的保留字;中括號中的數(shù)字是數(shù)據(jù)編號的下限和上限,財時也說明了數(shù)據(jù)的個數(shù)(上限下限);最后一個是數(shù)據(jù)的基類型,如integer,char,real,boolean。數(shù)組元素的輸入:數(shù)組名代表的并不是一個變量,而是一批變量,因而,不能直接整個數(shù)組讀入,而是要逐個數(shù)組元素讀入,通常用循環(huán)結(jié)構(gòu)來完成這一功能。下面是幾個常用輸入數(shù)組元素的例子:for i:=1 to 10 do read(a[i]);{從鍵盤讀入數(shù)組元素的值;最常用的方法}for i:=1 to 10 do a[i]:=i;{數(shù)組元素a[1]到a[10]的值分別為1到10;數(shù)據(jù)賦初值}for i:=1 to 10 do a[i]:=0;{數(shù)組元素清0;最常用的數(shù)據(jù)初始化的方法}for i:=1 to 10 do a[i]:=random(100);{隨機產(chǎn)生10個100以內(nèi)的數(shù),賦給各數(shù)組元素}數(shù)組元素的輸出:和數(shù)組元素的輸入相同,數(shù)組元素的輸出也不能由一個write語句直接完成。同樣要逐個數(shù)組元素輸出。通常也用循環(huán)結(jié)構(gòu)來完成這一功能:for i:=1 to 10 do write(a[i],39。39。);{數(shù)組元素之間用空格分隔}writeln;數(shù)組的應(yīng)用:例1:從鍵盤輸入10個數(shù),將這10個數(shù)逆序輸入,并求這10個數(shù)的和,輸出這個和。program p1;var a:array[]of integer;i,s:integer;begin for i:=1 to 10 do read(a[i]);for i:=10 downto 1do write(a[i],39。39。);writeln;s:=0;for i:=1 to 10 do s:=s+a[i];writeln(39。s=39。,s);end.例2:用篩法求100以內(nèi)的素數(shù)(質(zhì)數(shù))。分析:素數(shù)是除了1和它本身以外沒有其它約數(shù)的數(shù)。用篩法求素數(shù)的方法是:用質(zhì)數(shù)篩去合數(shù):從第一個素數(shù)2開始,把它的倍數(shù)去掉;這樣2以后的第一個非0數(shù)就一定也是素數(shù),把它的倍數(shù)也刪了…重復(fù)這個刪數(shù)過程,直到在所找到的素數(shù)后再也找不到一個非0數(shù)。把所有非0數(shù)輸出。program p2;var a:array[]of integer;i,j,k:integer;begin for i:=1 to 100 do a[i]:=i;a[1]:=0;i:=2;while i=100 do begin k:=i;while k=100 do begin k:=k+i;a[k]:=0;end;{上面將所有a[i]的倍數(shù)清0}i:=i+1;while a[i]=0 do i:=i+1;{查找接下來的第一個非0數(shù)}end;for i:=1 to 100 do if a[i]0 then write(a[i],39。39。);end.一維數(shù)組在編程中多用于描述線性的關(guān)系:如一組數(shù);一組成績;一組解答等。數(shù)組元素只有一個下標,表明該元素在數(shù)組中的位置。二維數(shù)組在編程中多數(shù)用于描述二維的關(guān)系:如地圖、棋盤、城市街道、迷宮等等。而二維數(shù)組元素有兩個下標:第一個下標表示該元素在第幾行,第二個下標表示在第幾列。:var a:array[,]of integer;其中:a是數(shù)組名,由程序員自定;array和of是定義數(shù)組的保留字;(這兩點和一維數(shù)組定義的格式一樣)中括號中的兩個范圍表示二維數(shù)組共有多少行、多少列(第一個范圍表示行數(shù),第二個范圍表示列數(shù));最后一個表示數(shù)組元素的類型,規(guī)定和一維數(shù)組一樣。如上例,定義了一個二維數(shù)組a,共有10行5列。:數(shù)組元素的指稱:數(shù)組名[行號,列號]。如第三行第四個元素:a[3,4]。對某一行進行處理。如累加第4行的數(shù)據(jù)。則固定行號為4。如:for i:=1 to 5do s:=s+a[4,i];對某一列進行處理。如累加第4列的數(shù)據(jù)。則固定列號為4。如:for i:=1 to 10 do s:=s+a[i,4];二維數(shù)組的輸入輸出要用雙重循環(huán)來控制:for i:=1 to 10 do{控制行數(shù)}begin for j:=1 to 5do read(a[i,j]){第一行讀入5個元素}readln;{讀入一個換行符}end;{最常用的方法:從鍵盤讀入數(shù)據(jù)初始化二維數(shù)組}for i:=1 to 10 do for j:=1 to 5do a[i,j]:=0;{最常用的方法:將二維數(shù)組清0}for i:=1 to 10 do begin for j:=1 to 5do write(a[i,j]:4);writeln;end;{最常用的輸出方法:按矩陣形式輸出二維數(shù)組的值}例1:競賽小組共有20位同學(xué),這學(xué)期每位同學(xué)共參與了三項比賽,請統(tǒng)計每位同學(xué)的平均分。分析:定義一個20行3列的二維數(shù)組來存放這些成績。定義一個20個元素的一維數(shù)組來存放平均分。program p1;var a:array[,]of integer;b:array[]of real;i,j:integer;begin for i:=1 to 20 do begin for j:=1 to 3do read(a[i,j]);readln;end;{從鍵盤上讀入20個同學(xué)的三次競賽成績}for i:=1 to 20 do b[i]:=0;{先將平均分數(shù)組清0}for i:=1 to 20 do begin for j:=1 to 3do b[i]:=b[i]+a[i,j];{計算總分}b[i]:=b[i]/3;{計算平均分}end;for i:=1 to 20 do write(b[i]:5:1);{輸出平均分}writeln;end.。通常編程中使用字符串存放字符化了的數(shù)字數(shù)據(jù)。如高精度運算時存放操作數(shù)和運算結(jié)果。字符串可以看作是特殊的字符串?dāng)?shù)組來處理。當(dāng)然,它也有自已的特點。下面是字符串定義的格式:var s:string;s1:string[15];字符串定義時,如不指定長度,則按該類型的最大長度(255個字符)分配空間,使用時最大可用長度為255個;如果在中括號中給出一個具體的值(1255之間),則按這個值的大小分配空間。使用時,最大的可用長度即為該值。、輸出:字符串類型既可按數(shù)組方式輸入、輸出,也可直接輸入、輸出:readln(s);writeln(s);多個字符串輸入時以回車作為數(shù)據(jù)間的分隔符;每個readln語句只能讀入一個字符串。:操作類型作用返回值例子length(s)函數(shù)求字符串s的長度整型s:=39。12345678939。;l:=length(s);{l的值為9}copy(s,w,k)函數(shù)復(fù)制s中從w開始的k位字符串s:=39。12345678939。;s1:=copy(s,3,5);{s1的值是39。3456739。}val(s,k,code)過程將字符串s轉(zhuǎn)為數(shù)值,存在k中;code是錯誤代碼var s:string;k,code:integer;begin s:=39。123439。;val(s,k,code);write(k);{k=1234}str(i,s)過程將數(shù)值i轉(zhuǎn)為字符串si:=1234;str(i,s);write(s);{s=39。123439。}Delete(s,w,k)過程在s中刪除從第w位開始的k個字符s:=39。Honest Abe Lincoln39。;Delete(s,8,4);Writeln(s);{39。Honest Lincoln39。}Insert(s1,S,w)過程將s1插到s中第w位S:=39。Honest Lincoln39。;Insert(39。Abe39。,S,8);{39。Honest Abe Lincoln39。}Pos(c,S)函數(shù)求字符c在s中的位置整型S:=39。39。;i:=Pos(39。39。,S);{i的值為1}+運算符將兩個字符串連接起來s1:=39。123439。;s2:=39。567839。;s:=s1+s2;{39。1234567839。}第七章函數(shù)和過程procedure過程名(形式參數(shù):參數(shù)說明);{也可以不帶參數(shù)}var begin.end;過程名(實在參數(shù)表);例1:求n個自然數(shù)的最大公約數(shù);program gcd1;const maxn=100;var n,i,gcd:integer;a:array[]of integer;procedure enter;begin write(39。n=(100)39。);readln(n);for i:=1 to ndo repeat write(39。a[39。,i,39。]=39。);readln(a[i]);until a[i]0;end;procedure find_gcd(x,y:integer);{定義過程}var r:integer;begin r:=x mod y;while r0 do begin x:=y;y:=r;r:=x mod y;end gcd:=y;end;procedure print;begin writeln(39。GCD=39。,gcd);end;begin enter;gcd:=a[1];for i:=2 to ndo find_gcd(gcd,a[i]);print;end.function函數(shù)名(形參表):函數(shù)類型;{函數(shù)首部}var{局部變量說明部分}begin{函數(shù)體}.{函數(shù)語句}.函數(shù)名:=表達式end;:函數(shù)在語法上相當(dāng)于一個表達式,所以,調(diào)用時,函數(shù)不能獨立成為一個語句;它可以出現(xiàn)在任何表達式可以出現(xiàn)的地方。例如賦值語句的右邊:X:=函數(shù)名(實在參數(shù)表);{X的類型與函數(shù)類型必須一致}又,如果函數(shù)類型是boolean,則還可以出現(xiàn)在條件語句中,充當(dāng)條件表達式:if函數(shù)名(實在參數(shù)表)then…例3:編一程序,求從10名同學(xué)中選出3名代表,有幾種不同的選法。(公式:C(m,n)=m!/n!*(mn)!從m中選n)program zohe1;var m,n:integer;c:longint;function factor(x:integer):longint;{定義}var i:integer;p:longint;begin p:=1;for i:=1 to xdo p:=p*i;factor:=p;{這個語句必須}end;begin write(39。m,n=39。);readln(m,n);c:=factor(m)div(factor(n)*factor(mn));{調(diào)用}writeln(39。c(39。,m,39。,39。,n,39。)=39。,c);end.特別聲明:1:資料來源于互聯(lián)網(wǎng),版權(quán)歸屬原作者2:資料內(nèi)容屬于網(wǎng)絡(luò)意見,與本賬號立場無關(guān)3:如有侵權(quán),請告知,立即刪除。