0  430503  430511  430517  430521  430527  430529  430533  430539  430541  430547  430553  430557  430559  430563  430569  430571  430577  430581  430583  430587  430589  430593  430595  430597  430598  430599  430601  430602  430603  430605  430607  430611  430613  430617  430619  430623  430629  430631  430637  430641  430643  430647  430653  430659  430661  430667  430671  430673  430679  430683  430689  430697  447090 

3.學(xué)習(xí)了循環(huán)語句的兩種格式,我們來挖掘一下應(yīng)用循環(huán)語句編寫程序的“條件三要素”。

試題詳情

2.條件語句的主要功能是來實(shí)現(xiàn)算法中的條件結(jié)構(gòu)。

因?yàn)槿藗儗τ?jì)算機(jī)運(yùn)算的要求不僅僅是一些簡單的代數(shù)運(yùn)算,而是經(jīng)常需要計(jì)算機(jī)按照條件進(jìn)行分析、比較、判斷,并且按照判斷后的不同情況進(jìn)行不同的操作和處理。如果是要解決像“判斷一個(gè)數(shù)的正負(fù)”、“比較數(shù)之間的大小”,“對一組數(shù)進(jìn)行排序”、“求分段函數(shù)的函數(shù)值”等很多問題,計(jì)算機(jī)就需要用到條件語句。

試題詳情

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

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

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

1.賦值語句在程序運(yùn)行時(shí)給變量賦值;“=”的右側(cè)必須是表達(dá)式,左側(cè)必須是變量;一個(gè)語句只能給一個(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.條件語句的嵌套可多于兩層,可以表達(dá)算法步驟中的多重限制條件。

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

例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)語句)

s=1

i=3

WHILE  i<=99

s=s*i

i=i+2

WEND

PRINT  s

END

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

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

解析:這個(gè)問題是求前10個(gè)正整數(shù)的階乘之和,可以用“WHILE+ WHILE”循環(huán)嵌套語句格式來實(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í)累加起來, 可求得S的值。而求T=N!,又可以用一個(gè)循環(huán)(內(nèi)循環(huán))來實(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)嵌套語句格式。這是一個(gè)比較好想的方法,但實(shí)際上對于求n!,我們也可以根據(jù)求出的(n-1)!乘上n即可得到,而無需重新從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)評:解決具體的構(gòu)造循環(huán)語句的算法問題,要盡可能的少引入循環(huán)變量,否則較多的變量會使得設(shè)計(jì)程序比較麻煩,并且較多的變量會使得計(jì)算機(jī)占用大量的系統(tǒng)資源,致使系統(tǒng)緩慢。另外,也盡可能使得循環(huán)嵌套的層數(shù)少,否則也浪費(fèi)計(jì)算機(jī)的系統(tǒng)資源。

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

例9.中國網(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 “請輸入通話時(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)評:實(shí)際應(yīng)用問題,在高考中是一個(gè)熱點(diǎn)。如何將實(shí)際問題轉(zhuǎn)化成數(shù)學(xué)問題是解題的關(guān)鍵,最后還要用算法步驟和程序進(jìn)行表達(dá)。如:中國網(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)評:

試題詳情

題型1:輸入、輸出和賦值語句

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

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

(2)輸出語句 A=4

(3)賦值語句 3=B

(4)賦值語句  AB=-2

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

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

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

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

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

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

(1)

(2)

(3)

解析:

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

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

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

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

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

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

解析:方差是在初中統(tǒng)計(jì)內(nèi)容中學(xué)習(xí)過的知識,計(jì)算所有數(shù)的方差首先計(jì)算所有數(shù)的平均數(shù),通過公式來計(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)評:套用公式求值問題是傳統(tǒng)數(shù)學(xué)求值問題的一種,它是一種典型的順序結(jié)構(gòu),也就是說只通過輸入、輸出和賦值語句就可以完成任務(wù)。解決這類問題的關(guān)鍵是先分析這種問題的解法,即構(gòu)造計(jì)算的過程,再寫出算法步驟和流程圖,再翻譯成算法語句即可。

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

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

程序1:

INPUT “a,b:”;a,b

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)評:交換a,b的值可通過下面三個(gè)語句來實(shí)現(xiàn):

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

題型3:條件語句

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

解析:要輸出兩個(gè)不相等的實(shí)數(shù)ab的最大值,從而想到對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”語句)

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”語句)

INPUT“a,b”;a,b

IF  b>a  THEN

a=b

END IF

PRINT  a

END

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

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

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

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

程序框圖:(右圖)

程序語言:

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

試題詳情

5.循環(huán)語句

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

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

WHILE  條件

循環(huán)體

WEND

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

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

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

DO

循環(huán)體

LOOP  UNTIL  條件

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

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

試題詳情

4.條件語句

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

格式:

IF  條件  THEN

語句1

ELSE

語句2

END  IF

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

(2)“IF-THEN”語句

格式:

IF  條件 THEN

語句

END  IF

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

試題詳情

3.賦值語句

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

賦值語句中的“=”稱作賦值號

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

要求:

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

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

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

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

試題詳情


同步練習(xí)冊答案