中文字幕精品无码一区二区,成全视频在线播放观看方法,大伊人青草狠狠久久,亚洲一区影音先锋色资源

2020版算法與程序設計第四單元第2節 枚舉算法(22張PPT課件+學案)

資源下載
  1. 二一教育資源

2020版算法與程序設計第四單元第2節 枚舉算法(22張PPT課件+學案)

資源簡介

第2節 枚舉算法
考試內容
考試要求
枚舉算法思想
c
枚舉算法程序實現
c
一、枚舉算法思想
1.什么是枚舉算法
根據問題的本身特點,一一列舉出該問題的所有可能情況,并對可能情況進行逐一分析、判斷是否滿足條件,若滿足,則它是問題的一個正確解,從而挑選出符合條件的所有解。
2.枚舉算法的特征
枚舉對象:枚舉什么
枚舉范圍:連續的區間
條件判斷:滿足什么條件
二、利用枚舉算法解決問題的基本思路
(1)分析枚舉對象
分析題意,確定要枚舉什么。
(2)確定枚舉范圍
枚舉對象的范圍要準確,不能擴大和縮小范圍。
(3)得出判斷條件
判斷條件要書寫規范,符合VB規則。
三、枚舉算法算法框架及程序實現
1.算法框架
循環結構語句嵌套分支結構(分支結構也稱選擇結構)語句。
循環語句用來列舉可能解的范圍。
選擇語句用來判斷所列舉的可能解的正確性。
2.枚舉算法解題時需注意的方面
(1)枚舉解時,既不能遺漏任何一個真正解,也不能有重復。
(2)條件判斷時,利用問題提供的約束條件篩選、判斷解的正確性。
(3)求解形式一般為輸出解的內容或進行與解相關的其他計算。
一、枚舉算法思想
理解枚舉算法的基本思想,掌握枚舉算法的適用場合。
【典例1】 下列問題中適合采用枚舉算法解決的是(  )
A.求三個數中的最大數
B.統計1000以內能被7整除但不能被3整除的自然數的個數
C.計算1~100的和
D.將一個十進制數轉換為二進制數
解析 本題主要考查枚舉算法的基本思想。顯然,只有B選項符合枚舉算法的基本思想,枚舉對象為自然數,枚舉范圍為1~1000,枚舉條件為:i mod 7=0 and i mod 3< >0,因此答案為B。
答案 B
【變式訓練】 下列問題中適合采用枚舉算法解決的是(  )
A.求解一元二次方程的根
B.根據三角形三邊長度,求三角形的面積
C.求100內所有素數
D.求三個數中的最大數
解析 本題主要考查枚舉算法的基本思想。C選項符合枚舉算法的基本思想,枚舉對象為自然數,枚舉范圍為2~1000,枚舉條件為“該數是素數”,因此答案為C。
答案 C
【方法總結】 理解枚舉算法的基本思想,從而掌握枚舉的適用場合。
二、枚舉算法實例應用
【典例2】 某QQ群采用問題驗證的加入方式,如圖1所示。
圖1
某同學設計了一個VB程序用于尋找這個以511開頭、可被2015整除的6位數,單擊計算按鈕Command1,在標簽Label2上顯示答案,設計的窗體界面如圖2所示。
圖2
(1)在圖2所示的窗體中,創建標簽Label2對象的方法正確的是________(填字母)。
A.雙擊工具箱中的“”控件
B.雙擊工具箱中的“”控件
(2)要在窗體的標題欄上顯示 “問題驗證” 字樣,是通過修改該窗體對象的 ________(填:Font / Caption / Text)屬性值實現的。
(3)在代碼編輯窗口中,輸入“Label2.”后出現如圖3所示的信息, 其中的“Autosize”是Label2的________(填:事件名 / 方法名 / 屬性名)。
圖3
(4)為了實現上述功能,在程序劃線處填入正確的語句。
Private Sub Command1_Click()
 Dim i As Integer, n As Long
 For i = 0 To 999
________________________
If n Mod 2015 = 0 Then Label2.Caption = Str(n)
 Next i
End Sub
解析 本題考查的是枚舉算法思想以及程序的實現。此程序枚舉的是6位數中的后3位,因此6位數為n=511000+i。
答案 (1)B (2)Caption (3)屬性名 (4)n=511000+i
【變式訓練1】 下列程序的功能是:在文本框Text1中輸入一個正整數N(N>2),若該整數為質數(即素數),則在標簽Label3中顯示“IS Prime!”,否則顯示“IS not Prime!”。
程序運行時,在文本框Text1中輸入一個整數,單擊“判斷”按鈕Command1,在標簽Label3中顯示結果。程序運行界面如下圖所示。
實現上述功能的VB程序如下,請回答下列問題:
Private Sub Command1_Click()
 Dim n As Long, i As Integer, flag As Boolean
 n = Val(Text1.Text)
 ________①______
 flag = True
 Do While ________②______
