资源简介 专项测试八 数学中的有趣数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 ②test(n)=True或test(n) ③ans2.最大公约数和最小公倍数。更相减损之术求最大公约数的基本思想是:用两数中较大的数减去较小的数,获得的差与原先较小的数构成新的一对数,再用大的数减去小的数……如此循环,用同样的方法操作,直至产生一对相等的数,该数即为最大公约数。以求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 ②m = r ③r = m - n ④Str(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=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解析 ①处代码为自定义函数gcd(x,y),表示求整数x、y的最大公约数,每次将x、y的余数r与较小数y重新构成一对新的数再求最大公约数,因此①处代码为r = x Mod y;为了保证a>b,因此当a答案 ①r = x Mod y ②a < b ③ans = 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。答案 ①sum = 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 ②x < > 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。“回数猜想”的主要思想是对任意正整数,若它不是回文数,则按下列算法即可获得一个回数:(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