0  445754  445762  445768  445772  445778  445780  445784  445790  445792  445798  445804  445808  445810  445814  445820  445822  445828  445832  445834  445838  445840  445844  445846  445848  445849  445850  445852  445853  445854  445856  445858  445862  445864  445868  445870  445874  445880  445882  445888  445892  445894  445898  445904  445910  445912  445918  445922  445924  445930  445934  445940  445948  447090 

在設(shè)計(jì)算法的過程中,解決問題的基本思想常常很簡(jiǎn)單、很清楚,但表述參與運(yùn)算的數(shù)值的頻頻變換卻很麻煩。為了解決這個(gè)問題,需要在程序中引入變量。前面通過對(duì)函數(shù)概念的學(xué)習(xí),我們就已經(jīng)了解變量的含義:在研究問題的過程中可以取代不同數(shù)值的量稱為變量。

程序中一些重要的函數(shù)也很有用處,如取平方根函數(shù)SQR(x)=|x|,取絕對(duì)值函數(shù)ABS(x)=。

變量與函數(shù)是中學(xué)數(shù)學(xué)里面最重要的和最基本的概念,在算法的設(shè)計(jì)里面仍然發(fā)揮著重要的和最基本的作用,它們會(huì)使得算法的表達(dá)變得非常整潔、清楚。

1.賦值語(yǔ)句在程序運(yùn)行時(shí)給變量賦值;“=”的右側(cè)必須是表達(dá)式,左側(cè)必須是變量;一個(gè)語(yǔ)句只能給一個(gè)變量賦值;有計(jì)算功能;將一個(gè)變量的值賦給另一個(gè)變量時(shí),前一個(gè)變量的值保持不變;可先后給一個(gè)變量賦多個(gè)不同的值,但變量的取值只與最后一次賦值有關(guān)。

試題詳情

2.累加變量是最終的輸出結(jié)果。每進(jìn)入一次循環(huán)體隨著計(jì)數(shù)變量改變而改變。累加變量的初始值通常為0。

試題詳情

1.計(jì)數(shù)變量的作用一般是統(tǒng)計(jì)循環(huán)體執(zhí)行的次數(shù),改變循環(huán)條件的取值,為結(jié)束循環(huán)作準(zhǔn)備。譬如:計(jì)算等差、等比數(shù)列的前n項(xiàng)的和,n就是計(jì)數(shù)變量的臨界值,在當(dāng)型結(jié)構(gòu)中“小于等于n”維持循環(huán),而在直到型循環(huán)結(jié)構(gòu)中“大于n”跳出循環(huán)。

試題詳情

2.條件語(yǔ)句的嵌套可多于兩層,可以表達(dá)算法步驟中的多重限制條件。

題型4:循環(huán)語(yǔ)句

例7.設(shè)計(jì)一個(gè)計(jì)算1×3×5×7×…×99的算法,編寫算法程序。

解析:

算法如下:

第一步:s=1;

第二步:i=3;

第三步:s=s×i;

第四步:i=i+2;

第五步:如果i≤99,那么轉(zhuǎn)到第三步;

第六步:輸出s;

程序如下:(“WHILE型”循環(huán)語(yǔ)句)

s=1

i=3

WHILE  i<=99

s=s*i

i=i+2

WEND

PRINT  s

END

點(diǎn)評(píng):你能用“UNTIL”型循環(huán)語(yǔ)句表示“典例1”中的程序嗎?

例8.編寫一個(gè)程序,求1!+2!+…+10!的值。

解析:這個(gè)問題是求前10個(gè)正整數(shù)的階乘之和,可以用“WHILE+ WHILE”循環(huán)嵌套語(yǔ)句格式來(lái)實(shí)現(xiàn)。

程序結(jié)構(gòu)要做到如下步驟:

①處理“N!”的值;(注:處理N!值的變量就是一個(gè)內(nèi)循環(huán)變量)

②累加“N!”的值。(注:累加N!值的變量就是一個(gè)外循環(huán)變量)

