資源簡介 專項測試八 數學中的有趣數1.下列VB程序的功能是素數判斷。程序運行時,在文本框Text1中輸入一個數,單擊“判斷”按鈕Command1,若該數是素數,則在文本框Text2中輸出“Yes”,否則輸出“No”。程序運行效果如下圖所示。(1)要使程序運行時,文本框Text2的Height屬性值為2000,可在Form_Load事件過程中添加語句________(單選,填字母:A. Height=2000 / B.Text2. Height=2000 / C. Height.Text2=2000)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的語句。Function test(x As Integer)As Boolean Dim i As Integer test=True i=2 Do While i<=x-1 And test=True If x Mod i=0 Then ________①________ Else i = i+1 End If LoopEnd FunctionPrivate Sub Command1_Click() Dim n As Integer, ans As String n=Val(Text1.Text) If ________②________ Then ans = “Yes” Else ans = “No” End If Text2.Text =________③________End Sub解析 (1)本小題主要考查的是對象、屬性及屬性值。(2)本題主要考查的是自定義函數及相關知識。函數test(x)的功能是判斷整數x是否為素數,若是素數則返回函數值True,否則返回函數值False,函數值是通過函數名來返回的,因此①處代碼為test=False,②處代碼為test(n)=True;最后將判斷結果ans顯示在標簽Label3中,變量ans的數據類型為String,因此不能加Str函數,③處應填入ans。答案 (1)B (2)①test=False?、趖est(n)=True或test(n)?、踑ns2.最大公約數和最小公倍數。更相減損之術求最大公約數的基本思想是:用兩數中較大的數減去較小的數,獲得的差與原先較小的數構成新的一對數,再用大的數減去小的數……如此循環,用同樣的方法操作,直至產生一對相等的數,該數即為最大公約數。以求12、16 這兩個數的最大公約數為例,具體操作如下:(12,16)→(12,4)→(8,4)→(4,4), 即4是12和16的最大公約數。具體功能如下:在文本框Text1中輸入整數一,在文本框Text2中輸入整數二,單擊“求最大公約數和最小公倍數”按鈕Command1,兩數的最大公約數顯示在文本框Text3中,最小公倍數顯示在文本框Text4中。程序運行界面如下圖所示。(1)要使按鈕Command1上顯示文字“求最大公約數與最小公約數”,應修改按鈕Command1的________屬性的屬性值。(2)實現上述功能的VB程序如下,請在劃線處填入合適的語句。Private Sub Command1_Click() Dim m As Long, n As Long, r As Long, t As Long m = Val(Text1.Text) n = Val(Text2.Text) t = m * n If m < n Then r = m: m = n: n = r r = m - n Do While ________①________ If r < n Thenm = nn = r Else ________②________ End If ________③________ Loop Text3.Text = Str(n) Text4.Text = ________④________End Sub解析 (1)本小題主要考查的是對象的屬性。要設置窗體的標題,應修改其Caption屬性的屬性值。(2)本題主要考查的是根據算法思想完成程序實現。根據更相減損之術的思想可知,不斷地構造數對(m,n)且m>=n,剛開始時,數對(m,n)為整數一和整數二,然后用兩數之差r和n組成一對新的數,當r答案 (1)Caption (2)①r< >0或r< >n或m< >n?、趍 = r?、踨 = m - n?、躍tr(t / n)3.數學中的“自守數”:如果一個數的平方的末幾位等于該數本身,這個數就是自守數。例如:5*5=26*6=325*25=676*76=57……那么,5、6、25、76等數被稱為自守數。小李編寫VB程序,實現如下功能:找出10000以內所有可能的自守數,單擊“統計”按鈕Command1,將符合要求的自守數顯示在列表框List1中,統計個數顯示在標簽Label1中,運行界面如下圖所示。(1)程序運行時要在按鈕上顯示“統計”,應設置按鈕的________屬性。(2)為實現上述功能,請在劃線處填入合適的代碼。Private Sub Command1_Click() Dim n As Single, k As Integer, t As Integer, c As Integer List1.Clear c=0 For n = 5 To 10000 k = Len(Trim(n)) ′Trim()函數用于刪除字符串前的空格 t = (n * n) Mod ______①______ If t = n Then List1.AddItem Str(n) ______②______ End If Next n Label1.Caption = “自守個數為:” + Str(c)End Sub(3)解決該問題采用了________(選填:枚舉/解析)算法。答案 (1)Caption (2)①10^k?、赾=c+1(3)枚舉4.歐幾里德算法求最大公約數。歐幾里德算法又稱輾轉相除法,用于計算兩個整數的最大公約數。歐幾里德算法:對于給定的兩個整數,用較大的數除以較小的數。若余數不為零,則將余數和較小的數構成一對新的數,繼續上面的除法,直到大數被小數除盡,則這時較小的整數就是原來兩個數的最大公約數。設計一個VB程序,實現如下功能:輸入三個整數,求這三個整數的最大公約數。程序運行時,在文本框Text1、Text2、Text3中分別輸入三個整數,單擊“求最大公約數”按鈕Command1,在標簽Label5中顯示這三個整數的最大公約數。程序運行效果如圖所示。實現上述功能的VB程序如下,請程序劃線處填入合適的代碼。′自定義函數gcd(x,y)的功能是求整數x、y的最大公約數Function gcd(x As Integer, y As Integer) As Integer Dim r As Integer Do While x Mod y < > 0 ______①______ x = y y = r Loop gcd = yEnd Function′swap(m,n)自定義過程,其功能是交換變量m、n的值Sub swap(m As Integer, n As Integer) Dim temp As Integer temp = m m = n n = tempEnd SubPrivate Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer, ans As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If ______②______Then Call swap(a, b) ′Call swap(a, b)表示調用過程swap ans = gcd(a, b) If ans > c Then Call swap(ans, c) ________③________ Label5.Caption = Str(ans)End Sub解析?、偬幋a為自定義函數gcd(x,y),表示求整數x、y的最大公約數,每次將x、y的余數r與較小數y重新構成一對新的數再求最大公約數,因此①處代碼為r = x Mod y;為了保證a>b,因此當a答案?、賠 = x Mod y?、赼 < b?、踑ns = gcd(c, ans)5.完全數。完全數又稱完美數或完備數,是一些特殊的自然數。它所有的真因子(即除了自身以外的約數)的和,恰好等于它本身。如果一個數恰好等于它的真因子之和,則稱該數為“完全數”。例如:第一個完全數是6,它的真因子為1、2、3,1+2+3=6。現要求前n個完全數,具體功能如下:在文本框Text1中輸入n,單擊“求完全數”按鈕Command1,前n個完全數顯示在列表框List1中。程序運行界面如圖所示。實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim n As Integer, t As Integer, sum As Long, i As Long, j As Long n = Val(Text1.Text) t = 1 i = 2 Do While t <= n ________①________ For j = 2 To Int(Sqr(i)) If i Mod j = 0 Then If j = i j Then sum = sum + j Else ________②________ End If End If Next j If i = sum Then t = t + 1 List1.AddItem Str(i) End If ________③________ LoopEnd Sub解析 變量sum表示i的真因子之和,它的初值為1,因此①處語句為sum = 1;根據除數i的范圍可知,求i的因子分兩種情況進行:(1)當i為完全平方數時,真因子之和sum = sum + j;(2)當i不是完全平方數時,如果j為i的因子,則ij也是i的因子,因此將i的兩個因子(j和ij)同時累加在變量sum中,即sum = sum + j + i j;從2開始尋找完全數,直到找到n個完全數為止,因此③處語句為i = i + 1。答案?、賡um = 1 ②sum = sum + j + i j③i = i + 16.親密數。小明編寫了一個求親密數的VB程序。所謂親密數是指如果整數x的全部因子(包括1,不包括x本身)之和等于y,且整數y的全部因子之和等于x,則將整數x和y稱為親密數,現在統計100~20000間的所有親密數。例如整數220和284為一對親密數。約定:(1)如整數(x,y)為一對親密數,則整數(y,x)與整數(x,y)認為是同一對親密數;(2)整數(x,y)為一對親密數,當且僅當x不等于y。程序運行時,單擊“開始”按鈕Command1,則在列表框List1中顯示100~20000間所有親密數,在標簽Label2中顯示親密數的對數。程序運行界面如圖所示。實現上述功能的VB程序如下,請程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim x As Long, y As Long, i As Long, j As Long,m As Long Dim b As Long, ans As Long ans = 0 For x = 100 To 20000 y = 0 ______①______ For i = 1 To x 2 If x Mod i = 0 Then y = y + i Next i For j = 1 To y 2 If y Mod j = 0 Then b = b + j Next j If b = x And ______②______ Then List1.AddItem Str(x) + Str(y) ans = ans + 1 m = x End If Next x Label2.Caption = “共有親密數對:” + ____③____End Sub解析 本題主要考查的是程序的綜合能力。劃線①處語句表示將變量b初始化為0;劃線②處語句為約定的2個條件,即x< >y、(x,y)與(y,x)為同一對親密數;劃線③處語句表示輸出親密數對。答案 ①b = 0?、趚 < > y And m < > y ③Str(ans)7.回文數。如果一個正整數從左往右讀與從右往左讀是一樣的,就稱它為回文數,如1234321?!盎財挡孪搿钡闹饕枷胧菍θ我庹麛?,若它不是回文數,則按下列算法即可獲得一個回數:(1)把該整數的數字順序顛倒,求得該數的逆序數;(2)將該整數和其對應的逆序數相加;(3)若相加結果不是回文數,則將結果作為新的整數,返回步驟(1)。小林按照上述算法設計了驗證回文數猜想的VB程序(猜想次數不超過10次),程序功能如下:在文本框Text1中輸入一個正整數,單擊“驗證”按鈕(Command1),獲取文本框Text1中的數,當該數不是回文數時,采用回數猜想的方法進行驗證,并在列表框List1中輸出每次驗證的過程,若驗證成功或驗證次數超過10次,則停止驗證,最后在列表框List1中輸出驗證結果。程序運行效果如下圖所示。實現上述功能的VB程序如下:Private Sub Command1_Click() Dim t As String,a As Long,b As Long Dim count As Integer ′用于存儲回數猜想的驗證次數 t=Text1.Text count=1 Do While check(t)=False And count<=10a=Val(t) ________①________c=a+bList1.AddItem Str(a)&“+”& Str(b)&“=”& Str(c)count=count+1t=Trim(str(c)) “函數Trim()的功能是刪除字符串首部和尾部的空格 Loop If check(t)ThenList1.AddItem“驗證成功!” ElseList1.AddItem“10次內未驗證成功!” End IfEnd SubFunction turn(x As String)As Long Dim s As String,i As Integer s=“ ” For i=Len(x)To 1 Step-1 s=s & Mid(x,i,1) Next i turn=Val(s)End Function′自定義函數Check,檢查x是否為回文數Function check(x As String)As Boolean Dim i As Integer check=True For i=1 To Len(x)2If Mid(x,i,1)< >______②______Then check=False Next iEnd Function(1)程序代碼中,自定義函數Turn(x)的功能是__________________。(2)請在劃線處填入合適代碼。解析 本題主要考查的是算法的綜合運用。(1)根據自定義函數中的語句s=s & Mid(x,i,1)可知,自定義函數turn(x)的功能是求字符串x的逆序(反序);(2)根據語句c=a+b可知,b表示將數字串t的反序轉化為數值,因此①處代碼為b=turn(t);自定義函數Check的功能是檢查x是否為回文數,即將字符串x中第i個字符與第len(x)-i+1個字符進行比較,若相等,則進行下一對字符的比較,否則x就不是回文數,因此②處代碼為 Mid(x,(Len(x)-i+1),1)。答案 (1)求字符串x的逆序 (2)①b=turn(t)②Mid(x,(Len(x)-i+1),1)專項測試八 數學中的有趣數1.下列VB程序的功能是素數判斷。程序運行時,在文本框Text1中輸入一個數,單擊“判斷”按鈕Command1,若該數是素數,則在文本框Text2中輸出“Yes”,否則輸出“No”。程序運行效果如下圖所示。(1)要使程序運行時,文本框Text2的Height屬性值為2000,可在Form_Load事件過程中添加語句________(單選,填字母:A. Height=2000 / B.Text2. Height=2000 / C. Height.Text2=2000)。(2)實現上述功能的VB程序如下,請在劃線處填入合適的語句。Function test(x As Integer)As Boolean Dim i As Integer test=True i=2 Do While i<=x-1 And test=True If x Mod i=0 Then ________①________ Else i = i+1 End If LoopEnd FunctionPrivate Sub Command1_Click() Dim n As Integer, ans As String n=Val(Text1.Text) If ________②________ Then ans = “Yes” Else ans = “No” End If Text2.Text =________③________End Sub2.最大公約數和最小公倍數。更相減損之術求最大公約數的基本思想是:用兩數中較大的數減去較小的數,獲得的差與原先較小的數構成新的一對數,再用大的數減去小的數……如此循環,用同樣的方法操作,直至產生一對相等的數,該數即為最大公約數。以求12、16 這兩個數的最大公約數為例,具體操作如下:(12,16)→(12,4)→(8,4)→(4,4), 即4是12和16的最大公約數。具體功能如下:在文本框Text1中輸入整數一,在文本框Text2中輸入整數二,單擊“求最大公約數和最小公倍數”按鈕Command1,兩數的最大公約數顯示在文本框Text3中,最小公倍數顯示在文本框Text4中。程序運行界面如下圖所示。(1)要使按鈕Command1上顯示文字“求最大公約數與最小公約數”,應修改按鈕Command1的________屬性的屬性值。(2)實現上述功能的VB程序如下,請在劃線處填入合適的語句。Private Sub Command1_Click() Dim m As Long, n As Long, r As Long, t As Long m = Val(Text1.Text) n = Val(Text2.Text) t = m * n If m < n Then r = m: m = n: n = r r = m - n Do While ________①________ If r < n Thenm = nn = r Else ________②________ End If ________③________ Loop Text3.Text = Str(n) Text4.Text = ________④________End Sub3.數學中的“自守數”:如果一個數的平方的末幾位等于該數本身,這個數就是自守數。例如:5*5=26*6=325*25=676*76=57……那么,5、6、25、76等數被稱為自守數。小李編寫VB程序,實現如下功能:找出10000以內所有可能的自守數,單擊“統計”按鈕Command1,將符合要求的自守數顯示在列表框List1中,統計個數顯示在標簽Label1中,運行界面如下圖所示。(1)程序運行時要在按鈕上顯示“統計”,應設置按鈕的________屬性。(2)為實現上述功能,請在劃線處填入合適的代碼。Private Sub Command1_Click() Dim n As Single, k As Integer, t As Integer, c As Integer List1.Clear c=0 For n = 5 To 10000 k = Len(Trim(n)) ′Trim()函數用于刪除字符串前的空格 t = (n * n) Mod ______①______ If t = n Then List1.AddItem Str(n) ______②______ End If Next n Label1.Caption = “自守個數為:” + Str(c)End Sub(3)解決該問題采用了________(選填:枚舉/解析)算法。4.歐幾里德算法求最大公約數。歐幾里德算法又稱輾轉相除法,用于計算兩個整數的最大公約數。歐幾里德算法:對于給定的兩個整數,用較大的數除以較小的數。若余數不為零,則將余數和較小的數構成一對新的數,繼續上面的除法,直到大數被小數除盡,則這時較小的整數就是原來兩個數的最大公約數。設計一個VB程序,實現如下功能:輸入三個整數,求這三個整數的最大公約數。程序運行時,在文本框Text1、Text2、Text3中分別輸入三個整數,單擊“求最大公約數”按鈕Command1,在標簽Label5中顯示這三個整數的最大公約數。程序運行效果如圖所示。實現上述功能的VB程序如下,請程序劃線處填入合適的代碼。′自定義函數gcd(x,y)的功能是求整數x、y的最大公約數Function gcd(x As Integer, y As Integer) As Integer Dim r As Integer Do While x Mod y < > 0 ______①______ x = y y = r Loop gcd = yEnd Function′swap(m,n)自定義過程,其功能是交換變量m、n的值Sub swap(m As Integer, n As Integer) Dim temp As Integer temp = m m = n n = tempEnd SubPrivate Sub Command1_Click() Dim a As Integer, b As Integer, c As Integer, ans As Integer a = Val(Text1.Text) b = Val(Text2.Text) c = Val(Text3.Text) If ______②______Then Call swap(a, b) ′Call swap(a, b)表示調用過程swap ans = gcd(a, b) If ans > c Then Call swap(ans, c) ________③________ Label5.Caption = Str(ans)End Sub5.完全數。完全數又稱完美數或完備數,是一些特殊的自然數。它所有的真因子(即除了自身以外的約數)的和,恰好等于它本身。如果一個數恰好等于它的真因子之和,則稱該數為“完全數”。例如:第一個完全數是6,它的真因子為1、2、3,1+2+3=6。現要求前n個完全數,具體功能如下:在文本框Text1中輸入n,單擊“求完全數”按鈕Command1,前n個完全數顯示在列表框List1中。程序運行界面如圖所示。實現上述功能的VB程序如下,請在程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim n As Integer, t As Integer, sum As Long, i As Long, j As Long n = Val(Text1.Text) t = 1 i = 2 Do While t <= n ________①________ For j = 2 To Int(Sqr(i)) If i Mod j = 0 Then If j = i j Then sum = sum + j Else ________②________ End If End If Next j If i = sum Then t = t + 1 List1.AddItem Str(i) End If ________③________ LoopEnd Sub6.親密數。小明編寫了一個求親密數的VB程序。所謂親密數是指如果整數x的全部因子(包括1,不包括x本身)之和等于y,且整數y的全部因子之和等于x,則將整數x和y稱為親密數,現在統計100~20000間的所有親密數。例如整數220和284為一對親密數。約定:(1)如整數(x,y)為一對親密數,則整數(y,x)與整數(x,y)認為是同一對親密數;(2)整數(x,y)為一對親密數,當且僅當x不等于y。程序運行時,單擊“開始”按鈕Command1,則在列表框List1中顯示100~20000間所有親密數,在標簽Label2中顯示親密數的對數。程序運行界面如圖所示。實現上述功能的VB程序如下,請程序劃線處填入合適的代碼。Private Sub Command1_Click() Dim x As Long, y As Long, i As Long, j As Long,m As Long Dim b As Long, ans As Long ans = 0 For x = 100 To 20000 y = 0 ______①______ For i = 1 To x 2 If x Mod i = 0 Then y = y + i Next i For j = 1 To y 2 If y Mod j = 0 Then b = b + j Next j If b = x And ______②______ Then List1.AddItem Str(x) + Str(y) ans = ans + 1 m = x End If Next x Label2.Caption = “共有親密數對:” + ____③____End Sub7.回文數。如果一個正整數從左往右讀與從右往左讀是一樣的,就稱它為回文數,如1234321?!盎財挡孪搿钡闹饕枷胧菍θ我庹麛担羲皇腔匚臄担瑒t按下列算法即可獲得一個回數:(1)把該整數的數字順序顛倒,求得該數的逆序數;(2)將該整數和其對應的逆序數相加;(3)若相加結果不是回文數,則將結果作為新的整數,返回步驟(1)。小林按照上述算法設計了驗證回文數猜想的VB程序(猜想次數不超過10次),程序功能如下:在文本框Text1中輸入一個正整數,單擊“驗證”按鈕(Command1),獲取文本框Text1中的數,當該數不是回文數時,采用回數猜想的方法進行驗證,并在列表框List1中輸出每次驗證的過程,若驗證成功或驗證次數超過10次,則停止驗證,最后在列表框List1中輸出驗證結果。程序運行效果如下圖所示。實現上述功能的VB程序如下:Private Sub Command1_Click() Dim t As String,a As Long,b As Long Dim count As Integer ′用于存儲回數猜想的驗證次數 t=Text1.Text count=1 Do While check(t)=False And count<=10a=Val(t) ________①________c=a+bList1.AddItem Str(a)&“+”& Str(b)&“=”& Str(c)count=count+1t=Trim(str(c)) “函數Trim()的功能是刪除字符串首部和尾部的空格 Loop If check(t)ThenList1.AddItem“驗證成功!” ElseList1.AddItem“10次內未驗證成功!” End IfEnd SubFunction turn(x As String)As Long Dim s As String,i As Integer s=“ ” For i=Len(x)To 1 Step-1 s=s & Mid(x,i,1) Next i turn=Val(s)End Function′自定義函數Check,檢查x是否為回文數Function check(x As String)As Boolean Dim i As Integer check=True For i=1 To Len(x)2If Mid(x,i,1)< >______②______Then check=False Next iEnd Function(1)程序代碼中,自定義函數Turn(x)的功能是__________________。(2)請在劃線處填入合適代碼。解析 本題主要考查的是算法的綜合運用。(1)根據自定義函數中的語句s=s & Mid(x,i,1)可知,自定義函數turn(x)的功能是求字符串x的逆序(反序);(2)根據語句c=a+b可知,b表示將數字串t的反序轉化為數值,因此①處代碼為b=turn(t);自定義函數Check的功能是檢查x是否為回文數,即將字符串x中第i個字符與第len(x)-i+1個字符進行比較,若相等,則進行下一對字符的比較,否則x就不是回文數,因此②處代碼為 Mid(x,(Len(x)-i+1),1)。 展開更多...... 收起↑ 資源列表 專項測試八 數學中的有趣數.doc 專項測試八 數學中的有趣數原卷版.doc 縮略圖、資源來源于二一教育資源庫