1、2008春VB03一、改错题(14分)【题目】本程序功能是求二维的随机整数数组每一行元素中素数的个数。Option ExplicitDim a() As Integer, m As Integer, n As IntegerPrivate Sub Command1_Click() Dim i As Integer, j As Integer m = InputBox(行数, , 4) n = InputBox(列数, , 5) ReDim a(m, n) For i = 1 To m For j = 1 To n a(i, j) = Int(Rnd * 90) + 10 Picture1.Pr
2、int a(i, j); Next j Picture1.Print Next iEnd SubPrivate Sub Command2_Click() Dim i As Integer, j As Integer Dim k As Integer, m As Integer, n As Integer k = 0 For i = 1 To m For j = 1 To n If prime(a(i, j) Then k = k + 1 Next j Text1 = Text1 & k & vbCrLf Next iEnd SubPrivate Function prime(n As Inte
3、ger) As Boolean Dim i As Integer For i = 2 To Sqr(n) If n Mod i = 0 Then Exit For Next i prime = TrueEnd Function【要求】1 新建工程,输入上述代码,改正程序中的错误;2 改错时,不得增加或删除语句,但可适当调整语句位置;3 将窗体文件和工程文件分别命名为F1和P1,并保存到软盘A的根目录下。二、编程题(26分)【题目】编写程序,查找给定范围A, B内所有升序完全平方数。所谓升序完全平方数是指该数的平方根是一个整数,且组成该数的各位数字由左至右,依次递增。例如13689的平方根是11
4、7,它就是一个升序完全平方数。【编程要求】1 程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2 运行程序,在文本框1和文本框2中分别输入A与B的值,按“查找”按钮,开始查找并在列表框中显示结果;按“清除”按钮,则将所有文本框与列表框清空,焦点置于文本框1上;3 程序中应定义一个名为sx的函数过程,用于判断一个正整数是否为升序数。【提示】判断一个整数是否为升序数,首先要分解得到该数的各位数字,再逐位依次判断其大小。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到软盘A的根目录下。2008秋VB01一、改错题(14分)【题目】本程序
5、的功能是:随机生成一个有n个元素的数组(n由InputBox函数输入),找出其中的最大元素并将它删除,再输出删除后的数组。Option ExplicitOption Base 1Dim a() As Integer, n As IntegerPrivate Sub Command1_Click() Dim i As Integer n = InputBox(请输入数组个数, , 10) ReDim a(n) For i = 1 To n a(i) = Int(Rnd * 100) + 1 Text1 = Text1 & Str(a(i) Next i Call lookup(a) For i
6、= 1 To n Text2 = Text2 & Str(a(i) Next iEnd SubPrivate Sub lookup(a() As Integer) Dim maxv As Integer, maxp As Integer, i As Integer maxv = a(1): maxp = 1 For i = 2 To n If a(i) maxv Then maxv = a(i): maxp = i End If Next i Call move_f(a, maxp)End SubPrivate Sub move_f(a() As Integer, k As Integer)
7、Dim i As Integer For i = k + 1 To UBound(a) a(i) = a(i + 1) Next i ReDim a(UBound(a) - 1)End Sub 【要求】4 新建工程,输入上述代码,改正程序中的错误;5 改错时,不得增加或删除语句,但可适当调整语句位置;3. 将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程题(26分)【题目】编写程序,找出介于a和b之间所有能构成幻影素数的数。所谓幻影素数是指自身为素数,其反序数也是素数的数。例如107和701都是素数,所以107是幻影素数。【编程要求】1.程序参考界面如图所示,编程时不
8、得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2.运行程序,在文本框A和文本框B中输入指定数据范围,再按“运行”按钮,将找出的幻影素数存放在列表框中(若指定区间无幻影素数,则输出“本区间无幻影素数”)。按“清除”按钮,将文本框和列表框清空,焦点置于文本框A上;3.程序中应定义一个名为prime的函数过程,用于判断一个整数是否为素数;再定义一个求一个整数的反序数的通用过程。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。2008秋VB02一、改错题(14分)【题目】本程序的功能是查找80150范围内的特殊十进制数据,其特点是该十进制数对应的8进
9、制数为回文数(指从左向右读与从右向左读是一样的数)。例如十进制数据105对应八进制数为151,151属于回文数,所以105就是符合要求的数。Option ExplicitPrivate Sub Command1_Click() Dim i As Integer, hw As String, fg As Boolean Dim st As String For i = 80 To 150 fg = False Call hw8(i, hw, fg) If fg Then st = CStr(i) & = & hw & &O List1.AddItem st End If Next iEnd Su
10、bPrivate Sub hw8( n As Integer, hw As String, f As Boolean) Dim k As Integer, st() As String * 1, i As Integer hw = Do k = k + 1 ReDim Preserve st(k) st(k) = n Mod 8 hw = st(k) & hw n = n 8 Loop Until n 0 For i = 1 To UBound(st) / 2 If st(i) st(UBound(st) - i + 1) Then Exit For Next i f = TrueEnd Su
11、b【要求】1新建工程,输入上述代码,改正程序中的错误;2改错时,不得增加或删除语句,但可适当调整语句位置;3将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程题(26分)【题目】编写程序,验证任意一个不超过9位的自然数,经过下述的反复变换最终得到123。变换方法是:统计该数的偶数(0算偶数)个数记为a,奇数个数记为b,数据位数记为c;以a为百位数、b为十位数、c为个位数,得到一个新数(若a=0,则以b为百位数、a为十位数),若这个新数不是123,再按上述步骤进行变换,直到出现123为止。123被称为陷阱数。【编程要求】1.程序参考界面如图所示,编程时不得增加或减少界面对
12、象或改变对象的种类,窗体及界面元素大小适中,且均可见;2.运行程序,在文本框1中任意输入一个不超过9位的自然数后,按“验证”按钮,则根据变换规则生成新数,将其输出到列表框,重复变换操作,直到得到123为止,最后输出“验证成功”信息;按“清除”按钮,将文本框和列表框清空,焦点置于文本框上;按“结束”按钮,结束程序运行;3.程序中应定义一个名为Validate的通用过程,用于对数据进行变换操作。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。2009秋VB01一、改错题(14分)【题目】本程序的功能是,将24位真彩色图像的一个像素的颜色值,转换成用十进制表示的红、绿、蓝三
13、基色的亮度值。Option ExplicitOption Base 1Private Sub Command1_Click() Dim st As String, c(3) As String * 8 Dim k As Integer, color(3) As String color(1) = 红色 color(2) = 绿色 color(3) = 蓝色 st = Text1 Do k = k + 1 c(k) = Left(st, 8) st = Right(st, Len(st) - 8) Loop Until k 3 For k = 1 To 3 Text2 = Text2 & col
14、or(k) & : & b2d(c) & vbCrLf NextEnd SubPrivate Function b2d(s As String) As Integer Dim k As Integer Do b2d = b2d + Val(Right(s, 1) * 2 k s = Left(s, Len(s) - 1) k = k + 1 Loop Until k = Len(s)End Function【要求】1 新建工程,输入上述代码,改正程序中的错误;2 改错时,不得增加或删除语句,但可适当调整语句位置;3 将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程题(
15、26分)【题目】编写程序,随机生成m行n列由1位非零整数组成的数组;并分别求出数组中所有周边元素之和与非周边元素(内部)之和。(m、n由InputBox函数输入,缺省值分别为4、5)【编程要求】1. 程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2. 运行程序,按“运行”按钮,出现如图的InputBox函数窗口,分别输入数组行、列数(或使用缺省值)后按“确定”,则生成随机数组并显示在图片框中,并在文本框1与2中分别输出数组周边元素之和与非周边元素(内部)之和;按“清除”按钮,将所有文本框和图片框清空;按“结束“按钮”结束程序运行;3. 程
16、序中应定义一个通用过程,用于求二维数组的周边元素之和与非周边元素之和。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。 2009秋VB02一、改错题(14分)【题目】本程序的功能是,找出所有两位整数中的“镜反平方数对”。所谓“镜反平方数对”是指数对n与m,它们满足条件:n与m不含有数字0,且n不等于m;n的反序数是m,n的平方数的反序数等于m的平方。例如12与21,12的平方是144,其反序数是441,而21的平方正好等于441;所以12与21是镜反平方数对。Option ExplicitPrivate Sub Command1_Click() Dim n As In
17、teger, fn As Integer, st As String For n = 11 To 99 If InStr(CStr(n), 0) 0 Then fn = fx(n) If validate(n, fn) And n fn Then st = n & 2= & n 2 & , & fn & 2= & fn 2 List1.AddItem st End If End If Next n If List1.ListCount = 0 Then List1.AddItem 无镜反平方数End SubPrivate Function fx(n As Integer) As Integer
18、 Dim s As String Do s = s & Str(n Mod 10) n = n 10 Loop Until n = 0 fx = sEnd FunctionPrivate Function validate(p As Integer, q As Integer) As Boolean If fx(p 2) = q 2 Then validate = True End IfEnd Function【要求】1.新建工程,输入上述代码,改正程序中的错误;2.改错时,不得增加或删除语句,但可适当调整语句位置;3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程
19、题(26分)【题目】编写程序,找出输入字符串ASCII代码值最大的字符,把它移动到原字符串的末尾,其他字符的排列顺序维持不变。例如,输入“student”,结果是“stdentu”(若输入字符串中含有多个最大字符,只移动其中的一个)。【编程要求】1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2.运行程序,首先在“原字符串”文本框中输入测试字符串,然后按“处理”按钮,接受输入并按要求进行相关处理,将得到的新字符串输出到“新字符串”文本框中;按“清除”按钮,将两个文本框清空,焦点置于“原字符串”文本框上;按“结束”按钮,结束程序运行;3.
20、程序中应定义一个通用过程,用于找出一个字符串中ASCII代码最大的字符及其位置。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。2009秋VB03一、改错题(14分)【题目】本程序的功能是,找出指定范围内的五位整数中,由不同数字组成的所有素数。Option ExplicitPrivate Sub Command1_Click() Dim n As Long For n = 34567 To 40000 If prime(n) Or validate(n) Then Text1 = Text1 & n & vbCrLf End If Next n If Text1 =
21、Then Text1 = 无符合要求的数End SubPrivate Function prime(n As Long) As Boolean Dim i As Integer For i = 2 To Sqr(n) If n Mod i = 0 Then Exit Function Next i prime = TrueEnd FunctionPrivate Function validate(n As Long) As Boolean Dim num(5) As Integer, i As Integer, k As Integer For i = 1 To 5 num(i) = n Mo
22、d 10 n = n / 10 Next i For i = 1 To 4 For k = i + 1 To 5 If num(i) = num(k) Then Exit Function Next k Next i validate = TrueEnd Function【要求】1.新建工程,输入上述代码,改正程序中的错误;2.改错时,不得增加或删除语句,但可适当调整语句位置;3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程题(26分)【题目】设24位真彩图像的一个像素的颜色值用A1A2B1B2C1C2形式的十六进制数表示,其中A1A2、B1B2、C1C2分别表示
23、红、绿、蓝三种颜色的亮度值。编写程序,分别求出该像素红(R)、绿(G)、蓝(B)三种颜色以十进制数表示的亮度值。【编程要求】1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2.运行程序,首先在文本框1中输入像素以十六进制数表示的颜色值,然后按“运行”按钮,对颜色值进行处理,并将处理结果按下图给出的形式显示在多行文本框2中;按“清除”按钮,将两个文本框清空,焦点置于文本框1上;按“结束”按钮,结束程序运行;3.程序中应定义一个名为h2d的通用过程,其功能是将一个十六进制数转换为十进制数。【要求】将窗体文件和工程文件分别命名为F2和P2,并
24、保存到T盘的根目录下。2010春VB02一、改错题(14分)【题目】本程序的功能:利用随机函数生成n个可被3整除、且至少包含一个8的三位整数。Option ExplicitPrivate Sub Command1_Click() Dim n As Integer, a() As Integer, i As Integer Dim st As String n = InputBox(数据个数n:, 查找, 15) ReDim a(n) Call find(a) For i = 1 To n If n Mod 3 0 Then st = st & Str(a(i) Else st = st & S
25、tr(a(i) & vbCrLf End If Next i Text1 = stEnd Sub Private Sub find(a() As Integer) Dim ub As Integer, k As Integer, p As Integer Dim s As String Randomize ub = UBound(a) Do p = Int(Rnd * 899) + 100 s = CStr(p) If InStr(s, 8) 0 Or p Mod 3 = 0 Then k = k + 1 a(k) = p End If Loop Until k ub End Sub【要求】1
26、.新建工程,输入上述代码,改正程序中的错误;2.改错时,不得增加或删除语句,但可适当调整语句位置;3.将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、编程题(26分)【题目】编写程序,求指定范围内的非素数整数的所有真因子(除1和自身以外的因子)。【编程要求】1.程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2.运行程序,首先在X文本框和Y文本框中输入相应的数据后,按“运行”按钮,进行相关处理,在列表框中按给定格式输出结果;按“清除”按钮,清空两个文本框和列表框,焦点置于文本框X上,按“结束”按钮,结束程序运行;3.程
27、序中应定义一个通用过程,用于求整数的所有真因子。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。 2010秋VB01一、改错题(14分)【题目】本程序的功能是,找出10100之间的所有只有奇数真因子的整数。所谓数据n的真因子是指除了1和n之外的因子。Option ExplicitOption Base 1Private Sub Cmd1_Click() Dim fac() As Integer, n As Integer Dim i As Integer, sn As String, flag As Boolean flag=false For n = 10 To 1
28、00 Call jsyz(n, fac, flag) If flag Then sn = n & : For i = 1 To UBound(fac) sn = sn & fac(i) & , Next i List1.AddItem Left(sn, Len(sn) - 1) End If Next nEnd SubPrivate Sub jsyz(n As Integer, fa() As Integer, flag As Boolean) Dim i As Integer, k As Integer,n as Integer For i = 2 To n - 1 If n Mod i =
29、 0 Then If i Mod 2 0 Then k = k + 1 ReDim fa(k) fa(k) = i Else Exit Sub End If End If Next i If k 0 Then flag = TrueEnd Sub【要求】1. 新建工程,输入上述代码,改正程序中的错误;2. 改错时,不得增加或删除语句,但可适当调整语句位置;3. 将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、 编程题(26分)【题目】编写程序,随机生成一个元素值为1040之间整数的4行5列数组;找出该二维数组的最大元素与最小元素,并将最大元素与最小元素的值以及相应的行号和
30、列号输出到图片框中。(注意:数组最大元素与最小元素都可能有多个)【编程要求】1、 程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2、 运行程序,按“运行”按钮,则生成随机数组并显示在图片框Pic1中,并在图片框Pic2中输出数组最大元素值和最小元素值机相应的数组元素的行号与列号;按“清除”按钮,将两个图片框清空,焦点置于“运行”按钮;按“结束”按钮,结束程序运行;3、 程序中应定义一个通用过程maxmin,用于求二维数组最大元素值与最小元素值。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。2010秋VB02一、
31、改错题(14分)【题目】本程序的功能是,查找首末两位数字之和与中间两位数字之和相等的四位素数。Option ExplicitPrivate Sub CmdFind_Click() Dim i As Integer, Fg As Boolean For i = 1001 To 9999 Fg = False Call PD(i, Fg) If Prime(i) And Fg Then List1.AddItem i Next iEnd SubPrivate Function Prime(n As Integer) As Boolean Dim k As Integer For k = 2 To
32、Sqr(n) If n Mod k = 0 Then Exit For Next k Prime = TrueEnd FunctionPrivate Sub PD( n As Integer, Flg As Boolean) Dim i As Integer, A(4) As Integer, S As Integer Dim L As IntegerL = Len(Str(n) For i = 1 To L A(i) = n Mod 10 n = n 10 Next i If A(1) + A(4) = A(2) + A(3) Then Flg = True End IfEnd Sub【要求
33、】1新建工程,输入上述代码,改正程序中的错误;2. 改错时,不得增加或删除语句,但可适当调整语句位置;3. 将窗体文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、 编程题(26分)【题目】编写程序,输入一个5位以上的整数,将组成该数的各位数字重新排列成一个与原整数位数相同的最小整数。【编程要求】1. 程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;2. 运行程序,在输入数据文本框中输入一个5位以上的整数后,按“开始”按钮,则在相应的文本框中,显示得到的最小数;按“清除”按钮,将所有文本框清空,焦点置于输入数据文本框上;按“结
34、束”按钮,结束程序运行;3. 程序中应定义通用过程,用于求由给定整数的各位数字组成的最小数。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。2010秋VB03一、改错题(14分)【题目】本程序的功能是,在5张卡片上写有1、2、3、4、5五个数,对卡片进行排列(5张卡片的全排列共有5!种),找出同时符合以下两个条件的所有排列:相邻卡片上的数不相邻;首尾卡片上的数不相邻。这里所谓相邻是指两数差的绝对值为1。Private Sub CmdRun_Click() Dim i As Long, j As Integer, S As String * 5, Char(5) As
35、String * 1Dim BL As BooleanBL=False For i = 12345 To 54321 S = CStr(i) Call Validate(S, Char, BL) If BL Then For j = 2 To Len(S) If Abs(Char(j - 1) - Char(j) = 1 Then Exit For End If Next j If j Len(S) Or Abs(Char(1) - Char(5) 1 Then List1.AddItem i End If End If Next iEnd SubPrivate Sub Validate(S
36、As String, Ch() As String * 1, Flg As Boolean) Dim i As Integer, j As Integer For i = 1 To 5 Ch(i) = Mid(S, i, 1) If Ch(i) = 0 Or Ch(i) 5 Then Exit For For j = 1 To i - 1 If Ch(i) = Ch(j) Then Exit Sub End If Next j Next i Flg = TrueEnd Sub【要求】1新建工程,输入上述代码,改正程序中的错误;2. 改错时,不得增加或删除语句,但可适当调整语句位置;3. 将窗体
37、文件和工程文件分别命名为F1和P1,并保存到T盘的根目录下。二、 编程题(26分)【题目】编写程序,在10019999范围内,找出满足下列条件的数对:首尾数字相同的素数,若将数的百位和十位数字互换后得到的新4位数也是素数;数对的第一个数小于第二个数。例如:(1021 1201)是满足条件的数对,而(1201 1021)则不满足条件。【编程要求】4. 程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;5. 运行程序,找出满足条件的数对,按图示的格式将数对显示在多行文本框Text1中;按“清除按钮”,将文本框清空,并将焦点设置在“运行”按钮上;按“结束”按钮,则结束程序运行; 6. 程序中要求定义两个通用过程;一个是判断一个数是否是素数的Function过程,另一个是将首尾数字相同的百位和十位数字互换后得到一个新的4位数的子程序过程。【要求】将窗体文件和工程文件分别命名为F2和P2,并保存到T盘的根目录下。