顯然,通過10次循環(huán)可分別求出1!、2!、…、10!的值,并同時(shí)累加起來(lái), 可求得S的值。而求T=N!,又可以用一個(gè)循環(huán)(內(nèi)循環(huán))來(lái)實(shí)現(xiàn)。

程序?yàn)?

s=0

i=1

WHILE i<=10

j=1

t=1

WHILE j<=i

t=t*j

j=j+1

WEND

s=s+t

i=i+1

WEND

PRINT s

END

上面程序中哪個(gè)變量是內(nèi)循環(huán)變量,哪個(gè)變量是外循環(huán)變量?

(1)內(nèi)循環(huán)變量:j,t

(2)外循環(huán)變量:s,i

“典例2”程序是一個(gè)的“WHILE+WHILE”型循環(huán)嵌套語(yǔ)句格式。這是一個(gè)比較好想的方法,但實(shí)際上對(duì)于求n!,我們也可以根據(jù)求出的(n-1)!乘上n即可得到,而無(wú)需重新從1再累乘到n。

程序可改為:

s=0

i=1

j=1

WHILE i<=10

j=j*i

s=s+j

i=i+1

WEND

PRINT s

END

顯然第二個(gè)程序的效率要比第一個(gè)高得多。第一程序要進(jìn)行1+2+…+10=55次循環(huán),而第二程序進(jìn)行10次循環(huán)。如題目中求的是1!+2!+…+1000!,則兩個(gè)程序的效率區(qū)別更明顯。

點(diǎn)評(píng):解決具體的構(gòu)造循環(huán)語(yǔ)句的算法問題,要盡可能的少引入循環(huán)變量,否則較多的變量會(huì)使得設(shè)計(jì)程序比較麻煩,并且較多的變量會(huì)使得計(jì)算機(jī)占用大量的系統(tǒng)資源,致使系統(tǒng)緩慢。另外,也盡可能使得循環(huán)嵌套的層數(shù)少,否則也浪費(fèi)計(jì)算機(jī)的系統(tǒng)資源。

題型5:實(shí)際應(yīng)用

例9.中國(guó)網(wǎng)通規(guī)定:撥打市內(nèi)電話時(shí),如果不超過3分鐘,則收取話費(fèi)0.22元;如果通話時(shí)間超過3分鐘,則超出部分按每分鐘0.1元收取通話費(fèi),不足一分鐘按以一分鐘計(jì)算。設(shè)通話時(shí)間為t(分鐘),通話費(fèi)用y(元),如何設(shè)計(jì)一個(gè)程序,計(jì)算通話的費(fèi)用。

解析:

算法分析:

數(shù)學(xué)模型實(shí)際上為:y關(guān)于t的分段函數(shù)。

關(guān)系是如下:

其中[t-3]表示取不大于t-3的整數(shù)部分。

算法步驟如下:

第一步:輸入通話時(shí)間t;

第二步:如果t≤3,那么y = 0.22;否則判斷t∈Z 是否成立,若成立執(zhí)行y= 0.2+0.1× (t-3);否則執(zhí)行y = 0.2+0.1×( [t-3]+1)。

第三步:輸出通話費(fèi)用c 。

算法程序如下:

INPUT “請(qǐng)輸入通話時(shí)間:”;t

IF  t<=3  THEN

y=0.22

ELSE

IF  INT(t)=t  THEN

y=0.22+0.1*(t-3)

ELSE

y=0.22+0.1*(INT(t-3)+1)

END IF

END IF

PRINT “通話費(fèi)用為:”;y

END

點(diǎn)評(píng):實(shí)際應(yīng)用問題,在高考中是一個(gè)熱點(diǎn)。如何將實(shí)際問題轉(zhuǎn)化成數(shù)學(xué)問題是解題的關(guān)鍵,最后還要用算法步驟和程序進(jìn)行表達(dá)。如:中國(guó)網(wǎng)通通話費(fèi)的規(guī)定在數(shù)學(xué)中就是通話時(shí)間到通話費(fèi)用的分段函數(shù)。日常生活中的分段函數(shù)問題還有很多:出租車的計(jì)費(fèi)問題、個(gè)人所得稅問題、銀行利率問題等等。

