資源簡介 課件24張PPT。3.9 解析、枚舉算法及其程序實現考點1考點2考點1解析算法的程序實現解析算法是指用解析的方法找出問題的前提條件與所求結果之間關系的數學表達式,并通過表達式的計算來實現問題求解。例如計算1+2+3+…+100的和,可通過求和公式s= n(n+1)得到。解析算法的程序實現關鍵是建立正確的數學模型(得出正確的數學計算表達式),并保證計算過程描述的正確性(用正確合理的VB變量、表達式來表示已經得出的數學計算式)。考點1考點2例1研究表明,人的身高與遺傳有很大關系,其中成年男性的身高預測公式為身高(cm)=(父親身高+母親身高)*1.08/2,女性的身高預測公式為身高(cm)=(父親身高*0.923+母親身高)/2,具體程序運行界面和算法流程圖如下圖所示:考點1考點2考點1考點2運行程序時,在文本框Text1中輸入父親身高,在文本框Text2中輸入母親身高,在文本框Text3中輸入性別,單擊“預測”按鈕Command1,在標簽Label4中顯示預測身高,程序代碼如下:Private Sub Command1_Click()h1=Val(Text1.Text)h2=Val(Text2.Text)s=Text3.TextIf s=″男″ Then h= ① ?Else h=(h1*0.923+h2)/2End IfLabel4.Caption=Text3.Text+″孩子的身高是:″+ ② +″cm″?End Sub考點1考點2(1)該事件處理過程采用的算法是 。(填解析算法/枚舉算法)?(2)在程序中①和②劃線處,填入適當的語句或表達式,把程序補充完整。程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:(1)解析算法 (2)(h1+h2)*1.08/2 Str(h)考點1考點2解析:本題要求完善使用解析算法解決問題的程序。解析算法在程序實現時的關鍵點是能得出“正確的數學模型”和寫出“正確的VB計算表達式”。從題目功能描述可知子女身高與父母身高之間存在著明確的關系,事件處理過程正是利用解析算法解決此問題的程序,屬于解析算法的實現。根據題意和流程圖,①處為計算男孩子的身高,把計算表達式轉換為VB語法的表達式填入即可。②處顯示孩子的身高,即h的值。解決此類問題可根據任務描述和流程圖,正確提煉其中的數學表達式并將其轉化成VB表達式。考點1考點2考點2枚舉算法的程序實現枚舉算法也稱窮舉算法,其基本思想是根據問題本身的性質,一一列舉該問題所有可能的情況,并根據題目的條件逐一作出判斷,從中找出符合條件的解。在列舉的過程中,既不能遺漏,也不能重復。比如,要求100以內所有的素數,就可以采用枚舉算法。考點1考點2例2雞兔同籠問題。一群雞和兔關在一個籠子里,其中共有頭30個,腳60只,問雞和兔各幾只?現用VB程序求解,程序如下:Private Sub Command1_Click()for i=1 to 30 j= ① ? if ② then? list1.additem ″雞:″+str(i)+″只,兔″+str(j)+″只。″ end ifnext iEnd Sub考點1考點2(1)該事件處理過程采用的算法是 。(填:解析算法/枚舉算法)?(2)在程序中①和②劃線處,填入適當的語句或表達式,把程序補充完整。程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:(1)枚舉算法 (2)30-i i*2+j*4=60解析:由語句list1.additem ″雞:″+str(i)+″只,兔″+str(j)+″只。″可知,變量i表示雞的數量,j表示兔的數量,所以①處應填入30-i。②處判斷腳的數量是否等于60,即②處的條件表達式i*2+j*4=60,只要滿足兩個條件,即把數據展示在列表框中。由上分析可知,循環變量i表示雞的數量,其值由1到30,逐一條件“i*2+j*4=60”進行比對,若符合的進行展示,由此特征可判斷該程序是典型的枚舉算法程序。1.計算三角形面積的算法如下:①輸入三角形三邊長a,b,c②如果a,b,c能組成三角形,則執行③④⑤,否則轉到⑥③計算半周長p=(a+b+c)/2④計算三角形面積s=Sqr(p*(p-a)*(p-b)*(p-c))⑤輸出面積s,轉到⑦⑥輸出不能組成三角形⑦結束上述算法屬于( )A.排序算法 B.解析算法C.枚舉算法 D.查找算法答案:B 解析:解析算法的基本思想是用解析的方法找出表示問題的前提條件與所求結果之間關系的數學表達式,并通過數學表達式的計算來實現問題的求解。本題為解析算法。2.以下問題屬于用解析算法解決問題的是( )A.已知完全平方數的定義,找出1~100范圍內的所有完全平方數B.利用一元二次方程求根公式求解方程的根C.求二元一次方程2x+y=10所有正整數的解D.根據犯罪嫌疑人的體貌特征,從公安部檔案庫中篩選出可疑人信息答案:B 解析:其他三項屬于枚舉法。3.用解析法計算勻加速直線運動位移和速度的VB程序代碼如下:Private Sub Command1_click()Dim s as Single,v0 as Single,a as Single,t as Single,vt as Singlev0= ① 'v0存放初速度?a=Val(Text2.Text)t=Val(Text3.Text)vt=v0+a*ts= ② ?Text4.Text=Str(s)Text5.Text=Str(vt)End Sub程序界面如下圖所示:已知即時速度的計算公式是v0+at,位移的計算公式為v0t+ at2,則:程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:val(Text1.Text) v0*t+a*t^2/24.某商場舉行“滿就送”活動,活動規則如下:購物滿100送10元券購物滿200送30元券購物滿300送60元券購物滿400送100元券購物滿500送150元券根據上述規則,使用VB設計程序如下:Private Sub Command1_click()Dim m as Single,x as Integerm=Val(Text1.Text)If ① Then? x=150Else If m>=400 Then x=100Else If m>=300 Then x=60Else If m>=200 Then x=30Else If m>=100 Then x=10End IfLabel1.Caption= ② ' 顯示優惠券值?End Sub解決此問題所采用的算法是 (填:解析法/枚舉法)?程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:解析法 m>=500 str(x)5.有如下VB程序段:Sum=0For k=1 To 100a=Int(Rnd*50)If a Mod 2=0 Then Sum=Sum + aNext k該程序段運行后,變量Sum中存儲的是( )A.50個隨機整數中偶數的和B.50個隨機整數中奇數的和C.100個隨機整數中偶數的和D.100個隨機整數中奇數的和答案:C6.水仙花數是指其各位數字的3次冪之和等于它自身的數,打印100—999中的水仙花數的算法如下:Private Sub command1_click()for i=100 to 999 a=i100 '得到i的百位數字 b=i10 mod 10 '得到i的十位數字 c= ① ? if i= ② then print i?next iEnd Sub程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:i mod 10或 i-a*100-b*10 a^3+b^3+c^3解析:1處用于得到i的個位數字。7.現有1元幣3張、5元幣4張,用這些錢幣中的一張或若干張可以得到多少種不同的資金數量。現用VB程序求解,程序如下:Private Sub Command1_click()List1.Clears=0For one=0 To 3 For five=0 To 4 m= ① ? If m> 0 Then s= ② ? List1.AddItem ″一元幣取″+Str(one)+″張,5元幣取″+Str(five)+″張資金量為:″+Str(m)+″元。″ End If NextNextList1.AddItem ″共有″ + Str(s) + ″種組合!″End Sub(1)本程序主要采用的算法是 (填:枚舉算法/解析算法)。?(2)在程序中①和②劃線處,填入適當的語句或表達式,把程序補充完整。程序中①劃線處應填入 。?程序中②劃線處應填入 。?答案:(1)枚舉算法 (2)one+five*5 s+1解析:從語句List1.AddItem ″一元幣取″ + Str(one) + ″張,5元幣取″ + Str(five) + ″張資金量為:″ + Str(m) + ″元。″可以看出變量m存放的是某種組合的資金量。從語句List1.AddItem ″共有″ + Str(s) + ″種組合!″可以看出變量s存放的是組合數量。8.用蒙特卡羅法求π的近似值。下列程序是使用隨機函數RND,根據x2+y2≤1判斷落點是否在圓內來求π的近似值。其中,總共投點n次,統計落點在單位圓內的點數為s,則4s/n的值即為所求的π值。請完善程序:Private Sub Command1_click( )dim i as long,n as long,s as long,x as double,y as double,r as doublen=val(text1.text)i=1s=0randomizedo while ① ?x=rnd( ) : y=rnd( )r=② ?if r<=1 then ③ ?end ifi=i+1looplabel1.caption=④ '顯示π的值?End Sub在使用隨機函數RND前一般先用randomize,它的作用是對隨機數函數進行初始化處理。RND函數的取值范圍是⑤ ,要隨機產生一個[1,10]之間的整數,其表達式為⑥ 。?答案:①i<=n ②x^2+y^2 ③s=s+1 ④str(4*s/n) ⑤[0,1) ⑥int(rnd*10+1)或int(rnd*10)+1 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