If n Mod i = 0 Then
  flag = False
Else
  i = i + 1
End If
 Loop
 If flag Then Label3.Caption = “IS Prime!” Else Label3.Caption = “IS not Prime!”
End Sub
(1)觀察程序運行界面,該圖中共包含對象________個,分別屬于________個類(填個數)。
(2)程序代碼“Private Sub Command1_Click()”中的Command1是指________,Click是指________。
(3)在程序劃線處填入合適的代碼。
解析 (1)本題主要考查的是VB對象及VB控件類名。圖中共包含1個窗體、3個標簽、1個文本框、1個按鈕對象,共6個對象,分屬于標簽類、按鈕類、文本框類和窗體類。
(2)本題主要考查的是事件處理過程。事件處理過程“Private Sub Command1_Click()”中的Command1是指對象名,Click是指事件名。
(3)程序劃線①處為i初值,從質數的定義可知i=2;②處為循環條件,表示整數n還未判斷完畢且當前還不是質數,因此②處語句為i <= n - 1 And flag = True或i<=Int(Sqr(n)) And flag=True。
答案 (1)6 4 (2)對象名 事件名
(3)①i = 2 ②i <= n - 1 And flag = True 或i <=Int(Sqr(n)) And flag = True,說明flag = True可寫為flag
【變式訓練2】 有一個七位數,形如6600**0,頭兩位均為6,其中十位和百位已模糊不清,且該數是64或24的倍數,求該整數的所有可能情況,并統計符合條件的整數個數。
實現上述功能的VB程序如下,請回答下列問題:
Private Sub Command1_Click()
 Dim i As Long, x As Long, count As Integer
 count = 0
 For i = 10 To 99
  x = ________①______
  If __________②________Then
   List1.AddItem Str(x)
   count = count + 1
  End If
 Next i
 List1.AddItem Str(count)
End Sub
(1)程序代碼“List1.AddItem x”中的AddItem是指List1對象的________(填:屬性/方法/事件)。
(2)在程序劃線處填入合適的代碼。
解析 (1)本題主要考查的是對象的方法。AddItem是指List1對象的方法。
(2)變量x表示七位數整數,枚舉兩位模糊的整數i,因此x=6600000 + i * 10;該數是64或24的倍數,用VB表達式表示為x Mod 64 = 0 Or x Mod 24 = 0。
答案 (1)方法 (2)①6600000 + i * 10
②x Mod 64 = 0 Or x Mod 24 = 0
【方法總結】 (1)要注意枚舉范圍的精確性,不能擴大和縮小,否則會影響結果。(2)條件表達式書寫要規范,注意與數學代數式的區別。
1.有如下程序段:
Dim i As Integer, ans As Integer
Dim a(1 To 10) As Integer
sum = 0
For i = 1 To 10
 a(i) = i ^2
 If a(i) Mod 3 = 0 Then ans = ans + a(i)
Next i
Text1.Text = Str(ans)
該程序段運行后,文本框Text1中顯示的內容是(  )
A.55 B.126
C.259 D.385
解析 本題的本質是求1~10的平方數中3的倍數之和。本題采用枚舉算法思想,枚舉范圍為1~10,枚舉對象為a(i)(即i的平方數),條件為“a(i)是3的倍數嗎?”,當i=3、6、9時,a(3)=9、a(6)=36、a(9)=81滿足條件,因此ans=9+36+81=126,答案為B。
答案 B
2.水仙花數。所謂水仙花數是指一個三位整數,每一位上數字的立方和等于該數本身,這樣的數稱為水仙花數。
程序運行時,單擊“求解”按鈕,則在列表框List1中輸出所有的水仙花數,并在列表框最后顯示水仙花數的數量。程序運行效果如下圖所示。
實現上述功能的VB程序如下,請回答下列問題:
Private Sub Comm1_Click()
 Dim i As Integer, a As Integer, b As Integer, c As Integer
 Dim s As Integer, count As Integer
 count = 0
 For i = 100 To 999
______①______
b = i 10 Mod 10
c = i 100
s = a ^ 3 + b ^ 3 + c ^ 3
If s = i Then
  List1.AddItem Str(i)
  count = count + 1