例10.編寫程序,計(jì)算數(shù)列{an}的前20項(xiàng)的和。(其中數(shù)列的前幾項(xiàng)分別為1,1,2,3,5,8,……)

解析:這是“Fibonacci數(shù)列”的典型特征,從第三項(xiàng)起每一項(xiàng)都是它前兩項(xiàng)的和,即。

程序如下:

a=1

b=1

s=0

i=3

WHILE  i<=20

s=s+a+b

t=a

a=b

b=b+t

i=i+1

WEND

PRINT s

END

點(diǎn)評(píng):

試題詳情

題型1:輸入、輸出和賦值語(yǔ)句

例1.判斷下列給出的輸入語(yǔ)句、輸出語(yǔ)句和賦值語(yǔ)句是否正確?為什么?

(1)輸入語(yǔ)句 INPUT  a;b;c

(2)輸出語(yǔ)句 A=4

(3)賦值語(yǔ)句 3=B

(4)賦值語(yǔ)句  AB=-2

解析:(1)錯(cuò),變量之間應(yīng)用“,”號(hào)隔開;

(2)錯(cuò),PRINT語(yǔ)句不能用賦值號(hào)“=”;

(3)錯(cuò),賦值語(yǔ)句中“=”號(hào)左右不能互換;

(4)錯(cuò),一個(gè)賦值語(yǔ)句只能給一個(gè)變量賦值。

點(diǎn)評(píng):輸入語(yǔ)句、輸出語(yǔ)句和賦值語(yǔ)句基本上對(duì)應(yīng)于算法中的順序結(jié)構(gòu)。輸入語(yǔ)句、輸出語(yǔ)句和賦值語(yǔ)句都不包括“控制轉(zhuǎn)移”,由它們組成的程序段必然是順序結(jié)構(gòu)。

例2.請(qǐng)寫出下面運(yùn)算輸出的結(jié)果。

(1)

(2)

(3)

解析:

(1)16;語(yǔ)句是將a,b和的一半賦值給變量c,語(yǔ)句是將c的平方賦值給d,最后輸出d的值。

(2)1,2,3;語(yǔ)句是將ab的和賦值給c,語(yǔ)句是將的值賦值給了b。

(3)20,30,20;經(jīng)過語(yǔ)句ab,c的值是20,20,30。經(jīng)過語(yǔ)句a,b,c的值是20,30,30。經(jīng)過語(yǔ)句ab,c的值是20,30,20。

點(diǎn)評(píng):語(yǔ)句的識(shí)別問題是一個(gè)逆向性思維,一般我們認(rèn)為我們的學(xué)習(xí)是從算法步驟(自然語(yǔ)言)至程序框圖,再到算法語(yǔ)言(程序)。如果將程序擺在我們的面前時(shí),我們要從識(shí)別逐個(gè)語(yǔ)句,整體把握,概括程序的功能。

題型2:賦值語(yǔ)句的應(yīng)用

例3.寫出求三個(gè)數(shù)a,b,c的方差的程序。

解析:方差是在初中統(tǒng)計(jì)內(nèi)容中學(xué)習(xí)過的知識(shí),計(jì)算所有數(shù)的方差首先計(jì)算所有數(shù)的平均數(shù),通過公式來(lái)計(jì)算。

算法步驟:

第一步:計(jì)算平均數(shù);

第二步:計(jì)算方差;

第三步:得到的結(jié)果即為所求。

程序如下:

INPUT a,b,c

y=(a+b+c)/3

S=((a-y)2+ (b-y)2+ (c-y)2)/3

PRINT S

END

點(diǎn)評(píng):套用公式求值問題是傳統(tǒng)數(shù)學(xué)求值問題的一種,它是一種典型的順序結(jié)構(gòu),也就是說只通過輸入、輸出和賦值語(yǔ)句就可以完成任務(wù)。解決這類問題的關(guān)鍵是先分析這種問題的解法,即構(gòu)造計(jì)算的過程,再寫出算法步驟和流程圖,再翻譯成算法語(yǔ)句即可。

