版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
08信息奧賽暑假集訓(xùn)8.9上午復(fù)習(xí)第一環(huán)節(jié)
復(fù)習(xí)
1、基本知識(shí)(保留字、標(biāo)識(shí)符、函數(shù)、運(yùn)算符)
2、基本語(yǔ)句(輸入、輸入出、賦值)
3、分支(多路分支)
4、循環(huán)第二環(huán)節(jié)新課(數(shù)組)freepascal界面與基本操作Freepascal調(diào)試軟件界面介紹光標(biāo)所在行列滾動(dòng)塊關(guān)閉當(dāng)前文件當(dāng)前文件名稱新建文件:
方法1:單擊菜單“File-New”。
方法2:組合鍵:Alt+F,然后用方向鍵移動(dòng)到New,再按回車鍵。保存文件。方法1:F2方法2:菜單“File-Save”運(yùn)行:方法1:Ctrl+F9方法2:菜單“Run-Run”查看操作結(jié)果:方法1:Alt+F5方法
方法2:菜單“Debug-Userscreen”。退出:方法1:Alt+X
方法2:菜單“File-Open”打開文件:方法1:F3方法2:菜單“File-Open…”基本操作1、新建2、保存3、Ctrl+F9運(yùn)行4、Alt+F5切換到用界面看運(yùn)行結(jié)果編輯操作光標(biāo)的移動(dòng):方向鍵←→↑↓進(jìn)行左右上下移動(dòng)。Home:移動(dòng)到行首End:移動(dòng)到行尾。刪除:Delete:刪除光標(biāo)所在位置字符←Backspace刪除光標(biāo)左側(cè)的一個(gè)字符Ctrl+Y:刪除光標(biāo)所在行。斷行:1、前空一行:將光標(biāo)移動(dòng)到行首回車2、后空一行:將光標(biāo)移動(dòng)到行末回車3、一行分兩行:將光標(biāo)移動(dòng)至行中回車接行:將兩行內(nèi)容連接成一行(利用刪除鍵接行)1、將光標(biāo)移至第1行末,按Delete鍵2、將光標(biāo)移至第2行首,按←Backspace相關(guān)概念
保留字是PASCAL選定的,具有固定意義和用法的專用單詞或縮寫,這些單詞不允許作其它使用。
我們不能再用“program”、“const”來(lái)作為其它變量、常量等的名字。標(biāo)識(shí)符是標(biāo)識(shí)符的定義:以字母或下劃線開頭的字母、數(shù)字、下劃線序列,有效長(zhǎng)度為63個(gè)字符,并且大小寫等效??梢杂脕?lái)表示常量、變量、程序、函數(shù)等。標(biāo)準(zhǔn)Pascal語(yǔ)言中的保留字一共有36個(gè)可以分為六種類型:1、程序、函數(shù)、過(guò)程的符號(hào):program程序function函數(shù)procedure過(guò)程2、說(shuō)明部分的專用定義符號(hào)array定義數(shù)組const常量說(shuō)明file文件類型lable標(biāo)號(hào)說(shuō)明packed指令(記錄)var變量說(shuō)明record記錄類型set集合類型type類型說(shuō)明3、語(yǔ)句專用符號(hào)case分情況語(yǔ)句dodownto(見(jiàn)for)else(見(jiàn)if、case)for計(jì)數(shù)循環(huán)語(yǔ)句goto語(yǔ)句ifthenelserepeat直到型循環(huán)語(yǔ)句untilwhile當(dāng)循環(huán)語(yǔ)句forward函數(shù)指令4、運(yùn)算符號(hào)and與div整除in集體運(yùn)算符,判斷一個(gè)元素是否在集合中mod求余not非or或xor異或5、分隔符號(hào)begin塊標(biāo)記,開始
end塊標(biāo)記,結(jié)束6、空指針?lè)?hào)nil空指針常用的標(biāo)準(zhǔn)標(biāo)識(shí)符有:標(biāo)準(zhǔn)常量:falsetruemaxintmaxlongint標(biāo)準(zhǔn)類型:integerbooleanrealchartext標(biāo)準(zhǔn)文件:inputoutput標(biāo)準(zhǔn)函數(shù):absactanchrcoseofelonexplnodd
ordpredroundsinsqrsqrtsucctrunc標(biāo)準(zhǔn)過(guò)程:assigngetnewdisposepackputreadreadlnresetrewriteunpackwritewriteln
Maxint的值為32767標(biāo)識(shí)符的分類:⑴標(biāo)準(zhǔn)標(biāo)識(shí)符:指Pascal語(yǔ)言預(yù)先定義的標(biāo)識(shí)符,具有特殊含義。⑵用戶字定義標(biāo)識(shí)符:由用戶根據(jù)需要定義標(biāo)準(zhǔn)函數(shù)1. abs(x)求x的絕對(duì)值(|x|);Abs(-2)=2Abs(-2.0)=2.0000000000E+002. exp(x)求ex的值;(e為無(wú)理數(shù)2.71828…)3. frac(x)求x的小數(shù)部分;4. int(x)求x的整數(shù)部分(不舍入,函數(shù)值為實(shí)型);int(3.6)=3.05. ln(x)求以e為底的x的對(duì)數(shù)(logex);6. odd(x)判斷x的奇偶數(shù)(當(dāng)x為奇數(shù)時(shí)odd(x)值為true,否則為false);7. piπ值(3.1415926535897932…);8.
pred(x)求x(有序類型)的前趨值;9. succ(x)求x(有序類型)的后繼值;10. random隨機(jī)函數(shù),產(chǎn)生0~1的隨機(jī)值;[0,1)11. random(n)產(chǎn)生[0,x)的隨機(jī)數(shù)(n為word類型,先執(zhí)行randomize,才能得到隨機(jī)整數(shù));12. round(x)求x的四舍五入結(jié)果為整數(shù);如:Round(2.8)=3Round(-2.8)=-313. trunc(x)求x的整數(shù)部分(截掉小數(shù)部分,結(jié)果為整型);如:Trunc(3.85)=314. sqr(x)求x的平方值(x2);15. sqrt(x)求x的開平方根值();Sqr(4.0)=1.6000000000E+01Sqr(4)=1616. sin(x)求x的正弦函數(shù)(x為弧度);17. cox(x)求x的余弦函數(shù)(x為弧度);18. arctan(x)正切的反三角函數(shù)(x為數(shù)值);19. Ln(X)對(duì)數(shù)函數(shù)即求x的自然對(duì)數(shù)logex20. 冪運(yùn)算∵xy=eylnx,∴xy=Exp(y*ln(x)21. Ord(‘x’)序數(shù)函數(shù):,函數(shù)結(jié)果為整型,求字符對(duì)應(yīng)的ASCII碼如:Ord(‘A’)=6522. Chr(x)字符函數(shù),x為整型,函數(shù)結(jié)果為字符型,,求ASCII碼對(duì)應(yīng)得字符如:Chr(65)=’A’23. Upcase(‘x’)小寫字母轉(zhuǎn)為大寫字母,如:Upcase(‘a(chǎn)’)=’A’24. LPcase(‘X’)大寫字母轉(zhuǎn)為小寫字母,如:Upcase(‘A’)=’a’25. val函數(shù)將字符串轉(zhuǎn)換為整型值,如val(‘123’)=123a的b次冪可表示為exp(b*ln(a))還可能用power函數(shù),使用此函數(shù)前,要打開數(shù)學(xué)庫(kù),方法如下Pascal的System單元提供了兩個(gè)與隨機(jī)數(shù)有關(guān)的子程序:Randomize和Random。Randomize過(guò)程用于初始化隨機(jī)種子,其初始值取決于當(dāng)前的系統(tǒng)時(shí)鐘。Random函數(shù)用于獲取隨機(jī)數(shù),它有兩種調(diào)用形式:Random,返回一個(gè)0到1之間(不包括1)的隨機(jī)實(shí)數(shù);Random(N),返回0至N之間(不包括N)的隨機(jī)整數(shù),N為Word類型整數(shù)??梢栽囈幌拢S機(jī)產(chǎn)生幾個(gè)一定范圍內(nèi)的數(shù)變量常見(jiàn)類型整型integer、實(shí)型real、字符型char、布爾型boolean、字符串型string整型短整型Shortint-128~1271
整形Integer-32768~327672
長(zhǎng)整型Longint-2147483648~21474836474
字節(jié)型Byte0~2551
字型Word0~655352實(shí)型單精度實(shí)型Single1.5e-45~3.4e+3847~8
實(shí)型Real2.9e-39~1.7e+38611~12
雙精度實(shí)型Double5.0e-324~1.7e+308815~16Pascal的運(yùn)算符表達(dá)式是用運(yùn)算符號(hào)或小括號(hào)將常量、變量、函數(shù)連接成的式子。Pascal表達(dá)式中只有小括號(hào)。運(yùn)算符也稱為算符,算符的操作對(duì)象稱為操作數(shù)。運(yùn)算符按帶操作數(shù)的個(gè)數(shù)分為兩類:?jiǎn)文窟\(yùn)算符:對(duì)一個(gè)操作數(shù)操作。-(負(fù)號(hào)),+(正號(hào))雙目運(yùn)算符:對(duì)兩個(gè)操作數(shù)操作。根據(jù)運(yùn)算符運(yùn)算的意義不同分為算術(shù)運(yùn)算、布爾運(yùn)算、邏輯運(yùn)算、關(guān)系運(yùn)算。根據(jù)運(yùn)算符的優(yōu)先級(jí)可以將運(yùn)算符分為單目運(yùn)算、“乘”的關(guān)系運(yùn)算、“和”的關(guān)系運(yùn)算、關(guān)系運(yùn)算。算術(shù)運(yùn)算符一共有8個(gè)。操作數(shù)都是數(shù)值型,結(jié)果也是數(shù)值型。單目運(yùn)算符有(+)取正、(-)取負(fù)。雙目運(yùn)算符有(+)加、(-)減、(*)乘、(/)除、(DIV)取商、(Mod)取模。“/”左右的操作數(shù)是數(shù)值型,結(jié)果是實(shí)型數(shù)。Div左右的操作數(shù)是整型,結(jié)果是整型(兩數(shù)之商)。Mod左右的操作數(shù)是整型數(shù),結(jié)果是整型數(shù)(兩數(shù)相除之余)。在PASCAL只有上面8種數(shù)學(xué)運(yùn)算。其它的就只能利用這8種運(yùn)算的組合通過(guò)語(yǔ)句來(lái)實(shí)現(xiàn)。如a^2(a的平方)可以化成a*a。XY可寫成exp(y*ln(X))例:/(實(shí)數(shù)除)得到結(jié)果為實(shí)型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。DIV(整除)DIV它要求除數(shù)和被除數(shù)均為整型,結(jié)果也為整型。如10DIV2=5,10DIV3=3,5DIV10=0.-15DIV4=-3。DIV運(yùn)算只取商的整數(shù)部分,參與DIV運(yùn)算的兩個(gè)對(duì)象不能為實(shí)型。mod(求余),也只能用于整數(shù)運(yùn)算,結(jié)果為整數(shù)。例如:10mod4=2,-17mod4=-1,4mod(-3)=1,-4mod3=-1,即amodb=a-(adivb)*b。關(guān)系運(yùn)算符關(guān)系運(yùn)算是指同一類型的兩個(gè)數(shù)據(jù)進(jìn)行比較,結(jié)果是一個(gè)布爾類型值。用小括號(hào)、>、<、>=、<=、=、<>將兩個(gè)算術(shù)表達(dá)式連接起來(lái)的式子就稱為關(guān)系表達(dá)式(比較式)。
如:3+7>8,x+y<10,2*7<=13等都是關(guān)系表達(dá)式。關(guān)系表達(dá)式的值true,false2<387.5>=100‘A’<‘a(chǎn)’False<true邏輯運(yùn)算
邏輯運(yùn)算又叫布爾運(yùn)算,這是根據(jù)英國(guó)數(shù)學(xué)家BOOLE的名字得來(lái)的,因?yàn)槭撬紫冉⒘诉壿嬤\(yùn)算代數(shù)。邏輯運(yùn)算簡(jiǎn)單的說(shuō)就是判斷運(yùn)算。比如說(shuō):你是高中生嗎?、今天上課嗎?等等這樣的一般疑問(wèn)句。邏輯運(yùn)算的顯著特征就是運(yùn)算結(jié)果只有兩種,對(duì)或錯(cuò),是或者不是。
例如:A>BC<=DE=‘A’對(duì)于這樣的表達(dá)式結(jié)果只有兩種——對(duì)或錯(cuò)。這樣的表達(dá)式就叫做邏輯表達(dá)式布爾常量只有兩個(gè):TRUE(真)、FALSE(假)布爾運(yùn)算符布爾運(yùn)算是對(duì)布爾型數(shù)據(jù)進(jìn)行運(yùn)算,即操作數(shù)都是布爾型數(shù)據(jù),結(jié)果是布爾型。布爾型運(yùn)算符共有4個(gè):not(取反)and(與)or(或)xor(異或)not:結(jié)果是與操作數(shù)相反的布爾值and:兩個(gè)操作數(shù)都為真,結(jié)果為真,否則為假or:兩個(gè)操作有一個(gè)為真,結(jié)果為真,否則為假Xor:兩個(gè)操作數(shù)不一樣為真,否則為假1xor1=00xor0=01xor0=10xor1=1運(yùn)算符的優(yōu)先級(jí)1、內(nèi)層小括號(hào)先計(jì)算2、函數(shù)先求值3、單目運(yùn)算符(+,-,not)4、乘的關(guān)系雙目運(yùn)算符(*,/,div,mod,and)5、加的關(guān)系雙目運(yùn)算符(+,-,or)6、關(guān)系運(yùn)算符(<,<=,>,>=,=,<>)在同級(jí)運(yùn)算中,按從左到右的順序計(jì)算。(a>=0)and(a<100)imodj=0基本語(yǔ)句復(fù)習(xí)賦值語(yǔ)句X:=a+b計(jì)算機(jī)先計(jì)算賦值號(hào)右邊表達(dá)式的值,然后將表達(dá)式的值賦給變量名代表的變量。變量a注意:賦值語(yǔ)句在使用時(shí),要注意賦值號(hào)兩邊的數(shù)據(jù)類型必須賦值兼容,即類型相一致或相容。Vara:integer;數(shù)據(jù)類型相容的,我們也可以用一個(gè)例子來(lái)幫助理解。我們都喝過(guò)功夫茶,也喝過(guò)大杯茶。把功夫茶倒在大茶杯里,一般不會(huì)出什么問(wèn)題;但如果把大杯里的茶倒在功夫茶杯里呢?可能小茶杯裝不下大茶杯里的茶,茶“溢出”了。在PASCAL中也會(huì)出現(xiàn)這種情況。當(dāng)一種數(shù)據(jù)類型的取值范圍包含著另一種數(shù)據(jù)類型的取值范圍時(shí),就可能出現(xiàn)類型相容的情況。如實(shí)型與整型,整型、字符型與它們各自的子界類型……如果把整型值賦給實(shí)型變量,把整型子界值賦給整型變量,不會(huì)出錯(cuò);但如果反過(guò)來(lái),就會(huì)出現(xiàn)“溢出”,出錯(cuò)了。
read與readln的區(qū)別變量說(shuō)明
vara,b,c,d:integer;執(zhí)行結(jié)果
a
b
c
d
程序段一
read(a);readln(b,c);read(d);
1
2
3
6
程序段二
readln(a);read(b,c);read(d)1
6
7
8
輸入數(shù)據(jù)
12345678輸入語(yǔ)句write(輸出量表);{輸出后不換行}writeln(輸出量表);{輸出后換行}writeln;{輸出一個(gè)回車符}輸出量可以是:
變量。輸出變量的值。write(x,y);
表達(dá)式。輸出的是表達(dá)式的值。Write(1+3*a)
常量。直接輸出常量值。輸出語(yǔ)句Write(‘Iamastudent!’)Write(3.56)例題回顧已知某梯形的上底A,下底B,高H,求它的面積S定義變量輸入已知計(jì)算面積輸出面積Vara,b,h,s:real;read(a,b,h);S:=(a+b)*h/2;Write(‘s=’,s);Programzhlt;beginEnd.邏輯結(jié)構(gòu)為順序、選擇和重復(fù)(或循環(huán))簡(jiǎn)單的分支結(jié)構(gòu)程序設(shè)計(jì)簡(jiǎn)單的IF語(yǔ)句
一、格式
IF<布爾表達(dá)式>THEN語(yǔ)句;
IF<布爾表達(dá)式>THEN語(yǔ)句1ELSE語(yǔ)句2;布爾表達(dá)式語(yǔ)句二語(yǔ)句一then語(yǔ)句布爾表達(dá)式thenelse實(shí)例回顧輸入一個(gè)整數(shù)a,判斷是否為偶數(shù)。
(如果是偶數(shù)輸出"yes"否則輸出"no")。
programex_fz1;
Vara:integer;
begin
Write('a=');readln(a);
Ifamod2=0thenwriteln(‘yes’)
Elsewriteln(‘no’);
end.
給出三角形的三個(gè)邊長(zhǎng)A,B,C,求三角形面積.programexec2(input,output);
vara,b,c,s,area:real;
begin
readln(a,b,c);
if(a+b>c)and(b+c>a)and(c+a>b)then
begins:=(a+b+c)/2;
area:=sqrt(s*(s-a)*(s-b)*(s-c));
writeln(‘a(chǎn)rea=’,area:6:2);
end
else
begin
writeln(a:6:2,b:6:2,c:6:2);
writeln('inputdataerror');
end;
end.
提示:要判斷是否能構(gòu)成一個(gè)三角形如果s為三邊和的一半,那么面積為sqrt(s*(s-a)*(s-b)*(s-c))IF語(yǔ)句的嵌套
在if語(yǔ)句中,如果then子句或else子句仍是一個(gè)if語(yǔ)句,則稱為if語(yǔ)句的嵌套。
IF語(yǔ)句有三種嵌套形式:(1)、在THEN部分嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THENIF表達(dá)式2THENIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3ELSE語(yǔ)句2ELSE語(yǔ)句1第三層第二層第一層(2)、在ELSE部分嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THEN語(yǔ)句1ELSEIF表達(dá)式2THENIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3ELSE語(yǔ)句2
第三層第二層第一層(3)、前面兩種的綜合,即在THEN和ELSE部分都嵌套IF語(yǔ)句,格式是:IF表達(dá)式1THENIF表達(dá)式2THEN語(yǔ)句2ELSE語(yǔ)句2ELSEIF表達(dá)式3THEN語(yǔ)句3ELSE語(yǔ)句3必須要注意的一個(gè)問(wèn)題是:因?yàn)椋桑平Y(jié)構(gòu)的語(yǔ)句可以省略ELSE語(yǔ)句,這個(gè)時(shí)候就有可能出現(xiàn)ELSE個(gè)數(shù)少于IF語(yǔ)句的嵌套個(gè)數(shù)的情況,當(dāng)出現(xiàn)這種情況的時(shí)候只要記住一個(gè)規(guī)則就可以了:ELSE總是與它最近的THEN語(yǔ)句配對(duì)??!通過(guò)下面的這個(gè)簡(jiǎn)單的程序來(lái)理解這個(gè)規(guī)則:Y:=0;IFX>=0THENIFX>0THENY:=1;ELSEY:=-1;上面的程序有兩個(gè)IF語(yǔ)句,而且嵌套,但只有一個(gè)ELSE,屬于誰(shuí)呢?寫程序,根據(jù)輸入的值,輸出1、-1和零。根據(jù)輸入的x值,先分成x>0與x≤0兩種情況,然后對(duì)于情況x≤0,再區(qū)分x是小于0,還是等于0programex;varx:real;y:integer;beginwrtie('Inputx:');readln(x);
ifx>0theny:=1else{x≤0時(shí)}
ifx=0theny:=0elsey:=-1;writeln('x=',x:6:2,'y=',y);end.X>0X=0Y:=1Y:=-1Y:=0輸入x開始結(jié)束YY輸出x、y輸入年月求天數(shù)當(dāng)多分支選擇的各個(gè)條件由同一個(gè)表達(dá)式的不同結(jié)果值決定時(shí),可以用case語(yǔ)句實(shí)現(xiàn)。programday_case;varyear,month,days:integer;
begin
readln(year,month);
case
monthof
1,3,5,7,8,10,12:days:=31;
4,6,9,11:days:=30;2:if(yearmod400=0)or(yearmod100<>0)and(yearmod4=0)thendays:=29elsedays:=28;
end;
writeln('day=',day);
readln;
end.用case語(yǔ)句來(lái)寫31302928case語(yǔ)句當(dāng)多分支選擇的各個(gè)條件由同一個(gè)表達(dá)式的不同結(jié)果值決定時(shí),可以用case語(yǔ)句來(lái)實(shí)現(xiàn)。它的選擇過(guò)程,很象一個(gè)多路開關(guān),即由case語(yǔ)句的選擇表達(dá)式的值,決定切換至哪一語(yǔ)句去工作。在實(shí)現(xiàn)多分支控制時(shí),用case對(duì)某些問(wèn)題的處理和設(shè)計(jì),比用if語(yǔ)句寫程序更簡(jiǎn)潔、更清晰。
casemonthofCase表達(dá)式of
常量表1:語(yǔ)句1;
……
常量表n:語(yǔ)句n;
[else語(yǔ)句n+1];
end;格式說(shuō)明:常量表為有序類型數(shù)據(jù)。表達(dá)式要與常量類型一致。常量后的語(yǔ)句為一條語(yǔ)句。如果要完成多條語(yǔ)句功能,要將這些語(yǔ)句寫成復(fù)合語(yǔ)句。Case語(yǔ)句輸入兩個(gè)實(shí)數(shù),再輸入+、-、*或/號(hào),根據(jù)運(yùn)算符輸出這兩個(gè)數(shù)的和、差、積或商。Programxx;vara,b,s:real;operator:char;beginreadln(a,b);read(operator);
caseoperatorof
'+’:s:=a+b;'-’:s:=a-b;'*’:s:=a*b;'/’:s:=a/b;
end;
writeln(a,operator,b,'=’,s:5:4)end.
注意事項(xiàng)Case語(yǔ)句執(zhí)行表達(dá)式值相匹配的case常量所指向的那條語(yǔ)句,如果沒(méi)有相匹配的值,則執(zhí)行else后的語(yǔ)句n+1或什么也不做(無(wú)else語(yǔ)句)。Case常量必須惟一確定且必須與表達(dá)式同類型,每一個(gè)常量只能在常量表中出現(xiàn)一次且僅出現(xiàn)一次。表達(dá)式只能是序數(shù)類型。序數(shù)類型包括整型、字符型、布爾型、枚舉型、子界型。根據(jù)學(xué)生的成績(jī)給予相應(yīng)的等低,對(duì)應(yīng)關(guān)系如下:
90——100A
80——89B
60——79C
60以下D
析:利用case語(yǔ)句進(jìn)行程序設(shè)計(jì),關(guān)鍵在于巧妙地構(gòu)造情況表達(dá)式programchengji;
varn:integer;ch:char;
begin
write(‘inputthescore:’);
readln(s);
casendiv10of
10,9:ch:=‘A’;
8:ch:=‘B’;
7,6:ch:='C';
elsech:='D';
end;
writeln(n,'--',ch);
end.n值是整型n值是實(shí)型表達(dá)式的值是子界型表達(dá)式的值是子界型判斷輸入的字符是大寫、小寫、數(shù)字還是其它思考題例2根據(jù)x的值,求函數(shù)Y的值:
分析:利用case語(yǔ)句進(jìn)行程序設(shè)計(jì),關(guān)鍵在于巧妙地構(gòu)造情況表達(dá)式。本例中三種情況可用一個(gè)表達(dá)式區(qū)分出來(lái):Trunc(x/100)。因?yàn)閤在(0~100)之間時(shí)表達(dá)式值為0;x在[100,200)時(shí)表達(dá)式值為1;其余部分可用else子句表示
拓展題期未來(lái)臨了,班長(zhǎng)小Q決定將剩余班費(fèi)X元錢,用于購(gòu)買若干支鋼筆獎(jiǎng)勵(lì)給一些學(xué)習(xí)好、表現(xiàn)好的同學(xué)。已知商店里有三種鋼筆,它們的單價(jià)為6元、5元和4元。小Q想買盡量多的筆(鼓勵(lì)盡量多的同學(xué)),同時(shí)他又不想有剩余錢。請(qǐng)您編一程序,幫小Q制訂出一種買筆的方案。
分析:對(duì)于以上的實(shí)際問(wèn)題,要買盡量多的筆,易知都買4元的筆肯定可以買最多支筆。因此最多可買的筆為xdiv4支。由于小q要把錢用完,故我們可以按以下方法將錢用完:若買完xdiv4支4元錢的筆,還剩1元,則4元錢的筆少買1支,換成一支5元筆即可;若買完xdiv4支4元錢的筆,還剩2元,則4元錢的筆少買1支,換成一支6元筆即可;若買完xdiv4支4元錢的筆,還剩3元,則4元錢的筆少買2支,換成一支5元筆和一支6元筆即可。programpen;vara,b,c:integer;x,y:integer;beginwrite('x=');readln(x){輸入x}c:=xdiv4;{4元筆最多買的數(shù)目}y:=xmod4;{求買完c支4元筆后剩余的錢數(shù)y}
caseyof0:begina:=0;b:=0;end;1:begina:=0;b:=1;c:=c-1;end;2:begina:=1;b:=0;c:=c-1;end;3:begina:=1;b:=1;c:=c-2;end;end;writeln('a=',a,'b=',b,'c=',c);end.{a,b,c分別表示在買筆方案中,6元、5元和4元錢筆的數(shù)目}{x,y分別表示剩余班費(fèi)和買完最多的4元筆后剩的錢}循環(huán)語(yǔ)句(For)前言在Pascal語(yǔ)言中,循環(huán)結(jié)構(gòu)程序通常由三種的循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)。FOR循環(huán)、當(dāng)循環(huán)和直到循環(huán)。通常將一組重復(fù)執(zhí)行的語(yǔ)句稱為循環(huán)體,而控制重復(fù)執(zhí)行或終止執(zhí)行由重復(fù)終止條件決定。因此,重復(fù)語(yǔ)句是由循環(huán)體及重復(fù)終止條件兩部分組成。for語(yǔ)句的一般格式for<控制變量>:=<表達(dá)式1>to<表達(dá)式2>do<語(yǔ)句>;
遞增for<控制變量>:=<表達(dá)式1>downto<表達(dá)式2>do<語(yǔ)句>;遞減
其中for、to、downto和do是Pascal保留字。表達(dá)式1與表達(dá)式2的值也稱為初值和終值。對(duì)于for循環(huán)有時(shí)也稱為計(jì)數(shù)循環(huán),因?yàn)槲覀冇醚h(huán)控制變量來(lái)控制循環(huán)體執(zhí)行的次數(shù)。循環(huán)體執(zhí)行的次數(shù)是(初值和終值之差的絕對(duì)值+1),for循環(huán)的特點(diǎn)是我們明確知道循環(huán)體執(zhí)行的次數(shù)想一想:
如果想輸出6個(gè)*號(hào),下一行輸出5個(gè)#,以上動(dòng)作反復(fù)3次程序應(yīng)當(dāng)如何改動(dòng)Programfort1;Vari:integer;Begin
fori:=1to10do
writeln(‘******’);End.Programfort1_2;Vari:integer;Begin
fori:=1to3do
beginwriteln(‘******’);writeln(‘#####’);end;End.觀察一下i的變化情況再想一想:
如果想1到100之間的所有整數(shù),應(yīng)當(dāng)如何改動(dòng)Programfort2;Vari:integer;Begin
fori:=1to?do
write(?);End.反復(fù)做的事:輸出整數(shù)做的次數(shù):100如果想’a’到’z’之間的所有字符呢,應(yīng)當(dāng)如何改動(dòng)?想一想:
以下程序改動(dòng)后對(duì)循環(huán)體有什么影響Programfort1;Vari:integer;Begin
fori:=1to10do
writeln(‘******’);End.Programfort1;Vari:integer;Begin
fori:=10downto
1do
writeln(‘******’);End.Num:=0;Fori:=1to100doNum:=num+I;I<=100I:=1NUM:=NUM+IYNNUM:=0I:=i+1循環(huán)結(jié)構(gòu)流程圖求:1+2+…+100的和應(yīng)用舉例一
輸出1-100之間的所有偶數(shù)。
Programoushu(input,output);vari:integer;
begin
fori:=1to100do{用記數(shù)形循環(huán)來(lái)實(shí)現(xiàn)窮舉1~100之間的偶數(shù)}
ifimod2=0thenwrite(i:5);
writeln;end.
思考:我們還有什么方法來(lái)實(shí)現(xiàn)這個(gè)題目;輸出100-999中所有能被3或被5整除的數(shù)字;應(yīng)用舉例二求N!=1*2*3*…*N,這里N不大于10。分析:程序要先輸入N,然后從1累乘到N。
程序如下:
var
n,i:integer;{i為循環(huán)變量}
S:longint;{s作為累乘器}//思考:為什么要把S設(shè)置成longint類型
begin
write('Entern=');readln(n);{輸入n}
s:=1;//賦初值
fori:=2tondo{從2到n累乘到s中}
s:=s*i;
writeln(n,'!=',s);{輸出n!的值}
end.練習(xí)題1.編程找出四位整數(shù)abcd中滿足下述關(guān)系的數(shù)
(ab+cd)(ab+cd)=abcd提醒:這題屬于搜索問(wèn)題,四位數(shù),范圍從1000到9999,還要考慮到如何將四位數(shù)高兩位與低兩位分開。2.有一種Fibonaccl數(shù)列0,1,1,2,4,7...其規(guī)律為第一、二、三個(gè)數(shù)為0,1,1,從第四個(gè)數(shù)起,各數(shù)為其前面3個(gè)數(shù)之和,要求輸出此數(shù)列中前60個(gè)數(shù)。forj:=1to50dowrite('*');writeln;beginend;fori:=1to10doProgramex_forsc;Vari,j:integer;beginEnd.思考輸出如下圖形。12345行數(shù)13579個(gè)數(shù)WHILE循環(huán)格式:while<布爾表達(dá)式>do<語(yǔ)句>;
其意義為:當(dāng)布爾表達(dá)式的值為true時(shí),執(zhí)行do后面的語(yǔ)句。
Whilei<=100dobeginnum:=num+i;
i:=i+1;End;直到循環(huán)(REPEAT-until語(yǔ)句)用while語(yǔ)句可以實(shí)現(xiàn)"當(dāng)型循環(huán)",用repeat-until語(yǔ)句可以實(shí)現(xiàn)"直到型循環(huán)"。repeat-until語(yǔ)句的含義是:"重復(fù)執(zhí)行循環(huán),直到指定的條件為真時(shí)為止"。
直到循環(huán)語(yǔ)句的一般形式:
Repeat
<語(yǔ)句1>;
:
<語(yǔ)句n>;
until<布爾表達(dá)式>;
其中Repeat、until是Pascal保留字,repeat與until之間的所有語(yǔ)句稱為循環(huán)體。
repeat
num:=num+i;i:=i+1;untili>100;求100(包括)以內(nèi)所有數(shù)之和whilei<=100dobeginnum:=num+i;
i:=i+1;end;fori:=1to100donum:=num+i;repeatnum:=num+i;i:=i+1;
untili>100;思考:
從鍵盤輸入若干數(shù)字,對(duì)它們求和,直到從鍵盤讀入的數(shù)是#時(shí)結(jié)束Whilea<>‘#’dountila=‘#’三種循環(huán)結(jié)構(gòu)的比較以上我們已介紹了三種循環(huán)語(yǔ)句。一般說(shuō)來(lái),用for循環(huán)比較簡(jiǎn)明,只要能用for循環(huán),就盡量作用for循環(huán)。只在無(wú)法使用for循環(huán)時(shí)才用while循環(huán)和repeat-until循環(huán),而且while循環(huán)和repeat-until循環(huán)是可以互相替代的。for循環(huán)在大多數(shù)場(chǎng)合也能用while和repeat-until循環(huán)來(lái)代替。一般for循環(huán)用于有確定次數(shù)循環(huán),而while和repeat-until循環(huán)用于未確定循環(huán)次數(shù)的循環(huán)。當(dāng)一個(gè)循環(huán)的循環(huán)體中又包含循環(huán)結(jié)構(gòu)程序時(shí),我們就稱之為循環(huán)嵌套補(bǔ)充(1)inc(x)等同x:=x+1;(2)inc(x,n)等同x:=x+n;(3)dec(x)等同x:=x-1;(4)dec(x,n)等同x:=x-n;題一編寫程序,求100~1000之間能被7整除的數(shù),每行輸出10個(gè)。Programex34;BeginForx:=10to99doBegina:=xdiv10;b:=xmod10;y:=b*10+a;ify-x=36thenwriteln(x);End;End.解:①用for循環(huán)列舉出所有的兩位數(shù),x為循環(huán)變量;②用公式a:=xdiv10分離出x的十位數(shù)字;③用公式b:=xmod10分離出x的個(gè)位數(shù)字;④用公式y(tǒng):=b*10+a合成新數(shù)y;⑤用式子y-x=36篩選出符合條件的數(shù)x并輸出。有個(gè)兩位數(shù)x,將它的個(gè)位數(shù)字與十位數(shù)字對(duì)調(diào)后得到一個(gè)新數(shù)y,此時(shí)y恰好比x大36,請(qǐng)編程求出所有這樣的兩位數(shù)。題二把整數(shù)3025從中剪開分為30和25兩個(gè)數(shù),此時(shí)再將這兩數(shù)之和平方,(30+25)2=3025計(jì)算結(jié)果又等于原數(shù)。求所有符合這樣條件的四位數(shù)。解:設(shè)符合條件的四位數(shù)為N,它應(yīng)當(dāng)是一個(gè)完全平方數(shù),用(a*a)表示。
①為了確保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就輸出Nprogramexam35;varn,a,x,n1,n2:integer;beginfora:=32to99dobeginn:=a*a;n1:=ndiv100;{拆取四位數(shù)的前兩位數(shù)}n2:=n-n1*100;{拆取四位數(shù)的后兩位數(shù)}x:=n1+n2;ifx*x=nthenwriteln(n);end;readlnend.百錢買百雞:今有錢100元,要買100只雞,公雞5元一只,母雞1元
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程委托書甲方授權(quán)乙方實(shí)施項(xiàng)目3篇
- 方式買賣合同書的范本3篇
- 新版合同經(jīng)營(yíng)協(xié)議3篇
- 居民供水承包3篇
- 市場(chǎng)開發(fā)合作協(xié)議書范本3篇
- 旅游團(tuán)班車服務(wù)協(xié)議3篇
- 數(shù)碼攝像器材購(gòu)銷協(xié)議3篇
- 養(yǎng)豬場(chǎng)建筑工程監(jiān)理協(xié)議
- 農(nóng)業(yè)土地租賃合同:農(nóng)業(yè)生產(chǎn)用地
- 油氣管道設(shè)備租賃合同
- 中醫(yī)兒科常見(jiàn)疾病診療指南
- 三年級(jí)上冊(cè)語(yǔ)文期末考試卷(下載)
- 供應(yīng)部年終工作總結(jié)與計(jì)劃
- ERP系統(tǒng)原理智慧樹知到答案2024年杭州電子科技大學(xué)
- 石油管道保護(hù)應(yīng)急專項(xiàng)預(yù)案
- 2024-2030中國(guó)滾珠絲杠市場(chǎng)現(xiàn)狀研究分析與發(fā)展前景預(yù)測(cè)報(bào)告
- GB/T 144-2024原木檢驗(yàn)
- 共同出資成立新公司專項(xiàng)方案
- 露天煤礦隱蔽致災(zāi)地質(zhì)因素普查報(bào)告編寫細(xì)則
- 主動(dòng)脈夾層介入手術(shù)的護(hù)理
- 高素質(zhì)農(nóng)民培育培訓(xùn)
評(píng)論
0/150
提交評(píng)論