End If
 Next i
 List1.AddItem “共有水仙花數:” +____②____+ “個”
End Sub
(1)“求解”按鈕的名稱為________。
(2)在程序劃線處填入合適的代碼。
解析 (1)本題主要考查的是對象的名稱,根據代碼“rivate Sub Comm1_Click()”可知,“求解”按鈕的名稱為Comm1。
(2)根據代碼“s = a ^ 3 + b ^ 3 + c ^ 3”可知,①處為關于變量a的賦值語句,變量存儲整數i的個位,因此為a = i Mod 10;變量count存儲水仙花數的個數,最后在列表框List中輸出,需注意的是要加Str函數。
答案 (1)Comm1 (2)①a = i Mod 10 ②Str(count)
基礎鞏固
1.有如下VB程序段:
For i = 1 To 30
 If i Mod 2 = 0 And i Mod 3 = 0 Then
s = s + i
List1.AddItem Str(i)
 End If
Next i
該程序段執行后,變量s的值為________。
解析 本程序的功能是統計30以內6的倍數之和。顯然,s=6+12+18+24+30=90。
答案 90
2.編寫VB程序,實現如下功能:有一個五位數,此五位數的萬位和個位上的數字分別是2和5,而且這個五位數是一個完全平方數。現要找出符合上列要求的所有五位數,并統計共有幾個數。
單擊“尋找”按鈕Command1,將符合要求的五位數顯示在列表框List1中,統計個數顯示在標簽Label2中。界面如下圖所示。
(1)在設計應用程序界面時,要使按鈕Command1上顯示“尋找”,則應修改其________屬性的屬性值。
(2)為實現上述功能,請在劃線處填入合適的代碼。
Private Sub Command1_Click()
 Dim i As Integer, x As Integer, n As Integer
 For i = 0 To 999
  ______①______
  If Int(Sqr(x)) = Sqr(x) Then
   List1.AddItem Str(x)
   ______②______
  End If
 Next i
 Label2.Caption = “共有:” + Str(n) + “個”
End Sub
解析 (1)本題主要考查的是對象的屬性。(2)變量x表示五位數,因此①處代碼為x=20005+i*10;②處表示統計滿足條件的五位數個數,因此為n=n+1。
答案 (1)Caption (2)①x=20005+i*10
②n=n+1
能力提升
3.現有一堆蘋果需要裝盒銷售,現有大小兩種規格的盒子,小盒每盒可裝10個蘋果,大盒每盒可裝15個蘋果。蘋果裝盒的要求如下:要求大小盒子都要使用(至少使用1個),且每盒都必須裝滿,計算出所有的裝盒方案,并統計出方案數。
小明編寫了一個蘋果裝盒的VB程序,程序運行時,在文本框Text1中輸入蘋果總數,單擊“計算”按鈕,如有方案,則在列表框List1中顯示具體的裝盒的方案,在標簽Label4中顯示方案總數,否則在列表框List1中顯示“無方案”。程序運行界面如圖所示。
實現上述功能的VB程序如下,但程序加框處語句有錯,請改正。
Private Sub Command1_Click()
 Dim i As Long, j As Long, count As Long, n As Long
 count = 0
 n = Val(Text1.Text)
 List1.Clear
 For i = 1 To n 10
For j = 1 To n 15
If  Then ′①
    count = count + 1
    List1.AddItem “方案” + Str(count) + “:” +Str(i) + “ ” + Str(j)
End If
Next j
 Next i
 If  Then ′②
Label4.Caption = Str(count)
 Else
List1.AddItem “沒有方案!”
 End If
End Sub
程序中加框①處應改正為__________________________________________;
加框②處應改正為_________________________________________________。
解析 本題主要考查的是枚舉算法。①處語句主要考查表達式書寫的規范性,特別要注意乘號不能省略,①處語句應改為:i * 10 + j * 15 = n 或i * 10 + j * 15 =Val(Text1.Text);根據Then后面的語句可知,②處條件為有方案的情況,因此②處語句應修改為count>0或count< >0。
答案 ①i * 10 + j * 15 = n 或i * 10 + j * 15 =Val(Text1.Text)
②count>0或count< >0
4.下列VB 程序用于刪除數據序列中的重復數據(即相同的數據僅保留一個)。程序運行時,在列表框 List1 中顯示數組 a 中的原始數據,單擊“去重”按鈕 Command1,在列表框 List2 中輸出“去重”后的數據,同時在標簽 Label3 中顯示刪除的數據總個數。
程序運行的界面如下圖所示:
程序代碼如下,將空白處補充完整。
Const maxn = 10
Dim a(1 To maxn) As Integer
Private Sub Command1_Click()
Dim i As Integer, c As Integer
Dim flag(1 To maxn) As Boolean
c = 0
For i = 1 To maxn
flag(i) = False
Next i
For i = 1 To maxn
If flag(i) = False Then
   For j = i + 1 To maxn
     If____①____Then flag(j) = True:
c=c+1
   Next j
End If
Next i
For i = 1 To maxn
If____②____Then List2.AddItem Str(a(i)) ′
Next i
Label3.Caption = “共刪除重復數據:” & Str(c) & “個”
End Sub
解析 變量flag(i)表示是否有重復,如果有重復,值為True。判斷a(i)是否有重復的思路是j從i的下一個位置開始,a(i)與a(j)比較,如果相等,表示與他重復,打上標記,讓flag(j)成為True。 最后根據flag 的值輸出不重復的數。
答案 ①a(i)= a(j) ②flag(i) = False
課件22張PPT。第2節 枚舉算法一、枚舉算法思想
1.什么是枚舉算法根據問題的本身特點,一一列舉出該問題的所有可能情況,并對可能情況進行逐一分析、判斷是否滿足條件,若滿足,則它是問題的一個正確解,從而挑選出符合條件的所有解。2.枚舉算法的特征枚舉對象:枚舉什么
枚舉范圍:連續的區間
條件判斷:滿足什么條件二、利用枚舉算法解決問題的基本思路(1)分析枚舉對象
分析題意,確定要枚舉什么。
(2)確定枚舉范圍
枚舉對象的范圍要準確,不能擴大和縮小范圍。
(3)得出判斷條件
判斷條件要書寫規范,符合VB規則。三、枚舉算法算法框架及程序實現
1.算法框架循環結構語句嵌套分支結構(分支結構也稱選擇結構)語句。循環語句用來列舉可能解的范圍。
選擇語句用來判斷所列舉的可能解的正確性。2.枚舉算法解題時需注意的方面(1)枚舉解時,既不能遺漏任何一個真正解,也不能有重復。
(2)條件判斷時,利用問題提供的約束條件篩選、判斷解的正確性。
(3)求解形式一般為輸出解的內容或進行與解相關的其他計算。一、枚舉算法思想理解枚舉算法的基本思想,掌握枚舉算法的適用場合。【典例1】 下列問題中適合采用枚舉算法解決的是(  )A.求三個數中的最大數
B.統計1000以內能被7整除但不能被3整除的自然數的個數
C.計算1~100的和
D.將一個十進制數轉換為二進制數解析 本題主要考查枚舉算法的基本思想。顯然,只有B選項符合枚舉算法的基本思想,枚舉對象為自然數,枚舉范圍為1~1000,枚舉條件為:i mod 7=0 and i mod 3< >0,因此答案為B。答案 B【變式訓練】 下列問題中適合采用枚舉算法解決的是(  )A.求解一元二次方程的根
B.根據三角形三邊長度,求三角形的面積
C.求100內所有素數
D.求三個數中的最大數
解析 本題主要考查枚舉算法的基本思想。C選項符合枚舉算法的基本思想,枚舉對象為自然數,枚舉范圍為2~1000,枚舉條件為“該數是素數”,因此答案為C。
答案 C【方法總結】 理解枚舉算法的基本思想,從而掌握枚舉的適用場合。二、枚舉算法實例應用
【典例2】 某QQ群采用問題驗證的加入方式,如圖1所示。圖1某同學設計了一個VB程序用于尋找這個以511開頭、可被2015整除的6位數,單擊計算按鈕Command1,在標簽Label2上顯示答案,設計的窗體界面如圖2所示。圖2(1)在圖2所示的窗體中,創建標簽Label2對象的方法正確的是________(填字母)。(2)要在窗體的標題欄上顯示 “問題驗證” 字樣,是通過修改該窗體對象的 ________(填:Font / Caption / Text)屬性值實現的。
(3)在代碼編輯窗口中,輸入“Label2.”后出現如圖3所示的信息, 其中的“Autosize”是Label2的________(填:事件名 / 方法名 / 屬性名)。圖3(4)為了實現上述功能,在程序劃線處填入正確的語句。
Private Sub Command1_Click()
 Dim i As Integer, n As Long
 For i = 0 To 999
________________________
If n Mod 2015 = 0 Then Label2.Caption = Str(n)
 Next i