例4.編寫一個(gè)程序,要求輸入的兩個(gè)正數(shù)ab的值,輸出abba的值。

解析:可以利用INPUT語(yǔ)句輸入兩個(gè)正數(shù),然后將abba的值分別賦給兩個(gè)變量輸出即可。也可以將abba的底數(shù)和冪數(shù)進(jìn)行交換,故還可以利用賦值語(yǔ)句,采用將兩個(gè)變量的值互換的辦法實(shí)現(xiàn)。

程序1:

INPUT “a,b:”;ab

A=a^b

B=b^a

PRINT “ab=”;A,“ba=”;B

END

程序2:

INPUT “a,b:”;a,b

A=a^b

PRINT “ab=”;A

x=a

a=b

b=x

A=a^b

PRINT “ab=”;A

END

點(diǎn)評(píng):交換a,b的值可通過下面三個(gè)語(yǔ)句來(lái)實(shí)現(xiàn):

通過引進(jìn)一個(gè)變量t實(shí)現(xiàn)變量a和b的值的交換,因此只需用賦值語(yǔ)句即可實(shí)現(xiàn)算法。在一些較為復(fù)雜的問題算法中經(jīng)常需要對(duì)兩個(gè)變量的值進(jìn)行交換,因此應(yīng)熟練掌握這種方法。

題型3:條件語(yǔ)句

例5.編寫程序,輸出兩個(gè)不相等的實(shí)數(shù)a、b的最大值。

解析:要輸出兩個(gè)不相等的實(shí)數(shù)a、b的最大值,從而想到對(duì)a,b的大小關(guān)系進(jìn)行判斷,a,b的大小關(guān)系有兩種情況:(1)a>b;(2)b>a,這也就用到了我們經(jīng)常提及的分類討論的方式,找出兩個(gè)數(shù)的最大值。

解:算法一:

第一步:輸入a, b的數(shù)值;

第二步:判斷a,b的大小關(guān)系,若a>b,則輸出a的值,否則輸出b的值。

(程序框圖如右圖)

程序如下:(“IF-THEN-ELSE”語(yǔ)句)

INPUT“a,b”;a,b

IF  a>b  THEN

PRINT  a

ELSE

PRINT  b

END IF

END

算法二:

第一步:輸入a,b的數(shù)值;

第二步:判斷a,b的大小關(guān)系,若b > a,則將b的值賦予a;否則直接執(zhí)行第三步;

第三步:輸出a的值,結(jié)束。

(程序框圖如右圖)

程序如下:(“IF-THEN”語(yǔ)句)

INPUT“a,b”;a,b

IF  b>a  THEN

a=b

END IF

PRINT  a

END

點(diǎn)評(píng):1.一個(gè)“好”的算法往往像上面教材例題中的“小技巧”,要熟練、有效的使用它們,則需要在大量的算法設(shè)計(jì)中積累經(jīng)驗(yàn)。我們也可以先根據(jù)自己的思路設(shè)計(jì)算法,再與 “成形”的、高效的、優(yōu)秀的算法比較,改進(jìn)思路,改進(jìn)算法,以避免重復(fù)計(jì)算等問題,提高算法設(shè)計(jì)的水平!

2.我們?cè)谄匠5挠?xùn)練中盡可能的少引用變量,過多的變量不僅會(huì)使得算法和程序變得復(fù)雜,而且不利于計(jì)算機(jī)的執(zhí)行。為此,我們?cè)诰毩?xí)中要積極思考盡可能少引入變量以及如何才能少引入變量。

例6.高等數(shù)學(xué)中經(jīng)常用到符號(hào)函數(shù),符號(hào)函數(shù)的定義為,試編寫程序輸入x的值,輸出y的值。

程序一:(嵌套結(jié)構(gòu))

程序框圖:(右圖)

程序語(yǔ)言:

INPUT  x

IF x>0 THEN

y=1

ELSE

IF x=0  THEN

y=0

ELSE

y=-1

END IF

END IF

PRINT y

END

程序二:(疊加結(jié)構(gòu))

程序框圖:

程序如下:

