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 

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

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

變量與函數是中學數學里面最重要的和最基本的概念,在算法的設計里面仍然發揮著重要的和最基本的作用,它們會使得算法的表達變得非常整潔、清楚。

1.賦值語句在程序運行時給變量賦值;“=”的右側必須是表達式,左側必須是變量;一個語句只能給一個變量賦值;有計算功能;將一個變量的值賦給另一個變量時,前一個變量的值保持不變;可先后給一個變量賦多個不同的值,但變量的取值只與最后一次賦值有關。

試題詳情

2.累加變量是最終的輸出結果。每進入一次循環體隨著計數變量改變而改變。累加變量的初始值通常為0。

試題詳情

1.計數變量的作用一般是統計循環體執行的次數,改變循環條件的取值,為結束循環作準備。譬如:計算等差、等比數列的前n項的和,n就是計數變量的臨界值,在當型結構中“小于等于n”維持循環,而在直到型循環結構中“大于n”跳出循環。

試題詳情

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

題型4:循環語句

例7.設計一個計算1×3×5×7×…×99的算法,編寫算法程序。

解析:

算法如下:

第一步:s=1;

第二步:i=3;

第三步:s=s×i;

第四步:i=i+2;

第五步:如果i≤99,那么轉到第三步;

第六步:輸出s;

程序如下:(“WHILE型”循環語句)

s=1

i=3

WHILE  i<=99

s=s*i

i=i+2

WEND

PRINT  s

END

點評:你能用“UNTIL”型循環語句表示“典例1”中的程序嗎?

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

解析:這個問題是求前10個正整數的階乘之和,可以用“WHILE+ WHILE”循環嵌套語句格式來實現。

程序結構要做到如下步驟:

①處理“N!”的值;(注:處理N!值的變量就是一個內循環變量)

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

顯然,通過10次循環可分別求出1!、2!、…、10!的值,并同時累加起來, 可求得S的值。而求T=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

上面程序中哪個變量是內循環變量,哪個變量是外循環變量?

(1)內循環變量:j,t

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

“典例2”程序是一個的“WHILE+WHILE”型循環嵌套語句格式。這是一個比較好想的方法,但實際上對于求n!,我們也可以根據求出的(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

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

點評:解決具體的構造循環語句的算法問題,要盡可能的少引入循環變量,否則較多的變量會使得設計程序比較麻煩,并且較多的變量會使得計算機占用大量的系統資源,致使系統緩慢。另外,也盡可能使得循環嵌套的層數少,否則也浪費計算機的系統資源。

題型5:實際應用

例9.中國網通規定:撥打市內電話時,如果不超過3分鐘,則收取話費0.22元;如果通話時間超過3分鐘,則超出部分按每分鐘0.1元收取通話費,不足一分鐘按以一分鐘計算。設通話時間為t(分鐘),通話費用y(元),如何設計一個程序,計算通話的費用。

解析:

算法分析:

數學模型實際上為:y關于t的分段函數。

關系是如下:

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

算法步驟如下:

第一步:輸入通話時間t;

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

第三步:輸出通話費用c 。

算法程序如下:

INPUT “請輸入通話時間:”;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 “通話費用為:”;y

END

點評:實際應用問題,在高考中是一個熱點。如何將實際問題轉化成數學問題是解題的關鍵,最后還要用算法步驟和程序進行表達。如:中國網通通話費的規定在數學中就是通話時間到通話費用的分段函數。日常生活中的分段函數問題還有很多:出租車的計費問題、個人所得稅問題、銀行利率問題等等。

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

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

程序如下:

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

點評:

試題詳情

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

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

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

(2)輸出語句 A=4

(3)賦值語句 3=B

(4)賦值語句  AB=-2

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

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

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

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

點評:輸入語句、輸出語句和賦值語句基本上對應于算法中的順序結構。輸入語句、輸出語句和賦值語句都不包括“控制轉移”,由它們組成的程序段必然是順序結構。

例2.請寫出下面運算輸出的結果。

(1)

(2)

(3)

解析:

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

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

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

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

題型2:賦值語句的應用

例3.寫出求三個數a,b,c的方差的程序。

解析:方差是在初中統計內容中學習過的知識,計算所有數的方差首先計算所有數的平均數,通過公式來計算。

算法步驟:

第一步:計算平均數;

第二步:計算方差

第三步:得到的結果即為所求。

程序如下:

INPUT a,b,c

y=(a+b+c)/3

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

PRINT S

END

點評:套用公式求值問題是傳統數學求值問題的一種,它是一種典型的順序結構,也就是說只通過輸入、輸出和賦值語句就可以完成任務。解決這類問題的關鍵是先分析這種問題的解法,即構造計算的過程,再寫出算法步驟和流程圖,再翻譯成算法語句即可。

例4.編寫一個程序,要求輸入的兩個正數ab的值,輸出abba的值。

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

程序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

點評:交換ab的值可通過下面三個語句來實現:

通過引進一個變量t實現變量a和b的值的交換,因此只需用賦值語句即可實現算法。在一些較為復雜的問題算法中經常需要對兩個變量的值進行交換,因此應熟練掌握這種方法。

題型3:條件語句

例5.編寫程序,輸出兩個不相等的實數ab的最大值。

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

解:算法一:

第一步:輸入a, b的數值;

第二步:判斷a,b的大小關系,若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的數值;

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

第三步:輸出a的值,結束。

(程序框圖如右圖)

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

INPUT“a,b”;a,b

IF  b>a  THEN

a=b

END IF

PRINT  a

END

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

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

例6.高等數學中經常用到符號函數,符號函數的定義為,試編寫程序輸入x的值,輸出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

程序二:(疊加結構)

程序框圖:

程序如下:

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

點評:1.條件結構的差異,造成程序執行的不同。當代入x的數值時,“程序一”先判斷外層的條件,依次執行不同的分支,才有可能判斷內層的條件;而“程序二”中執行了對“條件1”的判斷,同時也對“條件2”進行判斷,是按程序中條件語句的先后依次判斷所有的條件,滿足哪個條件就執行哪個語句。

試題詳情

5.循環語句

(1)當型循環語句

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

WHILE  條件

循環體

WEND

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

(2)直到型循環語句

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

DO

循環體

LOOP  UNTIL  條件

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

因此直到型循環又稱“后測試型”循環,也就是我們經常講的“先執行后測試”、“先循環后判斷”。

試題詳情

4.條件語句

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

格式:

IF  條件  THEN

語句1

ELSE

語句2

END  IF

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

(2)“IF-THEN”語句

格式:

IF  條件 THEN

語句

END  IF

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

試題詳情

3.賦值語句

賦值語句的一般格式:變量=表達式

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

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

要求:

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

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

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

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

試題詳情

2.輸出語句

輸出語句的一般格式:PRINT“提示內容”;表達式

例如:PRINT“S=”;S

功能:實現算法輸出信息(表達式)

要求:

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

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

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

試題詳情

1.輸入語句

輸入語句的格式:INPUT “提示內容”; 變量

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

要求:

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

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

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

試題詳情


同步練習冊答案
久久精品免费一区二区视