VB上机调试题及答案
更新时间:2024-06-20 23:20:01 阅读量: 综合文库 文档下载
- vb断点调试推荐度:
- 相关推荐
第二部分 浙江省VB二级试题解
A.程序调试题 一、选择结构
程序调试01
Option Explicit
Public Sub getanswer()
'该过程是用于计算一元二次方程的根,并将结果输出来。 Dim dalt!, a#, b#, c#
a = InputBox(\输入系数a\ b = InputBox(\输入系数b\ c = InputBox(\输入系数c\dalt = b * b - 4 * a * c if ----1---- then dalt = Sqr(dalt)
MsgBox Format((-b + dalt) / 2 / a), \a, \
elseif ---2---- then
MsgBox Format(-b / 2 / a, \ Else
dalt= ---3----
MsgBox Format(-b / 2 / a, \+ Format(-b / 2 / a, \ End If End Sub
二、单重循环
程序调试02
Option Explicit ‘这条语句要求在该模块中,使用变量前必须先声明。 Public Sub Uppersen()
'该过程是将一个英文句子的每个单词的首字母都变成大写。 '从键盘上任意输入一条英文句子,
'将句子中的每个单词的首字母都变成大写 '例如:输入I am a good student. '要求输出I Am A Good Student.
Dim oldsen As String, newsen As String Dim char As String, lastchar As String Dim k As Integer, i As Integer
oldsen = InputBox(\请输入英文句子:\ k = -------1--------
'以空格作为单词的界定,空格后的字母转换为大写字母 lastchar = ---------2-------- For i = 1 To k
28
char = ------3-------- If lastchar = \ char = UCase(char) End If
newsen = newsen & char lastchar = char Next i
Form1.Print \ Form1.Print \End Sub
程序调试03
Public Sub JiSuan()
'该过程用于计算1-(1/2)+(1/3)-...+(1/99)-(1/100)的值并打印出来。 Dim i As Integer
'****** 错误1 ******* Dim k As Integer Dim s As Single s = 0
'******* 错误2 ******* For i = 1 To 100 k = 1 / i s = s + k
'******* 错误3 ******* k = 1 / i + 1 s = s + k Next i
Form1.Print \End Sub
程序调试04
Option Explicit Public Sub same()
'该过程找出1--1000之间所有的同构数
'所谓同构数是指一个数出现在它的平方数的右端 '如25在25平方625的右端,则25为同构数 '利用数字转字符再取出右端字符的方法进行判断 Dim i As Long
Dim x1 As String, x2 As String For i = 1 To 1000
x1 = -------1-------- '将i转字符型 x2 = -------2-------- '将i^2转字符型 If ------3------ Then
Form1.Print i; \是同构数\ End If Next i
29
End Sub
程序调试05
Public Sub ArmstrongNumber()
'该过程是用于求出1--999之间所有的Armstrong数,并输出。
'所谓Armstrong数是指一个数等于它每位上数字的立方和。例如:371=3^3+7^3+1^3,那么371就是一个Armstrong数。
Dim armstrong As Integer Dim i As Integer
Dim hundred As Integer '百位上的数字 Dim ten As Integer '十位上的数字 Dim one As Integer '个位上的数字 For i = 1 To 999
hundred = ----1----
ten = Int((i Mod 100) \\ 10) one = ----2---- If ----3---- Then
Form1.Print i; \ End If Next i End Sub
程序调试06
Public Sub sum()
'该过程是用于计算并输出f=1-1/(2*3)+1/(3*4)-1/(4*5)+??+1/(19*20)。 Dim f As Single Dim i As Integer Dim sign As Integer -----1------ f = 1
-----2------
f = f + sign / (i * (i + 1)) ------3------- Next i
Form1.Print \End Sub
程序调试07
Option Explicit Public Sub eat()
'该过程是用于计算猴子共摘了多少个桃子。
'(小猴在一天摘了若干个桃子,当天吃掉了一半多一个; '第二天吃了剩下的一半多一个;
'以后每天都吃尚存的一半零一个,到第7天早上要吃时只剩下一个了), '并将结果输出来。 Dim n%, i%, x%
30
x = 1
for i=6 to ---1---- step ----2---- -----3---- Next i
Form1.Print \共有\个桃子\End Sub
程序调试08
Public Sub Fabonia()
'该过程是对以下数列进行运算:
'有一个数列,它的前三个数是0,1,2,
'从第四个数起,每个数都是它前面的两个数之和 '求出该数列的第17个数是多少
'求出该数列的第几个数起每个数都超过1E+8 Dim last_one As Long Dim last_two As Long Dim this_one As Long Dim i As Integer
last_one = 1 '数列的第二个数 last_two = 2 '数列的第三个数
i = 4 '从数列的第四个数求起 Do
this_one = last_one + last_two last_one = ------1------- last_two = ------2------- If i = 17 Then
Form1.Print \ End If
------3-------
Loop While this_one <= 100000000#
Form1.Print \End Sub
程序调试09
Public Sub Findat()
'该过程是用于在一个字符串变量中查找”at”,并用消息框给出查找结果的报告:没有找到或找到的个数。
Dim str1 As String
Dim length As Integer '字符串长度 Dim sum As Integer '查到的个数 Dim i As Integer
str1 = InputBox(\请输入一个字符串\ length = ----1---- i = 1 sum = 0
Do While i < ----2----
31
If ----3---- = \ sum = sum + 1 End If i = i + 1 Loop
If ----4---- Then
MsgBox \没有找到!\ Else
MsgBox \找到了\个\ End If End Sub
程序调试10
注:此题题目和第41`题相同,但算法不一样。 Option Explicit Public Sub ComDiv()
'该过程是求任意两个正整数的最大公约数
Dim m As Integer, n As Integer '任意两个正整数 Dim i As Integer
Dim div As Integer '最大公约数
'输入两个正整数,要求m与n都必须大于零 Do
m = Val(InputBox(\ n = Val(InputBox(\ Loop While ----1----
'先将两个整数中的较小数假设为最大公约数,再依次往下 '寻找能同时除尽m和n的数即为最大公约数 -----2----- If n < m Then div = n End If
Do While m Mod div <> 0 Or n Mod div <> 0 ----3----- Loop
Form1.Print m; \和\的最大公约数是:\End Sub
程序调试11
Public Sub Wrap()
'该过程用于判断一个字符串是否“回文”。
'所谓“回文”是指字符串顺读与倒读都是一样的,如“潮起潮落,落潮起潮”。 Dim length As Integer Dim str1 As String Dim strleft As String Dim strright As String Dim k As Integer
32
str1 = InputBox(\请输入任意的字符串\输入任意字符串 '****错误1***** length = Val(str1) k = 1 Do
'****错误2*****
strleft = Left(str1, k) '从左边起逐个取出一个字符 '****错误3*****
strright = Right(str1, k) '从右边起逐个取出一个字符 '****错误4****
If strleft = strright Then Exit Do End If k = k + 1
Loop While k <= length / 2 If k > length / 2 Then
Form1.Print str1 & \是回文\ Else
Form1.Print str1 & \不是回文\ End If End Sub
程序调试12
Option Explicit Public Sub DToB()
'该过程是将一个十进制正整数转换成为一个二进制数。
'采用连除2取余数的方法,将一个十进制数转换为二进制数。 Dim Dec As Integer Dim Bin As String Dim res As Integer Dim i As Integer
Dec = Val(InputBox(\输入一个十进制数 Form1.Print \十进制数:\ Do
res = -----1------ '求出除以2的余数 Bin = Trim(Str(res)) & -----2------ Dec = -----3------ Loop While ----4------
Form1.Print \转换为二进制数为:\End Sub
程序调试13
Public Sub Guess()
'该过程是猜数游戏,由计算机产生一个[1,100]的任意整数,
'输入猜数后计算机给出提示,如果5次后还没有猜中就结束游戏并公布正确答案。 Dim R As Integer
33
Dim X As Integer Dim times As Integer Randomize
R = Int(Rnd * 100) + 1 '产生一个在区间[1,100] 的任意整数 times = 1 Do
X = Val(InputBox(\输入猜数X\ Select Case X Case R
Form1.Print \猜中了\ Exit Do
'***** 错误1 ****** Case Is < R
Form1.Print \太大了,继续猜!\ Case Else
Form1.Print \太小了,继续猜!\ End Select
times = times + 1 '****** 错误2 ****** Loop While times > 5 If times > 5 Then
Form1.Print \猜数失败,游戏结束!\ '****** 错误3 ******
Form1.Print \正确答案为\ End If End Sub
程序调试14
Option Explicit
Public Sub summary()
'该过程是用于计算s=1+2+2^2+2^3+??,直至s超过1E+16 Dim s As Single Dim i As Integer ------1------ i = 1
------2------ s = s + 2 ^ i ------3------ Loop
Form1.Print \End Sub
程序调试15
Option Explicit Public Sub find()
'该过程是用于找出被3、5、7除,余数为1的最小的5个整数,并将结果输出来。
34
Dim countN%, n% countN = 0 n = 1 Do
n=----1----
if -----2---- then Form1.Print n
countN = countN + 1 End If
Loop ----3----- End Sub
程序调试16
Option Explicit Public Sub e()
'该过程是用于计算e的值并将结果输出,要求精确到0.000000000000001, 'e的计算公式为:e=1+1/1!+1/2!+?+1/n!。 Dim n, term, t
n = 0: term = 1: t = 1 Do
n = n + 1 t= ---1---
term= ---2-----
Loop While t > 0.000000000000001 form1.print \End Sub
程序调试17
Option Explicit Public Sub qiuN()
'该过程是用于求出满足不等式1+2x+3x^2+4x^3+?+(n+1)x^n<1000的最大n值, '其中x是大于等于1的实数,其值由键盘输入。
Dim x As Single, s As Single, n As Integer, s1 As Single, p As Single x = Val(InputBox(\ s = 1: n = 1 p = x
while ----1---- s1 = s
s = s + (n + 1) * p p=p* ----2---- n= ----3---- Wend
n= ----4-----
form1.Print \End Sub
35
三、多重循环
程序调试18
Public Sub prt()
'该过程是输出由数字组成的如下所示金字塔图案 ' 9 ' 888 ' 77777 ' 6666666 ' 555555555 ' 44444444444 ' 3333333333333 ' 222222222222222 ' 11111111111111111
Dim i As Integer, j As Integer '******** 错误1 ******** For i = 9 To 1
Form1.Print Space(i); For j = 1 To 19 - 2 * i '*********错误2 ******** Form1.Print i Next j
Form1.Print Next i
'*********错误3 ******** End Function
程序调试19
Option Explicit
Public Sub pyramid()
'该过程用于打印数字金字塔 ' 1 ' 222 ' 33333 ' 4444444 ' 555555555 ' 6666666 ' 77777 ' 888 ' 9 Dim i As Integer Dim j As Integer
Dim start As Integer '每行起始空格数 Dim num As Integer '每行数字个数 For i = 1 To 9
If i <= ---1---- Then
36
start = 20 - i num = 2 * i - 1 Else
start = 10 + i num = 19 - 2 * i End If
For j = 1 To ---2----
Form1.Print Tab(start+j);---3---- Next j
Form1.Print Next i End Sub
程序调试20
Public Sub prime()
'该过程是输出100到200之间所有的素数,并统计素数的个数 Dim i As Integer Dim j As Integer Dim k As Integer
Dim t As Integer '统计素数的个数 Dim b As Boolean For i = 100 To 200 b = True
k= ------ 1 ------- j = Int(Sqr(i))
Do While k <= j And b If i Mod k = 0 Then ------ 2 ------ End If
------ 3 ------ Loop
if ------ 4 ------- then t = t + 1 Form1.Print i End If Next i
Form1.Print \End Sub
四、一维数组
程序调试21
Option Explicit
Public Sub aboveave()
' 该过程是产生30个1--100之间的随机整数 ' 计算这30个数的平均值
37
' 找出30个数中数值大于平均值的数据,并统计出这些数据的个数 Dim x(30) As Integer
Dim sum As Integer, ave As Integer '平均值取整数 Dim i As Integer
Dim count As Integer '在平均值之上的数据个数 Randomize
For i = 1 To 30
x(i) = Int(Rnd * 100) + 1 Next i sum = 0
For i = 1 To 30
sum = ---------1--------- Next i
ave = --------2---------
'5个一行打印出原始数据,打印平均值 For i = 1 To 30
Form1.Print x(i); Space(2); If i Mod 5 = 0 Then Form1.Print Next i
Form1.Print \平均值:\
'找出并5个一行打印在平均值之上的数据,打印统计的个数 Form1.Print \在平均值之上的数据是:\ For i = 1 To 30
If x(i) > ave Then
---------3---------
Form1.Print x(i); Space(2);
If ------4-------- Then Form1.Print End If Next i
Form1.Print
Form1.Print \共有\个在平均值之上.\End Sub
程序调试22
Option Explicit Public Sub Del()
'该过程从一个含有10个数组元素的数组中删除一个指定的数据,若该数据不存在,则给出提示。 '先产生10个[1,100]的随机整数
'从键盘上输入一个数,将该数从数组中删除 Randomize
Dim x As Integer Dim a() As Integer
Dim i As Integer, pos As Integer ReDim a(10) As Integer For i = 1 To 10
a(i) = Int(Rnd * 100) + 1
38
Next i
Form1.Print \原始数据:\ For i = 1 To 10
Form1.Print a(i); \ Next i
Form1.Print
x = Val(InputBox(\输入删除的数x=\ pos = 0
For i = 1 To 10
If x = a(i) Then ------1----- Exit For End If Next i
If pos <> 0 Then
For i = -----2------ To 9 -------3------- Next i
ReDim Preserve a(9) '保留原数组中的9个数 Form1.Print \删除后数据:\ For i = 1 To 9
Form1.Print a(i); \ Next i
Form1.Print Else
MsgBox \数组中未找到\删除不成功\ End If End Sub
程序调试23
Option Explicit
Public Sub countEven()
'该过程是用于统计在随机产生的10个两位整数中的偶数的个数并用消息框输出。 Dim a(10) As Integer '存放10个随机数第一个为a(0) Dim count As Integer
Dim I As Integer, n As Integer Randomize
'******错误1****** For I = 1 To 10 '*****错误2***** n = Int(Rnd * 90) a(I) = n
Form1.Print a(I)
If a(I) Mod 2 = 0 Then count = count + 1 End If
39
Next I
'*****错误3*****
msgbox(\偶数个数:\End Sub
程序调试24
Option Explicit
Public Sub sortchar()
'该过程是对字符串进行整理,
'首先从键盘上输入一个任意的字符串,将该字符串的所有组成字符拆分开, '再按照字符ASCII码从小到大的顺序将这些字符重新组成新的字符串。 '例如输入a4fkze5,重新组合的字符串为45aefkz。 Dim x As String '原始字符串
Dim y As String '重新组合的字符串 Dim c() As String '拆分出的字符 Dim k As Integer '字符串长度 Dim i As Integer, j As Integer Dim temp As String
x = InputBox(\输入一个字符串\ k = ------1------- ReDim c(k) As String '字符串拆分 For i = 1 To k
c(i) = ------2------- Next i '字符排序
For i = 1 To k - 1
For j = -------3------- If c(i) > c(j) Then temp = c(i) c(i) = c(j) c(j) = temp End If Next j Next i
'排序后的字符组成新字符串 y = \
For i = 1 To k y = y & c(i) Next i
Form1.Print \原始字符串\
Form1.Print \重新组合的字符串\End Sub
程序调试25
Option Explicit
40
Public Sub compositor()
'该过程是用于产生20个不大于1000的自然数,
'并使用选择分类法按从大到小的顺序输出,相同数不输出。 Const n = 20
Dim a(n), i, p, j, t For i = 1 To n a(i) = ----1---- Next i
For i = 1 To n - 1 p = i
For j = i To n
If a(p) < a(j) Then ----2---- Next j
If ----3---- Then t = a(i): a(i) = a(p): a(p) = t Next i
Form1.Print a(1) For i = 2 To n
If a(i) <> a(i - 1) Then Form1.Print ----4---- Next i
Form1.Print End Sub
程序调试26
Option Explicit Public Sub prt()
'该过程是输出由数字组成的如下所示杨辉三角形图案 ' 1 ' 1 1 ' 1 2 1 ' 1 3 3 1 ' 1 4 6 4 1 ' 1 5 10 10 5 1 ' 1 6 15 20 15 6 1 Const n = 8
Dim a(n + 1) As Byte, i As Integer, j As Integer Dim s As String '给数组a赋初值 For i = 1 To n + 1 a(i) = 0 Next i
'计算并打印第一个数 a(1) = 1
Form1.Print Space(2 * n + 2); '计算数字前的空格数 Form1.Print a(1)
'计算其余行的数并打印 For i = 2 To ----1----
41
a(i) = a(i - 1)
For j = ----2---- To 2 Step -1 ----3---- Next j
Form1.Print Space((n - i + 1) * 2); For j = 1 To i
s = Trim(Str(----4----))
Form1.Print Space(Int((4 - Len(s)) / 2 + 0.5)) + s + Space(Int((4 - Len(s)) / 2 + 0.5));
Next j
Form1.Print Next i End Sub
五、多维数组
程序调试27
Public Sub Transpose()
'该过程用于产生一个6×6的转置矩阵,将二维数组中所有行和对应列的元素进行交换。 Dim a(1 To 6, 1 To 6) As Integer Dim i As Integer, j As Integer Form1.Print \原始数据\ For i = 1 To 6 For j = 1 To 6
a(i, j) = Int(Rnd * 10) Form1.Print a(i, j); Next j
Form1.Print Next i
For i = 2 To 6
For j = 1 To ----- 1 ----- ------ 2 ----- Next j Next i
Form1.Print \转置后数据\ For i = 1 To 6 For j = 1 To 6 ----- 3 ----- Next j
Form1.Print Next i End Sub
Public Sub Swap(a As Integer, b As Integer) Dim temp As Integer temp = a a = b
42
b = temp End Sub
程序调试28
Public Sub PrintArray()
'下面程序用于显示5行5列的数字方阵 '使两对角线上元素均为1,其余均为2
'要求显示的数字方阵两列数字之间空3格,两行之间空一行 '只要修改标出出错位置的下面那一条语句 Dim a(5, 5) As Integer
Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5
'******** 错误1 ********* If i <> j Or i <> 6 - j Then a(i, j) = 2 Else
a(i, j) = 1 End If
'******** 错误2 *********
Form1.Print a(i, j) + Space(3); Next j
'******* 错误3 ******* Form1.Print: Form1.Cls Next i End Sub
程序调试029
'PrintArray过程是输出一个右上三角元素(含对角线)为1,其余元素为0 的5×5矩阵 Public Sub PrintArray()
Dim a(1 To 5, 1 To 5) As Integer Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To 5
If ----- 1 ----- Then ----- 2 ----- End If Next j Next i
For i = 1 To 5 For j = 1 To 5
Form1.Print \ Next j
------ 3 ----- Next i End Sub
43
六、Sub过程
程序调试30
Private Const n = 10
Private a(1 To n) As Integer
'TJ过程是将一批数据中小于零的数及它们的积打印出来
'数据由SCSJ过程产生,数据的取值范围为-10 ~ 10 之间的随机整数数 Public Sub TJ()
Dim i As Integer Dim t As Single
t= -------- 1 -------- For i = 1 To 10
If -------- 2 -------- Then t = t * a(i) End If Next i
Form1.Print \End Sub
Public Sub SCSJ() Randomize
Form1.Print \原始数据\ Dim i As Integer Dim j As Integer For i = 1 To n
'随机产生0或1,为0时取负,为1时取正 j = Int(Rnd * 2)
If ------ 3 ----- Then J = -1 a(i) = j * Int(Rnd * (n + 1)) Form1.Print a(i); Next i
Form1.Print End Sub
程序调试31
Dim a(30) As Integer Public Sub FindMax()
'该过程是用于查找一批数据中的最大数,并输出最大数的值及最大数在数组中的下标值。 Dim Position As Integer '最大数在数组中的下标 Dim max As Integer '最大数 Dim i As Integer GenerateData max = ----1----
Position = ----2---- For i = 2 To 30
If a(i) > max Then
44
max = ----3----
Position = ----4---- End If Next i
Form1.Print \最大值=\
Form1.Print \最大值的下标=\End Sub
Public Sub GenerateData() Dim i As Integer For i = 1 To 30
a(i) = Int(500 * Rnd() + 1) Form1.Print a(i),
If i Mod 5 = 0 Then Form1.Print Next i End Sub
程序调试32
Dim a(1 To 5, 1 To 4) As Integer Dim ave(1 To 5) As Integer Public Sub MaxLine()
'该过程用于查找一个5行4列的二维数组中行平均值最大的行,并将该行所有数据调整到第一行的位置。
Dim i As Integer, j As Integer, temp As Integer Dim Line_no As Integer '最大平均值的行号 '找出最大平均值所在行 Line_no = 1 For i = 2 To 5
'****** 错误1 *******
If ave(Line_no) >= ave(i) Then '****** 错误2 ******* Line_no = ave(i) End If Next i
'交换第一行与最大平均值所在行 For j = 1 To 4 temp = a(1, j)
'****** 错误3 ****** a(Line_no, j) = a(1, j) a(Line_no, j) = temp Next j
'交换对应行的平均值 temp = ave(1)
ave(1) = ave(Line_no) ave(Line_no) = temp '打印交换后的数据
Form1.Print \交换后的数据和平均值\
45
PrintArray End Sub
Public Sub DataProduce()
'该过程用于产生原始数据。 Dim i As Integer Dim j As Integer '产生5*4数组 For i = 1 To 5 For j = 1 To 4
a(i, j) = Int(100 * Rnd) Next j Next i End Sub
Public Sub Average()
'该过程用于计算各行的平均值。 Dim i As Integer Dim j As Integer Dim sum As Integer '计算各行平均值 For i = 1 To 5 sum = 0 For j = 1 To 4
'****** 错误4 ****** sum = a(i, j) Next j
ave(i) = sum / 4 Next i
'将数组和平均值打印出来
Form1.Print \原始数据和平均值\ PrintArray End Sub
Public Sub PrintArray()
'该过程用于打印二维数组和行平均值。 Dim i As Integer Dim j As Integer For i = 1 To 5 For j = 1 To 4
Form1.Print a(i, j); Spc(3); Next j
Form1.Print \平均值=\ Next i End Sub
程序调试33
Public Sub SortData()
'该过程是产生10个[30,50]的随机整数,并按从小到大的顺序打印出来。
46
Dim a(10) As Integer
Dim i As Integer, j As Integer For i = 1 To 10
a(i) = Int(Rnd * 21 + 30) Next i
For i = 1 To 9
-------- 1 --------- If a(i) > a(j) Then
--------- 2 ---------- End If Next j
Form1.Print a(i) Next i
Form1.print --------- 3 -------- End Sub
Public Sub Swap(a As Integer, b As Integer) '该过程是用于交换两个变量的值。 Dim temp As Integer temp = a a = b b = temp End Sub
程序调试34
Private Const n = 10
Private a(1 To n) As Integer 'BubbleSort过程是冒泡排序 'Swap过程交换两个变量数值
'GenerateData过程产生10个[1,20]之间互不相同的随机整数 Public Sub BubbleSort()
Dim i As Integer, j As Integer i = 1 Do
For j = i + 1 To n
If a(j) > a(i) Then
'*******错误1 ********* Swap (a(j), a(i)) End If Next j i = i + 1
'*******错误2 ******* Loop While i = n
Form1.Print \排序结果\ For i = 1 To n
Form1.Print a(i); Next i
47
End Sub
Public Sub GenerateData() Dim i As Integer Dim j As Integer Dim b As Boolean For i = 1 To n b = False
Do While Not b
a(i) = Int(20 * Rnd + 1) b = True
'******错误3 ****** For j = 1 To i
If a(i) = a(j) Then b = False Exit For End If Next j Loop
Form1.Print a(i) Next i End Sub
'********错误4 ********
Public Sub Swap(ByVal a As Integer, ByVal b As Integer) Dim temp As Integer temp = a a = b b = temp End Sub
七、函数过程
程序调试35
Option Explicit Public Sub rn()
'该过程通过调用函数isLeapYear判断某年是否是闰年,若是,则打印\今年是润年\ '否则,打印\今年不是闰年\。 Const year = 2023 If ----1---- Then
Form1.Print \今年是闰年\ Else
Form1.Print \今年不是闰年\ End If End Sub
Function isLeapYear(y As Integer) As Boolean
If ----2---- Or (----3---- And ----4----) Then isLeapYear = False
48
Else
isLeapYear = True End If End Function
程序调试36
Option Explicit Public Sub total()
'该过程是计算s=7+77+777+??+(n个7组成的数),并输出。 Const n = 20 Dim s As Single Dim i As Integer For i = 1 To n
s = s + ------1------- Next i
Form1.Print \End Sub
Public Function number( -----2------ ) As Single '该函数是求出n个7所组成的数。 Dim k As Integer number = 0 For k = 1 To n
--------3--------- Next k End Function
程序调试37
Option Explicit
Public Sub findstr()
'该过程通过调用matchCount函数计算子串s2在母串s1中匹配的次数 Dim s1 As String, s2 As String
s1 = \母串 s2 = \子串 Form1.Print ----1---- End Sub
Function matchCount(str1 As String, str2 As String) As Integer '本函数计算子串str2在母串str1中的匹配次数
Dim num As Integer, i As Integer, pos As Integer num = 0
For i = 1 To ----2---- '从第1个字符开始循环找 pos = ----3----
If pos > 0 Then '找到了指定的字符串 num = num + 1 '次数加1 ----4---- '继续向前找 Else
49
Exit For '没找到,退出 End If Next i
matchCount = num End Function
程序调试38
Public Function nFactor(ByVal n As Integer) As Double '该过程用于计算n!。 Dim i As Integer Dim temp As Double ----1----
For i = 1 To n
temp = temp * i Next i
nFactor = ----2---- End Function
Public Sub summary()
'该过程用于计算1!+2!+...+20!,并打印出计算结果。 Dim sum As Double Dim i As Integer Dim n As Integer n = 20
For i = 1 To n
sum = sum + ----3---- Next i
Form1.Print \End Sub
程序调试39
Option Explicit Public Sub find()
'该过程是用于从1到10000中找出这样的数,
'该数各个位的数字的阶乘相加之和等于该数,并将结果输出。 Dim k, a, n, i Dim p As Integer For k = 1 To 10000 a = LTrim(Str(k)) n = 0
For i= ----1-----
p = Val(Mid(a, i, 1)) n= -----2---- Next i
If n = k Then form1.Print k Next k End Sub
50
Function fact(x As Integer) As Long '该函数用于计算阶乘 Dim y As Long Dim i% y = 1
For i% = 1 To x y = y * i% Next i% ----3---- End Function
程序调试40
Public Sub Transfer()
'该过程用于将一个十六进制整数转换为十进制整数。 Dim Hex As String '十六进制数 Dim Dec As Double '十进制数 Dim temp As String Dim i As Integer Dim n As Integer
Hex = InputBox(\输入一个十六进制整数\ '****** 错误1 ******* n = Val(Hex) i = 0 Do
'****** 错误2 ******* temp = Mid(Hex, i, 1)
Dec = Dec + number(temp) * 16 ^ i i = i + 1 Loop While i < n
'****** 错误3 ******
Form1.Print Hex + \转换为十进制数为\End Sub
Public Function number(str As String) As Integer '该函数过程用于将一个十六进制符号转换为数值。 Select Case str Case \ number = 10 Case \ number = 11 Case \ number = 12 Case \ number = 13 Case \ number = 14 Case \
51
number = 15 Case Else
number = Val(str) End Select End Function
程序调试41
Option Explicit
Public Sub ComMulti()
'该过程是求任意两个正整数的最小公倍数
'求最小公倍数的一种方法是先求出两个数的最大公约数, '两个数的乘积除以最大公约数的商即为最小公倍数 Dim m As Integer, n As Integer '任意两个正整数 Dim i As Integer
Dim multi As Integer '最小公倍数
'输入两个正整数,要求m与n都必须大于零 Do
m = Val(InputBox(\ n = Val(InputBox(\ Loop While -----1------ multi = -------2--------
Form1.Print m; \和\的最小公倍数是:\End Sub
'Div函数过程求任意两个正整数m和n的最大公约数
Public Function Div(m As Integer, n As Integer) As Integer '该函数过程用于求任意两个正整数的最大公约数。 Dim i As Integer
'先将两个整数中的较小数假设为最大公约数,再依次往下 '寻找能同时除尽m和n的数即为最大公约数 ----------3------------ If n < m Then Div = n End If
Do While m Mod Div <> 0 Or n Mod Div <> 0 -----------4---------- Loop End Function
程序调试42
Public Sub Combination()
'该过程是用于计算在m个数据中取出n个数据的排列组合值,计算公式为Cmn=m!/(n!*(m-n)!)。 Dim m As Integer Dim n As Integer Dim Cmn As Long Do
m = Val(InputBox(\请输入一个整数m\
52
n = Val(InputBox(\请输入一个整数n(n<=m)\ Loop While m < n '必须保证输入的两个数m>=n '****** 错误1 ******
Cmn = nFactor(m) / nFactor(n) * nFactor(m - n) Form1.Print \排列组合数为\End Sub
Public Function nFactor(ByVal n As Integer) As Double '该函数过程用于计算n!。 Dim i As Integer Dim temp As Double temp = 1
For i = 1 To n
temp = temp * i Next i
'******错误 2 ****** nFactor(n) = temp '****** 错误3 ****** End Sub 题解01
1:dalt > 0 2: dalt = 0 3:sqr(-dalt) 题解02
1:Len(oldsen)
2:” ” 注意:双引号中间有空格 3:mid(oldsen,I,1) 题解03
错误1:Dim k As Integer 改为:dim k as single
错误2:For i = 1 To 100 改为:for I=1 to 100 step 2 错误3:k = 1 / i + 1 改为:k=-1/(I+1) 题解04
1:trim(str(i)) 2:trim(str(I^2))
3:right(x2,len(x1))=x1 题解05 1:I\\100 2:i mod 10
3:I=hundred^3+ten^3+one^3 题解06 1:sign=-1
2:for I=2 to 19 3:sign=-sign 题解07 1:1 2:-1
3:x=2*(x+1)
53
题解08
1:last_two 2:this_one 3:I=I+1 4:I-1 题解09
1:len(str1) 2:length
3:mid(str1,I,2) 4:sum=0 题解10
1:m<=0 or n<=0 2:div=m
3:div=div -1 题解11
错误1:length = Val(str1) 改为:length = len (trim(str1)) 错误2:strleft = Left(str1, k) 改为:strleft = mid(str1, k,1)
错误3:strright = Right(str1, k) 改为:strright = mid(str1, length+1-k,1) 错误4:If strleft = strright Then 改为:If strleft <> strright Then 题解12
1:Dec mod 2 2:Bin 3:Dec\\2 4:Dec >= 1 题解13
错误1:Case Is < R 改为:Case Is > R
错误2:Loop While times > 5 改为:Loop While times <= 5
错误3:Form1.Print \正确答案为\改为:Form1.Print \正确答案为\题解14 1:s = 1
2:do while s <= 1E + 16 3:I = I + 1 题解15 1:n=n+7
2:(n mod 3=1) and (n mod 5=1) 3:while countN<5 题解16 1:t/n 2:term+t 3:str(term) 题解17 1:s<1000 2:x 3:n+1 4:n-2 题解18
54
错误1:For i = 9 To 1 改为:For i = 9 To 1 step -1 错误2:Form1.Print I 改为:Form1.Print trim(str(i)) 错误3:End Function 改为:End sub 题解19 1:5 2:num
3:trim(str(i)); 题解20 1:2
2:b = false 3:k=k+1 4:b = true 题解21
1:sum + x(i) 2:sum / 30
3:count = count + 1 4:count mod 5 = 0 题解22 1:pos = i 2:pos
3:a(i) = a(I+1) 题解23
错误1:For I = 1 To 10 改为:For I = 0 To 9
错误2:n = Int(Rnd * 90) 改为:n = Int(Rnd * 90) + 10
错误3:msgbox(\偶数个数:\改为:msgbox(\偶数个数:\题解24
1:k = Len(Trim(x)) 2:Mid(x,I,1) 3:I + 1 to k 题解25
1:int(rnd*1000) + 1 2:p = j 3:P <> i 4:a(i) 题解26 1:n + 1 2:I - 1
3:a(j) = a(j-1) + a(j) 4:a(j) 题解27 1:i - 1
2:swap a(I,j) , a(j,I) 3:Print a(I,j); 题解28
错误1:If i <> j Or i <> 6 - j Then 改为:If i <> j and i + j <> 6 Then 错误2:Form1.Print a(i, j) + Space(3); 改为:Form1.Print a(i, j) & Space(3);
55
错误3:Form1.Print: Form1.Cls 改为:Form1.Print: Form1.Print 题解29 1:j >= i 2:a(I,j) = 1 3:Print 题解30 1:1
2:a(i) < 0 3:j = 0
Private Sub Form_Click() Call SCSJ Call TJ End Sub 题解31 1:a(1) 2:1 3:a(i) 4:i 题解32
错误1:If ave(Line_no) >= ave(i) Then 改为:If ave(Line_no) <= ave(i) Then 错误2:Line_no = ave(i) 改为:Line_no = i
错误3:a(Line_no, j) = a(1, j) 改为:a(1, j) = a(Line_no, j) 错误4:sum = a(i, j) 改为:sum = sum + a(i, j)
Private Sub Form_Click() Call DataProduce Call Average Call MaxLine End Sub 题解33
1:for j = I + 1 to 10 2:swap a(i) , a(j) 3:a(10) 题解34
错误1:Swap (a(j), a(i)) 改为:Swap a(j), a(i) 错误2:Loop While i = n 改为:Loop While i < n 错误3:For j = 1 To I 改为:For j = 1 To I - 1
错误4:Public Sub Swap(ByVal a As Integer, ByVal b As Integer) 改为: Public Sub Swap( a As Integer, b As Integer)
Private Sub Form_Click() Call GenerateData Call BubbleSort End Sub 题解35
56
1:isLeapYear(Year) 2:y mod 4 <> 0 3:y mod 400 <> 0 4:y mod 100 = 0 题解36
1:number(i) 2:n as integer
3:number = number + 7*10^(k-1) 题解37
1:matchCount(s1,s2) 2:len(str1)
3:InStr(str1,str2)
4:str1 = Right(str1, Len(str1) - pos - Len(str2) + 1) 或 str1=mid(str1,pos+len(str2)) 题解38
1:temp = 1 2:temp
3:nFactor(i) 4:sum 题解39
1:1 to len(a) 2:n + fact(p) 3:fact = y 题解40
错误1:n = Val(Hex) 改为:n = len(trim(Hex))
错误2:temp = Mid(Hex, i, 1) 改为:temp = Mid(Hex, n - i, 1) 错误3:Form1.Print Hex + \转换为十进制数为\改为:
Form1.Print Hex + \转换为十进制数为\
题解41
1:m < 0 or n < 0 2:m * n \\ div(m , n) 3:div = m
4:div = div - 1 题解42
错误1:Cmn = nFactor(m) / nFactor(n) * nFactor(m - n) 改为: Cmn = nFactor(m) /( nFactor(n) * nFactor(m - n)) 错误2:nFactor(n) = temp 改为:nFactor = temp 错误3:End Sub 改为:End Function
57
正在阅读:
VB上机调试题及答案06-20
最新陕旅版四年级英语上册全册教案第一学期全套教学设计04-04
秘 中纪委巡视组接获大量举报 联想融科智地擅自改变科研用地用途06-19
JAVA试题库10-19
2012-2013学年度拟表彰广东省中学“三好学生”名单 - 图文10-10
湖山休闲养生地产05-29
办理行政案件口诀10-24
吹风机毕业设计05-05
- 天大砼方案 - 图文
- 农业科技网络书屋能力提升_玉米错题选
- DNS习题
- 浅议检察官对罪犯谈话的技巧与效果
- 高考语文文言文翻译专题训练
- AB类学科竞赛目录(2015)
- 建筑面积计算新规定(2015最新)
- Revit2012初级工程师题集一
- 十三五项目米线可行性报告
- 2013体育学院党组织建设工作总结
- 2014Revit工程师题库
- 高中数学如何实施研究性学习
- 茶艺表演 中英互译
- 小学音乐湘文艺版 四年级下册 第十一课《(歌表演)脚印》优质课公
- 山西省农村合作经济承包合同管理条例
- 2015年镇江市中考化学一模试题参考答案及评分标准(定稿)
- 统计 题集
- 批评意见清单
- 8潞安集团蒲县黑龙关煤矿矿业公司2
- 鄂教版四年级语文上册复习精要(光谷四小)
- 上机
- 试题
- 答案
- 让数学充满生活味
- 我和爸爸妈妈的约定
- 单韵母、声母课文1--8学习卡
- 液压题库(答案)
- 2013届中考物理知识结构复习
- 纸坊镇古同小学2016年学校年鉴
- 某某银行个人贷款管理办法4.18
- 催化裂化装置操作工中级理论知识题库
- 《土力学与基础工程》复习资料和答案-选择题
- 混凝凝土施工方案 - 图文
- 非常规油气资源产业现状及关键问题
- 2017届上海市金山区初三物理二模卷(含答案)
- 7037-各种湍流模型详细推导
- 智能台灯系统的设计单片机期末课程设计
- 1看哪种水果的营养适合你
- 电荷和静电场(一) 西北大学大物作业
- 工业工程研究领域
- 六年级上册语文一课一练(附答案)
- 以人为本关注民生做好住宅专项维修资金绩效审计
- 2018年中国云南旅游市场现状调研趋势分析报告目录