程序改错

更新时间:2024-05-31 14:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1『Visual Basic——程序改错』

'【程序改错】462?

'------------------------------------------------

'题目:请修改程序中错误,保证程序最后输出效果如图1所示。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Option Explicit

Private Sub Form_Click() Dim i As Integer

For i = 1 To 7

'**********FOUND********** Print Spc(7);

'**********FOUND********** If i >= 1 Then Print \

Else

'**********FOUND********** Print \ End If Next i

End Sub 1. Space 2.

3.space

2『Visual Basic——程序改错』 '【程序改错】463

'------------------------------------------------

'题目:以下程序功能是输入三个数,由大到小排序。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Option Explicit Dim A As Integer Dim B As Integer Dim C As Integer Private Sub Form_Click()

Dim nTemp As Integer A = Val(InputBox(\输入正整数\ B = Val(InputBox(\输入正整数\ C = Val(InputBox(\输入正整数\ '**********FOUND********** If A <= C Then nTemp = A

A = B

B = nTemp End If

'**********FOUND********** If B <= C Then nTemp = A A = C C = nTemp End If

'**********FOUND********** If A <= B Then nTemp = B B = C

C = nTemp

End If

Print \End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If A <= B Then 或 If B >= A Then 2 If A <= C Then 或 If C >= A Then 3 If B <= C Then 或 If C >= B Then

3『Visual Basic——程序改错』 '【程序改错】464?

'------------------------------------------------

'题目:歌德巴赫猜想:任何一个大于或等于六的偶数都可 ' 以分解成两个素数之和,请修正下面程序的错误。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click()

Dim i As Integer, j As Integer, k As Integer, m As Integer Dim n As Integer, m1 As Integer, m2 As Integer, num num = Val(InputBox(\请输入要验证的整数范围最大值(MAX)\For i = 6 To num Step 2 For j = 3 To i

'**********FOUND********** k = Sqr(j)

For m = 2 To k

'**********FOUND********** If j Mod m = 0 Then End

Next m

If m > k Then n = i - j

m1 = Int(Sqr(n)) For m2 = 2 To m1

If n Mod m2 = 0 Then Exit For Next m2

'**********FOUND**********

If m2 <> m1 Then Print i; \ End If Next j Print Next i End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 k = Int(Sqr(j))

2 If j Mod m = 0 Then Exit For

3 If m2 > m1 Then Print i; \

4『Visual Basic——程序改错』 '【程序改错】465?

'------------------------------------------------

'题目:用InputBox函数输入一个字符串,编写程序按与 ' 输入的字符相反的次序用Msgbox函数输出这个字 ' 符串。如输入字符串为\,则输出为\' gfedcba\,输出效果如图1。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click()

Dim pristr As String, outstr As String Dim i As Integer

pristr = InputBox(\ '**********FOUND********** For i = 0 To Len(pristr)

'**********FOUND********** outstr = outstr + Mid(pristr, Len(pristr) - i) Next i

'**********FOUND********** MsgBox outstr, , \End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 For i = 0 To Len(pristr) - 1

2 outstr = outstr + Mid(pristr, Len(pristr) - i, 1) 3 MsgBox outstr, vbQuestion, \

5『Visual Basic——程序改错』 '【程序改错】466

'------------------------------------------------

'题目:下边是一个小动画程序,在窗体上放一个标签Label1, ' 每过1秒钟标签Label1的背景颜色由红到蓝,由蓝到绿, ' 再由绿到红循环变化,并自动修改标签Label1的Left, ' Top值使其从左上角沿窗体的对角线移动到窗体的右下角, ' 如此往复从而实现动画。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private flag As Integer Private Sub Form_click() Timer1.Enabled = True End Sub

Private Sub Form_Load() Timer1.Interval = 1000 Label1.Left = 0

Label1.Top = 0

Label1.BackColor = vbBlack Timer1.Enabled = False End Sub

Private Sub Timer1_Timer()

If Label1.Left < Left + Width And Label1.Top <= Top + Height Then Label1.Left = Label1.Left + 100 * Width / Height Label1.Top = Label1.Top + 100 Else

Label1.Left = Left Label1.Top = Top End If If flag = 0 Then

Label1.BackColor = vbBlue

'**********FOUND********** flag = 0

ElseIf flag = 1 Then

Label1.BackColor = vbGreen '**********FOUND********** flag = 1 Else

Label1.BackColor = vbRed '**********FOUND********** flag = 2 End If End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 flag = 1 2 flag = 2

3 flag = 0

6『Visual Basic——程序改错』 '【程序改错】467

'------------------------------------------------

'题目:从计算机输入三个数 , 找出中间数

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub FindMidNum()

Dim x As Integer, y As Integer, z As Integer, A As Integer x = InputBox(\ y = InputBox(\ z = InputBox(\ '**********FOUND********** If x > y Then A = x x = y y = A End If

'**********FOUND********** If y = z Then Print y

'**********FOUND********** ElseIf x = z Then Print z Else

Print x

End If

End Sub

Private Sub Form_Click() FindMidNum End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If x < y Then 或 If y > x Then 2 If y >= z Then 或 If z <= y Then 3 ElseIf x >= z Then 或 ElseIf z <= x Then

7『Visual Basic——程序改错』 '【程序改错】468?

'------------------------------------------------

'题目:编写一程序,实现对文本框里的文字查找并清除某 ' 一字符串,直到文本框中不再存在它。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Function StringClear(sSource As String, sSearch As String) As String Dim j As Integer, res As String '**********FOUND********** res = sSearch

'**********FOUND********** Do While Mid(res, sSearch) j = InStr(res, sSearch)

'**********FOUND********** res = Left(res, j) & Mid(res, j + 2) Loop

StringClear = res End Function

Private Sub Command1_Click() Dim Searchstr As String

If Text1.Text <> \

Searchstr = InputBox(\ Text1.Text = StringClear(Text1.Text, Searchstr) End If

End Sub

-------------------------------------------------- 『图片数目』:0张

『文件数目』:2张 『答 案』:

1 res = sSource

2 Do While InStr(res, sSearch)

3 res = Left(res, j - 1) & Mid(res, j + 2)

8『Visual Basic——程序改错』

'【程序改错】469

'------------------------------------------------

'题目:已知一个函数f(x)=1000*sin(x),利用绘图方法 ' 在图片框中显示其图形。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Const pi = 3.14159

Private Sub Command1_Click()

'**********FOUND********** Dim x As Integer

Picture1.Scale (-pi, -1200)-(pi, 1200) '**********FOUND********** For x = -pi To pi Step pi

'**********FOUND**********

Picture1.PSet (x, 1000 * pi * Sin(x)), vbRed Next x End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 Dim x As Single

2 For x = -pi To pi Step pi / 180

3 Picture1.PSet (x, 1000 * Sin(x)), vbRed

9『Visual Basic——程序改错』 '【程序改错】470

'------------------------------------------------

'题目:在窗体上有两个命令按钮和一个文本框,名称分别为 ' cmdstart(\开始\)、cmdend(\结束\)和Text1。

' 文本框Text1中的字符个数不超过200个。程序刚开始 ' 运行时,\结束\按钮成灰色,单击\开始\按钮后,将 ' 文本框Text1.text中的字符按其ASCII码值由大到小自 ' 左而右重新组合,并在窗体上输出 重组后的字符串,同 ' 时使\结束\按钮能响应而\开始\按钮不能响应。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_load()

'**********FOUND********** Cmdend.Enabled = True End Sub

Private Sub Cmdstart_click()

Dim n As Integer, I As Integer, j As Integer, p As Integer Dim a(200) As String * 1, str1 As String, t As String str1 = Text1.Text n = Len(str1)

For I = 1 To n

a(I) = Mid(str1, I, 1) Next I

'**********FOUND********** For I = 0 To n - 1 p = I

For j = I + 1 To n

'**********FOUND********** If a(p) < a(j) Then j = p

Next j

If p <> I Then t = a(I): a(I) = a(p): a(p) = t Next I

For I = 1 To n Print a(I); Next I

Cmdend.Enabled = True Cmdstart.Enabled = False End Sub

Private Sub Cmdend_click() End

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:3张 『答 案』:

1 Cmdend.Enabled = False 2 For I = 1 To n - 1 3 If a(p) < a(j) Then p = j

10『Visual Basic——程序改错』 '【程序改错】471

'------------------------------------------------

'题目:本程序将一个大于100的偶数n分解为两个素数之和, ' 其中nflag逻辑函数用于判断自然数x是否为素数. '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim n As Integer, x As Integer, y As Integer n = Val(InputBox(\请输入一个大于100的偶数\输入数据\ For x = 3 To n \\ 2 Step 2

'**********FOUND********** If x = 0 Then y = n - x

'**********FOUND********** If nflag(x) Then

Form1.Print n; \ Exit For End If End If Next x End Sub

Function nflag(x As Integer) As Boolean Dim flag As Boolean Dim k As Integer Dim m As Integer k = 2: m = Int(Sqr(x)) flag = True

Do While k <= m

'**********FOUND********** If x Mod k = 0 Then flag = True k = k + 1 Loop nflag = flag End Function

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张

『答 案』:

1 If nflag(x) Then 或 If nflag(x) = True Then 2 If nflag(y) Then 或 If nflag(y) =True Then 3 If x Mod k = 0 Then flag = False

11『Visual Basic——程序改错』 '【程序改错】472

'------------------------------------------------

'题目:本程序功能用于将学生学过的单词在列表框中显示出来。现要完成: ' (1)单击\增加单词\按钮,将文本框Text1.Text中的单词添加到列表框 ' 中并显示列表框中的单词数;

' (2)单击\删除单词\按钮,删除列表框中被选中的项并显示列表框中的单词数; ' (3)单击\全部清除\按钮,删除列表框的全部选择项并显示列表框中的单词数; ' (4)单击\退出\按钮,结束程序。

' 请修正程序中存在的错误。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Load()

Label1.Caption = \请输入单词\ Label2.Caption = \单词数\ Command1.Caption = \增加单词\ Command2.Caption = \删除单词\ Command3.Caption = \全部清除\ Command4.Caption = \退出\ List1.AddItem \ List1.AddItem \ List1.AddItem \

List1.AddItem \List1.AddItem \List1.AddItem \Text1.Text = \

Text2.Text = CStr(Me.List1.ListCount) End Sub

Private Sub Command1_click() List1.AddItem Text1.Text Text2.Text = Str(List1.ListCount) Text1 = \End Sub

Private Sub Command2_click() Dim sy As String sy = List1.ListIndex

'**********FOUND********** If sy > 0 Then

'**********FOUND********** List1.RemoveItem

Text2.Text = Str(List1.ListCount) End If End Sub

Private Sub Command3_Click()

'**********FOUND********** List1.RemoveItem

Text2.Text = CStr(List1.ListCount) End Sub

Private Sub Command4_click() End End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If sy >= 0 Then 或 If 0 <= sy Then

2 List1.RemoveItem sy 或 List1.RemoveItem List1.ListIndex 3 List1.Clear

12『Visual Basic——程序改错』 '【程序改错】473?

'------------------------------------------------

'题目:下列程序进行-n阶乘运算,当阶乘的值超过-21147483648 ' 溢出报错,并将结果输出为-1。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ '**********FOUND**********

Private Function jc(ByVal n As Integer) As Integer Dim I As Integer Dim result As Long result = 1 I = 1

Do While I <= n

If result < 2114748348 / I Then '**********FOUND********** result = result I = I + 1

Else

lblerr.Caption = \溢出\

'**********FOUND********** jc = -I Exit Function End If Loop

jc = result

End Function

Private Sub Form_Click() MsgBox jc(3) End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 Private Function jc(ByVal n As Integer) As Long 2 result = result * I 或 result = I * result 3 jc = -1

13『Visual Basic——程序改错』 '【程序改错】474

'------------------------------------------------

'题目:程序功能为求解一元二次方程的实根,请修正程序中错误。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Load()

Dim a, b, c, root1, root2, work As Double a = Val(InputBox(\请输入系数a的值\ b = Val(InputBox(\请输入系数b的值\ c = Val(InputBox(\请输入系数c的值\ '**********FOUND********** work = b * 2 - 4 * a * c

If work >= 0 And a <> 0 Then

'**********FOUND********** root1 = (Sqr(work)) / (2 * a)

'**********FOUND**********

root2 = (Sqr(work)) / (2 * a)

Debug.Print \有二个实根\ Else

Debug.Print \无实根!\ End If

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 work = b ^ 2 - 4 * a * c

2 root1 = (-b + Sqr(work)) / (2 * a) 或 root1 = ( Sqr(work) -b ) / (2 * a)

3 root2 = (-b - Sqr(work)) / (2 * a) 或 root2 = (- Sqr(work) - b) / (2 * a)

14『Visual Basic——程序改错』 '【程序改错】475?

'------------------------------------------------

'题目:本程序求3~100之间的所有素数学(质数)并统计个数; ' 同时将这些素数从小到大依次写入顺序文件E:\\dataout.txt; ' 素数的个数显示在窗体Form1上。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click()

Dim Count As Integer, Flag As Boolean Dim t1 As Integer, t2 As Integer '**********FOUND********** Open \ Count = 0

For t1 = 3 To 100 Flag = True

For t2 = 2 To Int(Sqr(t1))

If t1 Mod t2 = 0 Then Flag = False Next t2

If t2 > Int(Sqr(t1)) Then

'**********FOUND**********

If Flag = False Then Count = Count + 1 '**********FOUND********** Write #1, t2

End If Next t1

Form1.Print \素数个数\ Close #1 End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 Open \或 Open \ 2 If Flag Then Count = Count + 1 或 If Flag Then Count = 1 + Count 3 Write #1, t1 或 Write 1, t1

15『Visual Basic——程序改错』 '【程序改错】476?

'------------------------------------------------

'题目:由输入对话框输入n(设n为大于零且小于30的自然数),

' 计算如图1所示的表达式,并在标签框Label1上显示。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim n As Integer, sum As Double, k As Integer n = Val(InputBox(\请输入自然数n(n>0 且n<30)\ '**********FOUND********** Do While n > 0 Or n < 30 n = Val(InputBox(\请重输入\ Loop sum = 0 k = 0 Do

'**********FOUND********** k = sum + k

sum = sum + 1 / (k * (k + 1)) '**********FOUND********** Loop Until k > n

Label1.Caption = \ End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 Do While n <= 0 Or n >= 30 或 Do While ★n★<=★0★Or★n>=★30 2 k = k + 1 或 k = 1 + k

3 Loop Until k >= n 或 Loop Until n <= k

16『Visual Basic——程序改错』 '【程序改错】477?

'------------------------------------------------

'题目:用输入对话框输入x,根据公式(图1)计算对应的y, ' 并在窗体上输出y的值。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub Command1_Click() Dim x As Single, y As Single x = Val(InputBox(\输入X的值\ If x = 10 Then

y = 0

'**********FOUND********** Else x > 10 Then

'**********FOUND********** y = Str(x) + Sin(x) Else

'**********FOUND********** y = 2 * x ~ 3 + 6 End If Print y

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 ElseIf x > 10 Then 或 ElseIf 10 < x Then

2 y = Sqr(x) + Sin(x) 或 y =★Sqr(x)★+★Sin(x) 3 y = 2 * x ^ 3 + 6

17 『Visual Basic——程序改错』 '【程序改错】478

'------------------------------------------------

'题目:密码判断程序,如果密码为12345则显示“恭喜,密码正确”, ' 否则显示“很遗憾,密码错误”,要求文本框中只允许输入数字。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim strPws As String strPws = Trim(Text1.Text) '**********FOUND********** If Len(strPws) <> 0 Then Exit Sub If strPws = \

'**********FOUND********** MsgBox \恭喜,密码正确\验证 Else

MsgBox \很遗憾,密码错误\验证\ End If End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer) '**********FOUND**********

If Not (KeyAscii >= 49 And KeyAscii <= 57) Then KeyAscii = 0

End If End Sub

--------------------------------------------------

『图片数目』:0张

『文件数目』:2张 『答 案』:

1 If Len(strPws) = 0 Then Exit Sub 或 If 0 = Len(strPws) Then Exit Sub 2 MsgBox \恭喜,密码正确\验证\

3 If Not (KeyAscii >= 48 And KeyAscii <= 57) Then 或 If Not (KeyAscii > 47 And KeyAscii < 58) Then

18『Visual Basic——程序改错』 '【程序改错】479

'------------------------------------------------

'题目:下面的程序用“冒泡”法数组a中的10个整数按升 ' 序排列,请修正程序中错误。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim a

Dim i As Integer, j As Integer, a1 As Integer a = Array(-2, 5, 24, 58, 43, -10, 87, 75, 27, 83) For i = 1 To 9

'**********FOUND********** For j = i To 9

'**********FOUND********** If a(j) >= a(i) Then a1 = a(i) a(i) = a(j)

'**********FOUND********** a(j) = a(i) End If Next j Next i For i = 0 To 9 Print a(i) Next i End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张

『答 案』:

1 For j = i + 1 To 9 或 For j = 1 + i To 9 2 If a(i) >= a(j) Then 3 a(j) = a1

19『Visual Basic——程序改错』 '【程序改错】480

'------------------------------------------------

'题目:下面函数的功能是:求变量s(s=a+aa+aaa+aaaa+??)

' 的值。其中,a是一个0-9的数字,总共累加a项。列如, ' 当a=3时,s=3+33+333 (共累加3项)。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Public Function Calc(a As Integer) Dim s As Long Dim t As Long Dim i As Integer s = a

'**********FOUND********** t = 1

For i = 2 To a

'**********FOUND********** t = t + a s = s + t Next i Calc = s Print s End Function

Private Sub Command1_Click() Dim i As Integer

i = InputBox(\请输入数字(0-9):\ '**********FOUND********** Calc (i)

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 t = a

2 t = t * 10 + a 或 t =★t * 10★+★a 或 t =★t★*★10★+★a 3 Calc i 或 Call Calc(i)

20『Visual Basic——程序改错』 '【程序改错】481

'------------------------------------------------

'题目:下面程序的功能是将一个整数转化为数值字符串, ' 列如123,转化为\转化为“-123”

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Function NtoC(ByVal n As Single)

Dim sign As Boolean, i%, a%, count%, temp%(100) Dim strc As String sign = False

'**********FOUND********** If n < 0 Then sign = False n = Abs(n)

Do While n > 0

'**********FOUND********** a = n / 10 n = n \\ 10

'**********FOUND********** count = 1

temp(count) = a Loop

If sign Then strc = \ For i = count To 1 Step -1

strc = strc + Chr(Asc(\ Next i

NtoC = strc End Function

Private Sub Command1_Click() Print NtoC(-123)

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If n < 0 Then sign = True 2 a = n Mod 10

3 count = count + 1 或 count = 1 + count

21『Visual Basic——程序改错』

'【程序改错】482

'------------------------------------------------

'题目:请根据下列描述编写购物优惠程序。某商场为了 ' 加速促成商品流通,采用购物打折的优惠办法,每 ' 位顾客一次购物(1)在100元以上者,按九五折优惠; ' (2)在200元以上者,按九折优惠;(3)300元以上 ' 者,按八折优惠;(4)500元以上者按七折优惠。在窗体

' 上添加两个文本框和一个命令按钮,要求在Text1中输入 ' 购物商品总金额,单击命令按钮,在Text2中输出优惠价。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 100 Then

'**********FOUND********** x = y Else

If x < 200 Then y = 0.95 * x Else

If x < 300 Then y = 0.9 * x Else

If x < 500 Then y = 0.8 * x Else

y = 0.7 * x

'**********FOUND********** else If End If End If End If

'**********FOUND********** Text2.Text = x End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 y = x 2 End If

3 Text2.Text = y 或 Text2 = y

22『Visual Basic——程序改错』 '【程序改错】483?

'------------------------------------------------

'题目:列表框应用程序。要求从文本框中输入课程名称, ' 然后按\添加\按钮,把姓名添加到列表框中;当选 ' 择列表框中某一项后,按\删除\按钮,则从列表框

' 中删除该项;当选择列表框中某一项后,按\修改\' 按钮,把列表框中选取的项送往文本框且\修改\按 ' 钮变为\修改确认\。在文本框的内容修改好后,按 ' \修改确认\按钮,再把文本框中修改后的信息送到列 ' 表框且\修改确认\按钮变为\修改\。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Load()

List1.AddItem \北京-上海\ List1.AddItem \北京-广州\ List1.AddItem \北京-四川\ List1.AddItem \北京-西安\ List1.AddItem \北京-哈尔滨\ List1.AddItem \北京-沈阳\ List1.AddItem \北京-长春\

End Sub

Private Sub Command1_Click() If Text1.Text <> \

List1.AddItem Text1.Text '将文本框中的内容加到列表框中 Text1.Text = \

Else

MsgBox \请在文本框中输入信息!\ End If End Sub

Private Sub Command2_Click()

'**********FOUND**********

If List1.ListIndex = 0 Then Exit Sub

List1.RemoveItem List1.ListIndex '删除选定的项目 End Sub

Private Sub Command3_Click()

If Command3.Caption = \修改\ Text1.Text = List1.Text Text1.SetFocus

Command1.Enabled = False Command2.Enabled = False '**********FOUND********** Command3.Caption = \修改\ Else

List1.List(List1.ListIndex) = Text1.Text Command1.Enabled = True Command2.Enabled = True Text1.Text = \

'**********FOUND**********

Command3.Caption = \修改确认\ End If End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If List1.ListIndex = -1 Then Exit Sub 2 Command3.Caption = \修改确认\ 3 Command3.Caption = \修改\

23『Visual Basic——程序改错』

'【程序改错】484

'------------------------------------------------

'题目:使用顺序文件读写方式编写一个简单的记事本应用程序, ' 基本逻辑是:假设在考生目录中有一个名为exam.txt的文 ' 本文件。当点击\打开\按钮(Command1)时,程序将exam.Txt ' 文件中的内容显示在文本框(Text1)中,当点击\新建\按钮

' (Command2)时,清空Text1中的内容;用户可以在Text1中进行 ' 编辑操作,当点击\保存\按钮(Command3)时,将Text1中的内容

' 保存在exam.txt文件中。当点击\退出\按钮(Command4)时关闭本窗体。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim A As String Text1 = \

Open \ Do While Not EOF(1)

'**********FOUND********** Input #0, A

Text1 = Text1 + A

Loop

'**********FOUND********** Close #0 End Sub

Private Sub Command2_Click() Text1 = \End Sub

Private Sub Command3_Click()

Open \ '**********FOUND**********

Input #1, Text1

Close #1 End Sub

Private Sub Command4_Click() Unload Me End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:3张 『答 案』:

1 Input #1, A 或 Input 1, A 2 Close #1 或 Close 1

3 Write #1, Text1 或 Write 1, Text1

24『Visual Basic——程序改错』 '【程序改错】485?

'------------------------------------------------

'题目:创建一个绘图程序。当程序运行时,单击\绘图\按钮, ' 在窗体的Picture控件上画出[-pi, ]即[-3.14,3.14]

' 区间的余弦曲线。要求将图片框的坐标系定义为左上角 ' 为(-4,2),右下角为(4,-2),并在图片框中画出 ' 坐标的x轴和y轴。程序运行界面如图1所示。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click()

'**********FOUND********** Dim i As Integer

'**********FOUND**********

Picture1.Scale (4, 2)-(4, 2) '定义窗体坐标 Picture1.Line (-4, 0)-(4, 0) '画x轴

Picture1.Line (0, 2)-(0, -2) '画y轴 Picture1.CurrentX = 0.2

Picture1.CurrentY = -0.1

Picture1.Print \ ' 标记原点 Picture1.CurrentX = -3.2

Picture1.CurrentY = -0.1

Picture1.Print \π\ '标记\π\ Picture1.CurrentX = 3.3 Picture1.CurrentY = -0.1 Picture1.Print \

Picture1.CurrentX = 0.2 Picture1.CurrentY = 0.9

Picture1.Print \ '标记\ Picture1.CurrentX = 0.2 Picture1.CurrentY = -0.8

Picture1.Print \ '标记\ For i = -3.141 To 3.141 Step 0.001 '**********FOUND********** Picture1.PSet (i, Sin(i)) Next i End Sub

Private Sub Command2_Click() End

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 Dim i As Single

2 Picture1.Scale (-4, 2)-(4, -2) 3 Picture1.PSet (i, Cos(i))

25『Visual Basic——程序改错』 '【程序改错】486

'------------------------------------------------ '题目:窗体的左上角坐标(-8,6),右下角坐标为(8,-6)。

' 以厘米为单位,以坐标原点为圆心画圆,程序运行界面如图1所示。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

'**********FOUND********** ScaleMode = 2

Scale (8, 6)-(8, 6)

'**********FOUND**********'自定义坐标系 Line (8, 0)-(8, 0)

'**********FOUND**********

Line (0, 6)-(0, 6)

CurrentX = 0.1: CurrentY = -0.1: Print \ '标记坐标原点 CurrentX = 7.5: CurrentY = -0.2: Print \ CurrentX = 0.2: CurrentY = 5.5: Print \ DrawWidth = 3 Circle (0, 0), 4, vbBlue Circle (0, 0), 4, vbGreen, , , 2.5 End Sub

-------------------------------------------------- 『图片数目』:1张 『文件数目』:2张 『答 案』:

1 ScaleMode = 7 2 Line (-8, 0)-(8, 0)

3 Line (0, 6)-(0, -6)

26『Visual Basic——程序改错』 '【程序改错】487

'------------------------------------------------

'题目:设窗体中有图片框Pic1,现要求在其中绘制10个同心圆, ' 然后将此图以Test.BMP作文件名存入磁盘。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Command1_Click() Dim X As Integer Dim Y As Integer

Dim I As Integer

'**********FOUND********** Dim rad(10) As Integer X = Pic1.ScaleWidth / 2 Y = Pic1.ScaleHeight / 2 For I = 0 To 9

rad(I) = 500 * Rnd Next I I = 9

'**********FOUND**********

Do Until I < 1

Pic1.Circle (X, Y), rad(I), RGB(256 * Rnd, 256 * Rnd, 256 * Rnd) '**********FOUND********** I = I + 1

Loop

SavePicture Pic1.Image, \End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 Dim rad(9) As Integer 2 Do Until I < 0 3 I = I – 1

27『Visual Basic——程序改错』 '【程序改错】488

'------------------------------------------------

'题目:编程实现从左到右的滚动字幕,滚动的速度由滚动条 ' 控件来控制。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub HScroll1_Scroll()

'**********FOUND**********

Timer1.Interval = HScroll1.Min - HScroll1.Value End Sub

Private Sub Timer1_Timer()

'**********FOUND********** If Label1.Left <= Form1.Width Then '**********FOUND********** Label1.Left = Label1.Width Else

Label1.Left = Label1.Left + 100 End If End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张

『答 案』:

1 Timer1.Interval = HScroll1.Max - HScroll1.Value 2 If Label1.Left >= Form1.Width Then 3 Label1.Left = -Label1.Width

28『Visual Basic——程序改错』 '【程序改错】489

'------------------------------------------------

'题目:给定三角形的三条边,计算三角形的面积。要求 ' 程序首先判断给定的三条边能否构成三角形。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构

'------------------------------------------------ Private Sub Form_Click()

Dim a As Single, b As Single, c As Single Dim s As Single, t As Single start: a = InputBox(\输入1边长:\ b = InputBox(\输入2边长:\ c = InputBox(\输入3边长:\

'**********FOUND********** If a + b < c Or b + c < a Then

MsgBox (\不能构成三角形,请重新输入个边\ GoTo start End If

'**********FOUND********** t = (a + b) / 2

'**********FOUND********** s = Sqr((t - a) * (t - b) * (t - c)) Print \该三角形的面积:\End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If a + b < c Or b + c < a Or a + c < b Then 2 t = (a + b + c) / 2 或 t = (a + b +★ c★) / 2

3 s = Sqr(t * (t - a) * (t - b) * (t - c)) 或 s = Sqr(★t * ★(t - a)★ * ★(t - b) ★* ★(t - c)★)

29『Visual Basic——程序改错』 '【程序改错】490

'------------------------------------------------

'题目:输入一个字符串,将所有的小写字母都转换为大写字母。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub Form_Click()

Dim s1 As String, s2 As String, i As Integer, t As String s1 = InputBox(\输入字符串,#号结束\ i = 1

'**********FOUND********** s1 = Mid(s1, i, 1) While t <> \

'**********FOUND**********

If t >= \ s2 = s2 + t

i = i + 1

t = Mid(s1, i, 1) Wend

'**********FOUND********** Print \新字符串为:\End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 t = Mid(s1, i, 1)

2 If t >= \ 3 Print \新字符串为:\

30『Visual Basic——程序改错』 '【程序改错】491

'------------------------------------------------

'题目:判断给定的年月日是该年中的第几天。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub Form_Click()

Dim year As Integer, month As Integer, day As Integer Dim days As Integer, i As Integer '**********FOUND********** Dim a(0 To 11) As Integer days = 0

For i = 1 To 12

a(i) = InputBox(\输入\月份的天数,2月暂输入为28天:\ Next i

year = InputBox(\输入年:\ month = InputBox(\输入月:\ day = InputBox(\输入日:\ For i = 1 To month

'**********FOUND********** days = days + a(i) Next i

'**********FOUND********** days = day

If year Mod 4 = 0 And year Mod 100 <> 0 Or year Mod 400 = 0 And month >= 3 Then days = days + 1

Print \该日期是该年中的第\天\End Sub

--------------------------------------------------

『图片数目』:0张 『文件数目』:2张 『答 案』:

1 Dim a(1 To 12) As Integer 2 days = days + a(i - 1) 3 days = days + day

31『Visual Basic——程序改错』 '【程序改错】492

'------------------------------------------------

'题目:输入两个正整数m和n,求其最大公约数。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim m As Integer, n As Integer, r As Integer m = InputBox(\输入m的值:\ n = InputBox(\输入n的值:\ Do While n <> 0

'**********FOUND********** r = m / n

m = n

'**********FOUND********** n = m Loop

'**********FOUND********** Print \两数的最大公因子为:\End

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 r = m Mod n 2 n = r

3 Print \两数的最大公因子为:\

32『Visual Basic——程序改错』 '【程序改错】493

'------------------------------------------------

'题目:输入两个正整数m和n,求其最大公约数。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim m As Integer, n As Integer, r As Integer m = InputBox(\输入m的值:\ n = InputBox(\输入n的值:\ Do While n <> 0

'**********FOUND********** r = m / n m = n

'**********FOUND********** n = m Loop

'**********FOUND********** Print \两数的最大公因子为:\End

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 r = m Mod n

2 n = r

3 Print \两数的最大公因子为:\

33『Visual Basic——程序改错』 '【程序改错】494

'------------------------------------------------

'题目:有5个人坐在一起,问第5个人多少岁?他说比第4个 ' 人大2岁。问第4个人岁数,他说比第3个人大2岁。 ' 问第3个人,又说比第2个人大2岁。问第2个人,说 ' 比第1个人大2岁。最后问第1个人,他说是10岁。 ' 请问第5个人有多人岁数。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Function Age(ByVal N As Integer) '**********FOUND********** If N = 5 Then Age = 10

Else

'**********FOUND********** Age = Age(N) + 2 End If

End Function

Private Sub Form_Click()

'**********FOUND********** Print Age(1) End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 If N = 1 Then 或 If 1 = N Then 2 Age = Age(N - 1) + 2 3 Print Age(5)

34『Visual Basic——程序改错』

'【程序改错】495

'------------------------------------------------

'题目:移动数组元素,将数组中某个位置的元素移动到指定位置. '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Function fMove(a%(), L1%, L2%)

Dim N As Integer, i As Integer, T As Integer '**********FOUND********** N = LBound(a) If L2 = N + 1 Then

'**********FOUND********** a(N) = a(L1) For i = L1 To N a(i) = a(i + 1) Next i Else

T = a(L1)

a(L1) = a(L2)

'**********FOUND********** a(L1) = T End If End Function

Private Sub Form_Click() Dim a%(1 To 5) Dim i As Integer For i = 1 To 5 a(i) = i Next

fMove a, 1, 5 For i = 1 To 5

Print a(i)

Next End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』: 1 N = UBound(a) 2 a(N + 1) = a(L1) 3 a(L2) = T

35『Visual Basic——程序改错』

'【程序改错】496

'------------------------------------------------

'题目:使用Timer函数设计用来暂停指定时间(秒)的Sub过程。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Static Sub delay(delaytime) Dim finish As Single

Const allseconds = 24& * 60& * 60 '**********FOUND********** finish = delaytime

If finish > allseconds Then finish = finish - allseconds '**********FOUND********** Do While Timer < finish DoEvents Loop End If

'**********FOUND********** Do While Timer > finish DoEvents Loop End Sub

Private Sub Form_Click() Print Now delay 3 Print Now End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张

『答 案』:

1 finish =★Timer★+★delaytime

2 Do While Timer > finish 或 Do While finish < Timer 3 Do While Timer < finish 或 Do While finish > Timer

36『Visual Basic——程序改错』 '【程序改错】497

'------------------------------------------------

'题目:编程求一个十进制整数n的各位数字之和,设n为小于或等于5位的数。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------

Private Sub Form_Click()

Dim N As Integer, Sum As Integer, S1 As String, S2 As String Dim i As Integer, Ch As String Sum = 0

N = InputBox(\输入整数n\ S1 = Str(N)

'**********FOUND********** S1 = LTrim(S1) For i = 1 To Len(S1)

'**********FOUND********** Ch = Mid(N, i, 1)

'**********FOUND********** Sum = Val(Ch)

Next i

Print \该整数的各位数之和是:\End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 S1 = Trim(S1) 2 Ch = Mid(S1, i, 1) 3 Sum = Sum + Val(Ch) 或 Sum =★Sum★+★Val(Ch)

37『Visual Basic——程序改错』

'【程序改错】498

'------------------------------------------------

'题目:编程求一个m*n矩阵中最大元素及其所在的行列号。 '------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim A() As Integer, max As Integer

Dim M As Integer, N As Integer Dim i As Integer, j As Integer

Dim col As Integer, row As Integer M = InputBox(\输入矩阵的行数:\

N = InputBox(\输入矩阵的列数:\ ReDim A(M, N) As Integer

For i = 1 To M For j = 1 To N

A(M, N) = InputBox(\输入数组元素:\ Next j Next i

'**********FOUND********** max = A(0, 0) For i = 1 To M

For j = 1 To N

If max < A(i, j) Then max = A(i, j)

'**********FOUND********** row = j End If

'**********FOUND********** col = i Next j Next i

Print

Print \该矩阵元素的最大值:\

Print \最大值所在的行:\所在的列:\End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 max = A(1, 1) 2 col = j 3 row = i

38『Visual Basic——程序改错』 '【程序改错】499

'------------------------------------------------

'题目:编程将一个数从已经有序(设从小到大排序)的数组 ' 中删除,使数组还继续保持有序而且其余元素按照下 ' 标连续存放。

'------------------------------------------------

'注意:不可增加或删除程序行,也不可以更改程序结构 '------------------------------------------------ Private Sub Form_Click()

Dim A() As Integer, N As Integer, Flag As Integer Dim i As Integer, X As Integer, P As Integer Flag = 0

N = InputBox(\输入元素个数\ '**********FOUND********** Dim A(N)

For i = 1 To N

A(i) = InputBox(\输入数组的第\个元素\ Next i

Print \删除某元素前的数组\ For i = 1 To N Print A(i); Next i

Start:

X = InputBox(\输入要删除的元素:\ For i = 1 To N

If X = A(i) Then P = i: Flag = 1

Next i

If Flag = 0 Then MsgBox (\没有此元素\ For i = P To N - 1

'**********FOUND********** A(i + 1) = A(i)

Next i

'**********FOUND********** N = N + 1

Print \删除元素后的数组:\ For i = 1 To N Print A(i); Next i

End Sub

-------------------------------------------------- 『图片数目』:0张 『文件数目』:2张 『答 案』:

1 ReDim A(N)

2 A(i) = A(i + 1) 或 A(i) = A(1 + i) 3 N = N - 1

本文来源:https://www.bwwdw.com/article/y806.html

Top