首页 vb江苏高07春vb上机

vb江苏高07春vb上机

举报
开通vip

vb江苏高07春vb上机江苏高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言(试卷代号VB01) (本试卷完成时间 70分钟) 【考试须知】 1. 改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2. 考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3. 程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序的功能是:输入一个由正整数组成的数字串(各整数由逗号隔开,最后以#号结束),从中找出所有是...

vb江苏高07春vb上机
江苏高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言(试卷代号VB01) (本试卷完成时间 70分钟) 【考试须知】 1. 改错 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2. 考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3. 程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序的功能是:输入一个由正整数组成的数字串(各整数由逗号隔开,最后以#号结束),从中找出所有是3的幂的数并显示在列表框中。 Option Explicit Option Base 1 Private Sub Command1_Click() Dim s As String, ch As String, k As Integer Dim a() As Integer, t As Integer, i As Integer s = Text1 For i = 1 To Len(s) ch = Mid(s, i, 1) If ch <> "," And ch <> "#" Then t = t * 10 + Val(ch) Else k = k + 1 ReDim Preserve a(k) a(k) = t t = 0 End If Next i For i = 1 To UBound(a) If judge(a(i)) Then List1.AddItem a(i) Next i End Sub Private Function judge(ByVal n As Integer) As Boolean Do While n <> 1 If n Mod 3 <> 0 Then Exit Function End If n = n \ 3 Loop judge = True End Function 【要求】 1. 新建工程,输入上述代码,改正程序中的错误; 2. 改错时,不得增加或删除语句,但可适当调整语句位置; 3. 将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下. 二、编程题(26分) 【题目】编写程序,找出满足下列条件的正整数:①该数的位数为N(N=3,4);②该数的数字全部由偶数数字组成;③该数等于另一个由偶数数字组成的数的平方。 【编程要求】 1.       程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2. 在文本框中输入n的值,单击“运行”按钮,在规定范围内查找符合要求的数据并在列表框中显示结果;按“清理”按钮,则将文本框及列表框清空,焦点设置在文本框;按“结束”按钮, 结束程序运行; 3       程序中包含一个 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 过程,用于判断一个数的各位数字均为偶数。. 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下. 参考答案: Private Sub Command1_Click() Dim i As Integer, a As Integer Dim low As String, high As String, n As Integer n = Text1 low = "10000" high = "99999" For i = Left(low, n) To Left(high, n) If flag(i) Then If Int(Sqr(i)) = Sqr(i) Then If flag(Sqr(i)) Then List1.AddItem i & "=" & Sqr(i) & "^2" End If End If End If Next i End Sub Function flag(x As Integer) As Boolean Dim i As Integer For i = 1 To Len(CStr(x)) k = Mid(CStr(x), i, 1) If k Mod 2 <> 0 Then Exit Function Next i flag = True End Function   Private Sub Command2_Click() Text1 = "" List1.Clear Text1.SetFocus End Sub   Private Sub Command3_Click() End End Sub 江苏高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言(试卷代号VB02) (本试卷完成时间 70分钟) 【考试须知】 1. 改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2. 考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3. 程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】从10个各不相同的正整数中,剔除若干个数。使得保留下来的数中,任意两个数的和都不是平方数(所谓平方数就是该数等于某一个数的平方,例如4就是一个平方数)。 Option Explicit Option Base 1 Private Sub Command1_Click() Dim a(10) As Integer, i As Integer, j As Integer, p As Integer, k As Integer Do While p < 10 k = Int(20 * Rnd) + 1 For j = 1 To p If k = a(j) Then Exit For Next j If j > p Then p = p + 1 a(p) = k Text1 = Text1 & Str(k) End If Loop Call delete(a, p) For i = 1 To p Text2 = Text2 & Str(a(i)) Next i End Sub Private Sub delete(a() As Integer, p As Integer) Dim idx As Integer, j As Integer, sum As Integer idx = 2 Do While idx < p For j = 1 To idx - 1 sum = a(idx) + a(j) If Int(Sqr(sum)) = Sqr(sum) Then Exit For Next j If j <= idx - 1 Then a(idx) = a(p) p = p - 1 Else idx = idx + 1 End If Loop End Sub 【要求】 1.       新建工程,输入上述代码,改正程序中的错误; 2.       改错时,不得增加或删除语句,但可适当调整语句位置; 3.       将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下. 二、编程题(26分) 【题目】编写程序,生成n组22选5的彩票码组(每组由各不相同的5个数码组成,且每个数码只能取1-22之间的数字)。 【编程要求】 1.       程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2. 在文本框1中输入n的值,单击“运行”按钮,在列表框中显示结果;按“清除”按钮,则将文本框及列表框清空,焦点设置在文本框;按“结束”按钮, 结束程序运行; 3       程序中包含一个名为tc的通用过程,用于生成一组彩票数码。 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下. 参考答案: Private Sub Command1_Click() Dim n As Integer, a(5) As Integer Dim i As Integer n = Text1 For i = 1 To n Call tc(a) For j = 1 To 5 s = s & " " & a(j) Next j List1.AddItem s s = "" Erase a Next i End Sub Sub tc(a() As Integer) Dim i As Integer, x As Integer Do While i < 5 x = Int(Rnd * 22) + 1 For j = 1 To 5 If x = a(j) Then Exit For Next j If j > 5 Then i = i + 1 a(i) = x End If Loop End Sub   Private Sub Command2_Click() Text1 = "" List1.Clear Text1.SetFocus End Sub   Private Sub Command3_Click() End End Sub 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言 (试卷代号VB03) (本试卷完成时间  70分钟) 【考试须知】 1.  改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2.  考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3.  程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序功能是查找3位和4位的Armstrong数。若一个N位的正整数,其各位数字的N次方之和等于这个数本身,则这个数就是一个Armstrong数。                       如:153 = 1^3 + 5^3 + 3^3,1634 = 1^4 + 6^4 + 3^4 + 4^4。 Option Explicit Option Base 1 Private Sub Command1_Click()     Dim I As Integer, A() As Integer, f As Boolean, n As Integer     Dim j As Integer, st As String      st =             For I = 153 To 9999         f = False         Call Arms(I, f, A, n)         If f Then             st = st & I & =             For j = 1 To UBound(A) - 1                 st = st & A(j) & ^ & n & +             Next j             st = st & A(j) & ^ & n             List1.AddItem st         End If     Next I End Sub Private Sub Arms(k As Integer, f As Boolean, B() As Integer, n As Integer)     Dim I As Integer, Sum As Integer, M As Integer     n = Len(Str(k))          M = k     ReDim B(n)     For I = n To 1 Step -1         B(I) = k Mod 10         k = k \ 10     Next I     For I = 1 To n         Sum = Sum + B(I) ^ n               计算各位数字的N次方之和     Next I     If Sum = M Then f = True End Sub 【要求】 1.  新建工程,输入上述代码,改正程序中的错误; 2.  改错时,不得增加或删除语句,但可适当调整语句位置; 3.  将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。 二、编程题(26分) 【题目】编写一个数据转换程序,将一组大小差异很大的数据变换为[0,1]区间的数值。设原样本数据的最大值为maxa,最小值为mina,将第k个样本值vk,变换为vk。变换公式为:     (k = 1,2,3,……n) 【编程要求】 1.  程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2.  按“生成样本数据”按钮,利用InputBox函数输入需要生成的数据个数n(缺省值设为10),再生成n个1~999之间的随机整数,并在文本框中显示;按“数据变换”按钮,进行数据变换,将变换结果显示到列表框;按“清除”按钮,将文本框及列表框清空; 3.  程序中应定义一个名为maxmin的通用过程,用于求样本数据的最大值与最小值。 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。 2007年(春)上机  Visual Basic(VB03)答案 一、      改错 【题目】本程序功能是查找3位和4位的Armstrong数。 若一个N位的正整数,其各位数字的N次方之和等于这个数本身,则这个数就是一个Armstrong数。                       如:153 = 1^3 + 5^3 + 3^3,1634 = 1^4 + 6^4 + 3^4 + 4^4。 Option Explicit Option Base 1 Private Sub Command1_Click()     Dim I As Integer, A() As Integer, f As Boolean, n As Integer     Dim j As Integer, st As String      st =          err 位置错     For I = 153 To 9999         f = False         Call Arms(I, f, A, n)         st =      ‘正确位置         If f Then             st = st & I & =             For j = 1 To UBound(A) - 1                 st = st & A(j) & ^ & n & +             Next j             st = st & A(j) & ^ & n             List1.AddItem st         End If     Next I End Sub Private Sub Arms(ByVal k As Integer, f As Boolean, B() As Integer, n As Integer)  原错误为 无ByVal                            Dim I As Integer, Sum As Integer, M As Integer     n = Len(CStr(k))      原错误为 Len(Str(k))     M = k     ReDim B(n)     For I = n To 1 Step -1         B(I) = k Mod 10         k = k \ 10     Next I     For I = 1 To n         Sum = Sum + B(I) ^ n   Str的错误也可改这里B(I) ^ (n - 1)         计算各位数字的N次方之和     Next I     If Sum = M Then f = True End Sub   二、编程题 【题目】编写一个数据转换程序,将一组大小差异很大的数据变换为[0,1]区间的数值。设原样本数据的最大值为maxa,最小值为mina,第k个样本值为vk,变换后的新值为vk,则  Option Explicit Dim n As Integer, samp() As Integer Private Sub Command1_Click()     Dim i As Integer     n = InputBox(输入样本个数n:, , 10)     ReDim samp(n)     For i = 1 To n         samp(i) = Int(999 * Rnd) + 1         Text1 = Text1 & Str(samp(i))     Next i End Sub   Private Sub Command2_Click()     Dim maxv As Integer, minv As Integer, i As Integer     Dim news() As Single     ReDim news(n)     Call maxmin(samp, maxv, minv)     For i = 1 To n         news(i) = (samp(i) - minv) / (maxv - minv)         List1.AddItem samp(i) & --> & news(i)     Next i End Sub   Private Sub maxmin(a() As Integer, max As Integer, min As Integer)     Dim i As Integer     max = a(1): min = a(1)     For i = 2 To UBound(a)         If a(i) < min Then             min = a(i)         ElseIf a(i) > max Then             max = a(i)         End If     Next i End Sub   Private Sub Command3_Click()     Text1 = : List1.Clear End Sub 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言 (试卷代号VB04) (本试卷完成时间  70分钟) 【考试须知】 1.  改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2.  考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3.  程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序是生成个位数分别是0、1、2、...9的十个三位随机整数,再利用插入排序由大到小排序,并输出到列表框中。 Option Explicit Private Sub Command1_Click()     Dim a(9) As Integer, x As Integer, k As Integer, i As Integer     Do While i <= 9         x = Int(Rnd * 900 + 100)             k = x Mod 10         If a(k) = 0 Then             a(k) = x             i = i + 1             Text1 = Text1 & Str(a(k))         End If     Loop     Sort(a)        For i = 0 To 9         List1.AddItem a(i)     Next i End Sub Private Sub sort(a() As Integer)     Dim x As Integer, i As Integer, j As Integer     For i = 1 To UBound(a)         x = a(i)         j = i - 1         Do While j >= 0 And x > a(j)             a(j) = a(j + 1)                      j = j - 1             If j < 0 Then Exit Sub                 Loop         If i > j + 1 Then             a(j + 1) = x         End If     Next i End Sub 【要求】 1.  新建工程,输入上述代码,改正程序中的错误; 2.  改错时,不得增加或删除语句,但可适当调整语句位置; 3.  将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。 二、编程题(26分) 【题目】编写程序,求出所有无重复数的三个整数组合,使它们的最小公倍数等于指定数据N。(设N取值范围为[100,150],三个整数的范围为[3,40]) 【编程要求】 1.  程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2.  在文本框1中输入N值,按“计算”按钮,则开始求解并在列表框中显示结果;按“清除”按钮,将文本框及列表框清空,焦点置于文本框;按“结束”按钮,结束程序运行; 3.  程序中应定义一个名为LCM的函数过程,用于求三个整数的最小公倍数。[算法提示:三个整数的最小公倍数,可先求出其中两个整数的最小公倍数,再求出该数与第3个数的最小公倍数即可] 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。 2007年(春)上机  Visual Basic(VB04)答案 一、      改错 【题目】本程序是生成个位数分别是0、1、2、...9的十个三位随机整数,再利用插入排序由大到小排序,并输出到列表框中。 Option Explicit Private Sub Command1_Click()     Dim a(9) As Integer, x As Integer, k As Integer, i As Integer     Do While i <= 9         x = Int(Rnd * 900 + 100)             k = x Mod 10         If a(k) = 0 Then             a(k) = x             i = i + 1             Text1 = Text1 & Str(a(k))         End If     Loop     Call sort(a)     原错误 sort (a);或改为sort a     For i = 0 To 9         List1.AddItem a(i)     Next i End Sub Private Sub sort(a() As Integer)     Dim x As Integer, i As Integer, j As Integer     For i = 1 To UBound(a)         x = a(i)         j = i - 1         Do While j >= 0 And x > a(j)             a(j + 1) = a(j)            原错误a(j) = a(j + 1)                   j = j - 1             If j < 0 Then Exit Do          原错误 Exit Sub         Loop         If i > j + 1 Then             a(j + 1) = x         End If     Next i End Sub   二、编程题 【题目】编写程序,求出所有无重复数的三个整数组合,它们的最小公倍数等于指定数据N。(设N取值范围为[100,150],三个整数的范围为[3,40]) Option Explicit Private Function LCM(A As Integer, B As Integer, C As Integer)     Dim Lm As Integer     LCM = A     Do Until LCM Mod A = 0 And LCM Mod B = 0 And LCM Mod C = 0         LCM = LCM + A     Loop End Function   Private Sub Command1_Click()     Dim lcd_n As Integer, m As Integer, n As Integer, k As Integer     lcd_n = Text1     For m = 2 To 30         For n = m + 1 To 30             For k = n + 1 To 30                 If LCM(m, n, k) = lcd_n Then                     List1.AddItem Str(m) & Str(n) & Str(k)                 End If             Next k         Next n     Next m End Sub   Private Sub Command2_Click()     Text1 = : List1.Clear     Text1.SetFocus End Sub   Private Sub Command3_Click()     End End Sub 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言 (试卷代号VB05) (本试卷完成时间  70分钟) 【考试须知】 1.  改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2.  考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3.  程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序的功能是找出这样的四位数:①各位上的数字不重复,且不为0;②相邻两个数字之和为素数;③首尾两个数字之和也为素数。(界面参见图1) 算法提示:从可能符合条件的4位数中,首先判断其是否含有重复的数码和0,若无则调用函数Prime,判断这个4位数的相邻两个数字和首尾两个数字之和是否都是素数。 Private Sub Command1_Click()     Dim A(9) As Integer, I As Integer, K As Integer, S As String, J As Integer     For I = 1234 To 9876         Erase A         S = CStr(I)         For J = 1 To Len(S)             K = Val(Mid(S, J, 1))             If K = 0 Then Exit Sub                  If A(K) = 0 Then  ‘ 此If结构功能是判断4位数是否含有重复的数码                 A(K) = 1             Else                 Exit For             End If         Next J         If J >= Len(S) And Prime(I) Then              List1.AddItem I         End If Next I End Sub Private Function Prime(N As Integer) As Boolean     Dim S As String, L As Integer, K As Integer, Tem As Long, I As Integer     S = CStr(N)     L = Len(N)                      For I = 1 To L         If I <> L Then             Tem = Val(Mid(S, I, 1)) + Mid(S, I + 1, 1)         Else             Tem = Val(Mid(S, 1, 1)) + Mid(S, L, 1)         End If         For K = 2 To Sqr(Tem)             If Tem Mod K = 0 Then Exit Function         Next K     Next I     Prime = True                                End Function 【要求】 1.  新建工程,输入上述代码,改正程序中的错误; 2.  改错时,不得增加或删除语句,但可适当调整语句位置; 3.  将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。 二、编程题(26分) 【题目】编写程序,求乘积在给定区间内的互为反序的两个自然数。所谓互为反序的自然数是指如102 和201,35 和53,11 和11这样的数。而120 和21 则不是。 【编程要求】 1.  程序参考界面如图2所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2.  在文本框1中输入A值,在文本框2中输入B值,再按“运行”按钮,则在11~2000的范围内查找乘积为[A,B]区间的反序数对,并在列表框中显示结果;按“清理”按钮,则将2个文本框及列表框清空,焦点置于文本框1;按“结束”按钮,结束程序运行; 3.  程序中应定义一个名为nx的函数过程,用于求一个整数的反序数。 [算法提示]如果一个整数末位数为0,则不需要求反序数。 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。 图2 图 1         2007年(春)上机  Visual Basic(VB05)答案 一、      改错 【题目】本程序的功能是找出这样的四位数:①各位上的数字不重复,且不为0;②相邻两个数字之和为素数;③首尾两个数字之和也为素数。(界面参见图1) 算法提示:从可能符合条件的4位数中,首先判断其是否含有重复的数码和0,若无则调用函数Prime,判断这个4位数的相邻两个数字和首尾两个数字之和是否都是素数。 Private Sub Command1_Click()     Dim A(9) As Integer, I As Integer, K As Integer, S As String, J As Integer     For I = 1234 To 9876         Erase A         S = CStr(I)         For J = 1 To Len(S)             K = Val(Mid(S, J, 1))             If K = 0 Then Exit For      错误为Exit Sub             If A(K) = 0 Then  ‘ 此If结构功能是判断4位数是否含有重复的数码                 A(K) = 1             Else                 Exit For             End If         Next J         If J > Len(S) And Prime(I) Then  ‘错误,应为J >= Len(S)             List1.AddItem I         End If Next I End Sub Private Function Prime(N As Integer) As Boolean     Dim S As String, L As Integer, K As Integer, Tem As Long, I As Integer     S = CStr(N)     L = Len(S)                   ‘错误为 Len(N);或改为L = Len(CStr(N))     For I = 1 To L         If I <> L Then             Tem = Val(Mid(S, I, 1)) + Mid(S, I + 1, 1)         Else             Tem = Val(Mid(S, 1, 1)) + Mid(S, L, 1)         End If         For K = 2 To Sqr(Tem)             If Tem Mod K = 0 Then Exit Function         Next K     Next I     Prime = True                                End Function   二、编程题 【题目】编写程序,求乘积在给定区间内的互为反序的两个自然数。所谓互为反序的自然数是指如102 和201,35 和53,11 和11这样的数。而120 和21 则不是。 Option Explicit Private Sub Command1_Click()     Dim a As Long, b As Long, i As Integer     Dim st As String, n As Integer, p As Long     a = Text1: b = Text2     i = 11     Do While i < 2000         st = CStr(i)         If Right(st, 1) <> 0 Then             n = nx(i)             p = 1& * n * i             If p >= a And p <= b Then                 List1.AddItem i & * & n & = & p             End If         End If         i = i + 1     Loop End Sub Private Function nx(ByVal n As Integer) As Integer     Dim i As Integer, st As String     Do         i = n Mod 10         st = st & CStr(i)         n = n \ 10     Loop Until n <= 0     nx = Val(st) End Function   Private Sub Command2_Click()     Text1 = : Text2 = : List1.Clear     Text1.SetFocus End Sub   Private Sub Command3_Click()     End End Sub 江苏省高等学校非计算机专业学生 计算机基础知识和应用能力等级考试上机试卷(2007春) 二级 Visual Basic语言 (试卷代号VB06) (本试卷完成时间  70分钟) 【考试须知】 1.  改错题的界面不作要求,主要用来调试程序,若题目中有参考界面,则仅作参考; 2.  考试结束后,文件必须存放在指定位置,否则适当扣分;考试盘中若无指定文件,则不予评分; 3.  程序代码书写应呈锯齿形。 一、改错题(14分) 【题目】本程序的功能是生成十个各位数字互不相同的三位整数。 Option Explicit Option Base 1 Private Sub Command1_Click()     Dim a(10) As Integer, i As Integer, n As Integer     Dim k As Integer     Do         n = Int(Rnd * 900) + 100         If nc(n) Then             a(i) = n             i = i + 1                        List1.AddItem i & : & a(i)         End If     Loop Until i >= 10 End Sub   Private Function nc(n As Integer) As Boolean      Dim a(3) As Integer, i As Integer, j As Integer     i = 1     Do         a(i) = n Mod 10         n = n \ 10         i = i + 1     Loop Until n <= 0     For i = 1 To 2         For j = i + 1 To 3             If a(i) = a(j) Then Exit For                  Next j     Next i     nc = True End Function 【要求】 1.  新建工程,输入上述代码,改正程序中的错误; 2.  改错时,不得增加或删除语句,但可适当调整语句位置; 3.  将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。 二、编程题(26分) 【题目】数组中10个元素的值各不相同,以数组第一个元素作为基准数,将小于基准数的元素向低下标端移,将大于基准数的元素向高下标端移。划分结束,基准数定位于第I元素。并且下标小于 I 的元素的值均小于基准数,下标大于 I 的元素的值均大于基准数。 【编程要求】 1.  程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见; 2.  按“运行”按钮,生成10个范围在1~20之间的各不相同的整数赋给数组A并显示在文本框Text1中;调用自定义通用过程对数组元素进行划分(移位),并将划分后的数组显示在文本框Text2 中;按“清理”按钮,将2个文本框清空;按“结束”按钮,结束程序运行; 3.  程序中应定义一个通用过程,用于以数组第一个元素作为基准数,按题目要求对数组元素进行划分。 【提示】可以在一个数组中进行划分,也可以引入一个辅助数组进行划分 【要求】 将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。 2007年(春)上机  Visual Basic(VB06)答案 一、      改错 【题目】本程序的功能是生成十个各位数字互不相同的三位整数。 Option Explicit   Private Sub Command1_Click()     Dim a(10) As Integer, i As Integer, n As Integer     Dim k As Integer     Do         n = Int(Rnd * 900) + 100         If nc(n) Then             i = i + 1     错误为位置错             a(i) = n      或a(i + 1) = n            i = i + 1                         List1.AddItem i & : & a(i)         End If     Loop Until i >= 10 End Sub   Private Function nc(ByVal n As Integer) As Boolean  错误为无ByVal     Dim a(3) As Integer, i As Integer, j As Integer     i = 1     Do         a(i) = n Mod 10         n = n \ 10         i = i + 1     Loop Until n <= 0     For i = 1 To 2         For j = i + 1 To 3             If a(i) = a(j) Then Exit Function     错误为 Exit For         Next j     Next i     nc = True End Function   二、编程题 【题目】数组中10个元素的值各不相同,以数组第一个元素作为基准数,将小于基准数的元素向低下标端移,将大于基准数的元素向高下标端移。划分结束,基准数定位于第I元素。并且下标小于 I 的元素的值均小于基准数,下标大于 I 的元素的值均大于基准数。 Option Explicit Option Base 1 Private Sub Command1_Click()     Dim A(10) As Integer, I As Integer, K As Integer, idx As Integer     Dim B(10) As Integer     Do While idx < 10         K = Int(20 * Rnd) + 1         For I = 1 To idx             If K = A(I) Then Exit For         Next I         If I > idx Then             idx = idx + 1             A(idx) = K             Text1 = Text1 & Str(A(idx))         End If     Loop     Call Sub1(A)     For I = 1 To 10         Text2 = Text2 & Str(A(I))     Next I End Sub Private Sub Sub2(A() As Integer, Result() As Integer)     Dim I As Integer, Uba As Integer, Lp As Integer, Hp As Integer     Dim K As Integer     Uba = UBound(A)     Lp = 1: Hp = Uba     K = A(1)     For I = 2 To Uba         If A(I) < K Then             Result(Lp) = A(I)             Lp = Lp + 1         Else             Result(Hp) = A(I)             Hp = Hp - 1         End If         Result(Lp) = K     Next I End Sub Private Sub Sub1(A() As Integer)     Dim K As Integer, I As Integer, J As Integer     Dim P As Integer     P = 1     For I = 2 To UBound(A)         K = A(I)         If K < A(P) Then             P = P + 1             For J = I - 1 To 1 Step -1                 A(J + 1) = A(J)             Next J             A(1) = K         End If     Next I End Sub     Private Sub Command2_Click()     Text1 =     Text2 = End Sub
本文档为【vb江苏高07春vb上机】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_753891
暂无简介~
格式:doc
大小:140KB
软件:Word
页数:21
分类:工学
上传时间:2018-09-09
浏览量:98