INPUT  x

IF x>0 THEN

y=1

END IF

IF x=0  THEN

y=0

END IF

IF x<0  THEN

y=-1

END IF

PRINT y

END

點(diǎn)評(píng):1.條件結(jié)構(gòu)的差異,造成程序執(zhí)行的不同。當(dāng)代入x的數(shù)值時(shí),“程序一”先判斷外層的條件,依次執(zhí)行不同的分支,才有可能判斷內(nèi)層的條件;而“程序二”中執(zhí)行了對(duì)“條件1”的判斷,同時(shí)也對(duì)“條件2”進(jìn)行判斷,是按程序中條件語(yǔ)句的先后依次判斷所有的條件,滿足哪個(gè)條件就執(zhí)行哪個(gè)語(yǔ)句。

試題詳情

5.循環(huán)語(yǔ)句

(1)當(dāng)型循環(huán)語(yǔ)句

當(dāng)型(WHILE型)語(yǔ)句的一般格式為:

WHILE  條件

循環(huán)體

WEND

說明:計(jì)算機(jī)執(zhí)行此程序時(shí),遇到WHILE語(yǔ)句,先判斷條件是否成立,如果成立,則執(zhí)行WHILE和WEND之間的循環(huán)體,然后返回到WHILE語(yǔ)句再判斷上述條件是否成立,如果成立,再執(zhí)行循環(huán)體,這個(gè)過程反復(fù)執(zhí)行,直到一次返回到WHILE語(yǔ)句判斷上述條件不成立為止,這時(shí)不再執(zhí)行循環(huán)體,而是跳到WEND語(yǔ)句后,執(zhí)行WEND后面的語(yǔ)句。因此當(dāng)型循環(huán)又稱“前測(cè)試型”循環(huán),也就是我們經(jīng)常講的“先測(cè)試后執(zhí)行”、“先判斷后循環(huán)”。

(2)直到型循環(huán)語(yǔ)句

直到型(UNTIL型)語(yǔ)句的一般格式為:

DO

循環(huán)體

LOOP  UNTIL  條件

說明:計(jì)算機(jī)執(zhí)行UNTIL語(yǔ)句時(shí),先執(zhí)行DO和LOOP  UNTIL之間的循環(huán)體,然后判斷 “LOOP  UNTIL”后面的條件是否成立,如果條件成立,返回DO語(yǔ)句處重新執(zhí)行循環(huán)體。這個(gè)過程反復(fù)執(zhí)行,直到一次判斷 “LOOP  UNTIL”后面的條件條件不成立為止,這時(shí)不再返回執(zhí)行循環(huán)體,而是跳出循環(huán)體執(zhí)行“LOOP  UNTIL  條件”下面的語(yǔ)句。

因此直到型循環(huán)又稱“后測(cè)試型”循環(huán),也就是我們經(jīng)常講的“先執(zhí)行后測(cè)試”、“先循環(huán)后判斷”。

試題詳情

4.條件語(yǔ)句

(1)“IF-THEN-ELSE”語(yǔ)句

格式:

IF  條件  THEN

語(yǔ)句1

ELSE

語(yǔ)句2

END  IF

說明:在“IF-THEN-ELSE”語(yǔ)句中,“條件”表示判斷的條件,“語(yǔ)句1”表示滿足條件時(shí)執(zhí)行的操作內(nèi)容;“語(yǔ)句2”表示不滿足條件時(shí)執(zhí)行的操作內(nèi)容;END  IF表示條件語(yǔ)句的結(jié)束。計(jì)算機(jī)在執(zhí)行“IF-THEN-ELSE”語(yǔ)句時(shí),首先對(duì)IF后的條件進(jìn)行判斷,如果符合條件,則執(zhí)行THEN后面的“語(yǔ)句1”;若不符合條件,則執(zhí)行ELSE后面的“語(yǔ)句2”。

(2)“IF-THEN”語(yǔ)句

格式:

IF  條件 THEN

語(yǔ)句

END  IF