End Sub解析 本題考查的是枚舉算法思想以及程序的實現。此程序枚舉的是6位數中的后3位,因此6位數為n=511000+i。
答案 (1)B (2)Caption (3)屬性名 (4)n=511000+i【變式訓練1】 下列程序的功能是:在文本框Text1中輸入一個正整數N(N>2),若該整數為質數(即素數),則在標簽Label3中顯示“IS Prime!”,否則顯示“IS not Prime!”。
程序運行時,在文本框Text1中輸入一個整數,單擊“判斷”按鈕Command1,在標簽Label3中顯示結果。程序運行界面如下圖所示。實現上述功能的VB程序如下,請回答下列問題:
Private Sub Command1_Click()
 Dim n As Long, i As Integer, flag As Boolean
 n = Val(Text1.Text)
 ________①______
 flag = True
 Do While ________②______
If n Mod i = 0 Then
  flag = False Else
  i = i + 1 End If
 Loop
 If flag Then Label3.Caption = “IS Prime!” Else Label3.Caption = “IS not Prime!”
End Sub(1)觀察程序運行界面,該圖中共包含對象________個,分別屬于________個類(填個數)。
(2)程序代碼“Private Sub Command1_Click()”中的Command1是指________,Click是指________。
(3)在程序劃線處填入合適的代碼。解析 (1)本題主要考查的是VB對象及VB控件類名。圖中共包含1個窗體、3個標簽、1個文本框、1個按鈕對象,共6個對象,分屬于標簽類、按鈕類、文本框類和窗體類。
(2)本題主要考查的是事件處理過程。事件處理過程“Private Sub Command1_Click()”中的Command1是指對象名,Click是指事件名。
(3)程序劃線①處為i初值,從質數的定義可知i=2;②處為循環條件,表示整數n還未判斷完畢且當前還不是質數,因此②處語句為i <= n - 1 And flag = True或i<=Int(Sqr(n)) And flag=True。答案 (1)6 4 (2)對象名 事件名
(3)①i = 2 ②i <= n - 1 And flag = True 或i <=Int(Sqr(n)) And flag = True,說明flag = True可寫為flag【變式訓練2】 有一個七位數,形如6600**0,頭兩位均為6,其中十位和百位已模糊不清,且該數是64或24的倍數,求該整數的所有可能情況,并統計符合條件的整數個數。實現上述功能的VB程序如下,請回答下列問題:
Private Sub Command1_Click()
 Dim i As Long, x As Long, count As Integer
 count = 0
 For i = 10 To 99
 x = ________①______
 If __________②________Then   List1.AddItem Str(x)
   count = count + 1
 End If
 Next i
 List1.AddItem Str(count)
End Sub
(1)程序代碼“List1.AddItem x”中的AddItem是指List1對象的________(填:屬性/方法/事件)。
(2)在程序劃線處填入合適的代碼。解析 (1)本題主要考查的是對象的方法。AddItem是指List1對象的方法。
(2)變量x表示七位數整數,枚舉兩位模糊的整數i,因此x=6600000 + i * 10;該數是64或24的倍數,用VB表達式表示為x Mod 64 = 0 Or x Mod 24 = 0。
答案 (1)方法 (2)①6600000 + i * 10 ②x Mod 64 = 0 Or x Mod 24 = 0
【方法總結】 (1)要注意枚舉范圍的精確性,不能擴大和縮小,否則會影響結果。(2)條件表達式書寫要規范,注意與數學代數式的區別。

展開更多......

收起↑

資源列表

<pre id="tfb94"><li id="tfb94"></li></pre>

<bdo id="tfb94"><rt id="tfb94"></rt></bdo>
  • <menu id="tfb94"><dl id="tfb94"></dl></menu><i id="tfb94"><acronym id="tfb94"><sub id="tfb94"></sub></acronym></i>

    1. 主站蜘蛛池模板: 关岭| 西林县| 江都市| 万源市| 安远县| 呈贡县| 大石桥市| 渝北区| 丹寨县| 青州市| 营口市| 图木舒克市| 安顺市| 台州市| 朝阳县| 于田县| 青州市| 南江县| 永城市| 镇巴县| 图片| 佛教| 繁昌县| 商水县| 盐亭县| 桂东县| 梅州市| 凌云县| 上蔡县| 颍上县| 巴林左旗| 库伦旗| 泸水县| 谷城县| 怀仁县| 古丈县| 同江市| 宁远县| 潮州市| 乡城县| 黔西县|