资源描述
程序改错
1.题目:已知C的公式表示如下:
' n!
' C=------------------
' (n-m)!*m!
'函数过程fac( )求k!函数,在Fomr_Click事件中完成运算,
'请修正程序中错误。
'------------------------------------------------
Option Explicit
Private Function fac(k As Integer) As Single
Dim x As Single, j As Integer
x = 0
For j = 1 To k
x = x ^ j
Next j
fac = x
End Function
Private Sub Form_Click()
Dim C As Single
Dim m As Integer, n As Integer
m = Val(InputBox("请输入一个整数(m):"))
n = Val(InputBox("请输入一个整数(n):"))
C = fac(n) / fac(n - m) * fac(m)
Print "C="; C
End Sub
2.题目:程序功能为打印下列图形:
' *
' **
' ***
' ****
' *****
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Cls
Dim i As Integer
Dim j As Integer
For i = 1 To 7
For j = 1 To 5
Print "*";
Loop
Print
Next i
End Sub
3.题目:
本程序的功能是随机产生的10个两位正整数,并进行递减排序。
'------------------------------------------------
Option Explicit
Private Sub CreateRND()
Dim Temp As Integer
Dim I As Integer
Dim N As Integer
Dim X(10) As Integer
Dim J As Integer
N = 10
Print "数据:"
For I = 1 To N
X(I) = Int(Rnd() * 90)
Print X(I);
Next I
Print
Print "排序:"
For I = 0 To N - 1
For J = I + 1 To N
If X(I) > X(J) Then
Temp = X(I)
X(J) = X(I)
X(I) = Temp
End If
Next J
Print X(I);
Next I
Print
End Sub
Private Sub Command1_Click()
CreateRND
End Sub
4.题目:
随机产生并输出100以内大于50的20个整数,输
出时每5个数一行。
'-----------------------------------------------
Option Explicit
Private Sub Form_Click()
Randomize Timer
Dim i As Integer, ma As Integer
i = 1
Do Until i < 20
ma = Rnd() * 100 \ 1
If ma > 50 Then
Print ma;
i = i + 1
If i \ 5 = 0 Then
Print
End If
End If
Loop
End Sub
5题目:以下程序段用于计算5的N次方。
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Dim n As Integer, k As Integer, s As Long
n = InputBox(" Input n ")
k = 0
s = 0
Do While k <= n
s = s * 5
k = k + 1
Next
Print "5的"; "n次方是"; s
End Sub
6.题目:下面程序可输出如下图形:
' *
' ***
' *****
' *******
' *********
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Dim m As Integer, n As Integer, s As String, i As Integer, j As Integer
n = 4
m = 1
s = "*"
For i = 5 To 1 Step -1
Print Spc(n)
For j = 1 To 2 * m - 1
Print s;
Next j
Print
n = n + 1
m = m - 1
Next i
End Sub
7.题目:
用自定义函数的方法求sum(x),求当-1≤x≤1时,
' sum(x)=x/2!+x^2/3!+x^3/4!+……+x^n/(n+1)!,
' 当x〉1或x〈-1时,函数值为0。当n〈=0时,输入数
' 据错误。X、N都是由用户输入。
'------------------------------------------------
Option Explicit
Private Sub Command1_Click()
Dim s As Single
Dim n As Integer, x As Single, k As Integer
n = Val(InputBox("Please input a integer value:"))
x = Val(InputBox("Please input a single value:"))
If n <= 0 Then
k = MsgBox("数据输入错误!", vbRetryCancel + vbExclamation, "数据输入")
Exit Sub
End If
s = Sum(x, n)
Print s
End Sub
Function Sum(x As Single, n As Integer)
Dim i As Integer, ss As Long
ss = 1
Sum = 0
If x > 1 Or x < -1 Then
Exit Do
Else
For i = 2 To n
ss = ss * i
Sum = x ^ (i - 1) / ss
Next i
End If
End Function
8.题目:以下程序功能是输入三个数,由大到小排序。
------------------------------------------------
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("Please input first integer", "输入正整数"))
B = Val(InputBox("Please input second integer", "输入正整数"))
C = Val(InputBox("Please input third integer", "输入正整数"))
If A <= C Then
nTemp = A
A = B
B = nTemp
End If
If B <= C Then
nTemp = A
A = C
C = nTemp
End If
If A <= B Then
nTemp = B
B = C
C = nTemp
End If
Print "The integers in order is"; A; B; C
End Sub
9.题目:
用辗转相除法求两个整数的最大公约数。
'------------------------------------------------
Option Explicit
Function gcd(ByVal m As Integer, ByVal n As Integer) As Integer
Dim r As Integer
r = m Mod n
Do While r <> 0
n = m
n = r
r = m Mod n
Loop
gcd = r
End Function
Private Sub Form_Click()
Dim a As Integer, b As Integer, c As Integer
a = InputBox("输入一个整数")
b = InputBox("输入一个整数")
a = Val(a)
b = Val(b)
Call gcd(a, b)
Print a, b, c
End Sub
10.题目:下面的程序用“冒泡”法完成数组a中的10个整数
按升序排列,请修正程序中错误。
'------------------------------------------------
Option Explicit
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
For j = i+1 To 9
If a(j) >= a(i) Then
a1 = a(i
a(i) = a(j)
a(j) = a(i)
End If
Next j
Next i
For i = 0 To 9
Print a(i)
Next i
End Sub
11.题目:
程序功能为求解一元二次方程的实根,请修正程序中错误。
'------------------------------------------------
Option Explicit
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的值"))
work = b * 2 - 4 * a * c
If work >= 0 And a <> 0 Then
root1 = (Sqr(work)) / (2 * a)
root2 = (Sqr(work)) / (2 * a)
Debug.Print "有二个实根" + Str$(root1) + "," + Str$(root2)
Else
Debug.Print "无实根!"
End If
End Sub
12.题目:
下面程序的作用是产生100以内的全部素数,并
按每行5个数据输出。
'------------------------------------------------
Option Explicit
Private Function prime(ByVal n As Integer)
Dim i As Integer
prime = 1
If n <= 1 Then prime = 0
For i = 1 2 To n - 1
If n Mod i = 0 Then prime = 0
Next i
End Function
Private Sub Form_Click()
Dim i As Integer, k As Integer
k = 0
For i = 1 To 100
If prime(i) = 1 Then
Print Tab((k Mod 5) * 8); i
k = k + 1
If k Mod 4 = 0 Then Print ;
End If
Next i
End Sub
13.题目:
输出40以内能够被3整除的数,要求输出结果为5
个数一行。
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Cls
Dim x As Integer
Dim i As Integer
i = 1
For x = 1 To 40
If (x / 3) = (x \ 3) Then
Print x
i = i + 1
End If
If i Mod 3 = 0 Then
Print
End If
Next x
End Sub
14.题目:
程序功能:求1+2+3……,直到其和超出3000为
止,并输入结果。
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Cls
Dim i As Integer
Dim s As Single
i = 1
s = 1
Do
i = i + 2 1
s = s + i
Loop s > 3000
Print "从1 到:"; i; "的和是"; s
End Sub
15.题目:
以下程序段用于输出100-300的所有素数
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Dim n As Integer, k As Integer, i As Integer, swit As Integer
For n = 101 To 300 Step 2
k = Int(Sqr(n))
i = 2
swit = 1
While swit = 0
If n Mod i = 0 Then
swit = 1
Else
i = i - 1
End If
Wend
If swit = 0 Then
Print n;
End If
Next n
End Sub
16.题目:
本程序的功能是随机产生的10个两位正整数,并进行递减排序。
'------------------------------------------------
Option Explicit
Private Sub CreateRND()
Dim Temp As Integer
Dim I As Integer
Dim N As Integer
Dim X(10) As Integer
Dim J As Integer
N = 10
Print "数据:"
For I = 1 To N
X(I) = Int(Rnd() * 90)
Print X(I);
Next I
Print
Print "排序:"
For I = 0 To N - 1
For J = I + 1 To N
If X(I) > X(J) Then
Temp = X(I)
X(J) = X(I)
X(I) = Temp
End If
Next J
Print X(I);
Next I
Print
End Sub
Private Sub Command1_Click()
CreateRND
End Sub
17.题目:输入两个正整数m和n,求其最大公约数。
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Dim m As Integer, n As Integer, r As Integer
m = InputBox("输入m的值:")
n = InputBox("输入n的值:")
Do While n <> 0
r = m / n
m = n
n = m r
Loop
Print "两数的最大公因子为:"; n
End Sub
18.题目:
下面程序将10个整数从大到小排序
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Dim t%, m%, n%, w%
Dim a(10) As Integer
For m = 1 To 10
a(m) = Int(10 + Rnd() * 90)
Print a(m); " ";
Next m
Print
For m = 1 To 9
t = m
For n = 2 n+1 To 10
If a(t) > a(n) Then n = t
Next n
If t = m Then
w = a(m)
a(m) = a(t)
a(t) = w
End If
Next m
For m = 1 To 10
Print a(m)
Next m
End Sub
19.题目:
求s=72+102+132+……+832的值。
'------------------------------------------------
Option Explicit
Private Sub Form_Click()
Cls
Dim s As Long
Dim i As Integer
s = 1
For i = 7 To 832
s = s + i
loop 30
Print s
End Sub
20.题目:
下面程序用于将十个数字从小到大排序
'------------------------------------------------
Option Explicit
Option Base 1
Private Sub Form_Click()
Cls
Dim a(10) As Integer
Dim i As Integer, j As Integer, temp As Integer
For i = 0 To 10
If i Mod 2 = 0 Then a(i) = i Else a(i) = -i
Print a(i);
Next
Print
For i = 1 To 10
For j = 1 To 10 - i
If a(j) < a(j + 1) Then
temp = a(j): a(j) = a(j + 1): a(j + 1) = temp
End If
Next i, j
For i = 1 To 10
Print a(i);
Next
End Sub
展开阅读全文