說明:“條件”表示判斷的條件;“語(yǔ)句”表示滿足條件時(shí)執(zhí)行的操作內(nèi)容,條件不滿足時(shí),直接結(jié)束判斷過程;END  IF表示條件語(yǔ)句的結(jié)束。計(jì)算機(jī)在執(zhí)行“IF-THEN”語(yǔ)句時(shí),首先對(duì)IF后的條件進(jìn)行判斷,如果符合條件就執(zhí)行THEN后邊的語(yǔ)句,若不符合條件則直接結(jié)束該條件語(yǔ)句,轉(zhuǎn)而執(zhí)行其它后面的語(yǔ)句。

試題詳情

3.賦值語(yǔ)句

賦值語(yǔ)句的一般格式:變量=表達(dá)式

賦值語(yǔ)句中的“=”稱作賦值號(hào)

作用:賦值語(yǔ)句的作用是將表達(dá)式所代表的值賦給變量;

要求:

(1)賦值語(yǔ)句左邊只能是變量名字,而不是表達(dá)式,右邊表達(dá)式可以是一個(gè)常量、變量或含變量的運(yùn)算式。如:2=x是錯(cuò)誤的;

(2)賦值號(hào)的左右兩邊不能對(duì)換。賦值語(yǔ)句是將賦值號(hào)右邊的表達(dá)式的值賦給賦值號(hào)左邊的變量。如“A=B”“B=A”的含義運(yùn)行結(jié)果是不同的,如x=5是對(duì)的,5=x是錯(cuò)的,A+B=C是錯(cuò)的,C=A+B是對(duì)的。

(3)不能利用賦值語(yǔ)句進(jìn)行代數(shù)式的演算。(如化簡(jiǎn)、因式分解、解方程等),如

這是實(shí)現(xiàn)不了的。在賦值號(hào)右邊表達(dá)式中每一個(gè)變量的值必須事先賦給確定的值。在一個(gè)賦值語(yǔ)句中只能給一個(gè)變量賦值。不能出現(xiàn)兩個(gè)或以上的“=”。但對(duì)于同一個(gè)變量可以多次賦值。

試題詳情

2.輸出語(yǔ)句

輸出語(yǔ)句的一般格式:PRINT“提示內(nèi)容”;表達(dá)式

例如:PRINT“S=”;S

功能:實(shí)現(xiàn)算法輸出信息(表達(dá)式)

要求:

(1)表達(dá)式是指算法和程序要求輸出的信息;

(2)提示內(nèi)容提示用戶要輸出的是什么信息,提示內(nèi)容必須加雙引號(hào),提示內(nèi)容要用分號(hào)和表達(dá)式分開。

(3)如同輸入語(yǔ)句一樣,輸出語(yǔ)句可以一次完成輸出多個(gè)表達(dá)式的功能,不同的表達(dá)式之間可用“,”分隔;輸出語(yǔ)句還可以是“提示內(nèi)容1”;表達(dá)式1,“提示內(nèi)容2”;表達(dá)式2,“提示內(nèi)容3”;表達(dá)式3,……”的形式;例如:PRINT “a,b,c:”;a,b,c。

試題詳情

1.輸入語(yǔ)句

輸入語(yǔ)句的格式:INPUT “提示內(nèi)容”; 變量

例如:INPUT “x=”; x功能:實(shí)現(xiàn)算法的輸入變量信息(數(shù)值或字符)的功能。

要求:

(1)輸入語(yǔ)句要求輸入的值是具體的常量;

(2)提示內(nèi)容提示用戶輸入的是什么信息,必須加雙引號(hào),提示內(nèi)容 “原原本本”的在計(jì)算機(jī)屏幕上顯示,提示內(nèi)容與變量之間要用分號(hào)隔開;

(3)一個(gè)輸入語(yǔ)句可以給多個(gè)變量賦值,中間用“,”分隔;輸入語(yǔ)句還可以是““提示內(nèi)容1”;變量1,“提示內(nèi)容2”;變量2,“提示內(nèi)容3”;變量3,……”的形式。例如:INPUT“a=,b=,c=,”;a,b,c。

試題詳情


同步練習(xí)冊(cè)答案