资源描述
问题 1
得 2.22 分,满分 20 分
编写一子过程,将数组a(n, n)转置。
正确答案
所选答案
1.
Public Sub ff(a() As Single, n As Integer)
1.
Public Sub ff(a() As Single, n As Integer)
2.
Dim i As Integer, j As Integer, t As Single
-
[未给定]
3.
For i = 2 To n
For j = 1 To i-1
-
[未给定]
4.
t = a(i, j)
-
[未给定]
5.
a(i, j) = a(j, i)
-
[未给定]
6.
a(j, i) = t
-
[未给定]
7.
Next j
-
[未给定]
8.
Next i
-
[未给定]
9.
End Function
-
[未给定]
问题 2
得 0 分,满分 20 分
求下面表达式的值,并在窗体上输出。要求m与n的值在窗体单击事件中用Inputbox()函数输入,且同为正整数,m>n。通过函数过程实现求阶乘的功能。
Private Sub Form_Click()
Dim m As Integer, n As Integer
Do
m = InputBox("m=", "m>0,m必须大于n")
n = InputBox("n=", "n>0")
Loop While m <= n Or m < 0 Or n < 0
Print fact(m) / fact(n) / fact(m - n)
End Sub
正确答案
所选答案
1.
Private Function fact(ByVal k As Integer) As Long
-
[未给定]
2.
Dim i As Integer
-
[未给定]
3.
fact = 1
-
[未给定]
4.
For i = 2 To k
-
[未给定]
5.
fact = fact * i
-
[未给定]
6.
Next i
-
[未给定]
7.
End Function
-
[未给定]
问题 3
得 0 分,满分 20 分
编写一个将一维数组倒置存放的子过程,并编写简单事件验证子过程的正确性。
Private Sub Form_Click()
Dim b(6) As Single
For i = 1 To 6
b(i) = InputBox(“b(” + Str(i) + “)=”)
Print b(i),
Next I
Print
Call rev(b(), 6)
For i = 1 To 6
Print b(i),
Next i
End Sub
正确答案
所选答案
1.
Public Sub rev(x() As Double, n As Integer)
-
[未给定]
2.
Dim i As Integer, t As Double
-
[未给定]
3.
For i = 1 To n \ 2
-
[未给定]
4.
t = a(i): a(i) = a(n - i + 1): a(n - i + 1) = t
-
[未给定]
5.
Next i
-
[未给定]
6.
End Sub
-
[未给定]
问题 4
得 0 分,满分 20 分
输入n后,再输入n个数a1 ,a2 ,...,an ,按照下列公式计算s的值并显示。
编写事件过程Command1_Click(),计算s值,其中 v 值要求调用函数过程 f 来完成。
已知求v值的函数过程 f程序如下。
Private Function f (x() As Single, n As Integer) as single
Dim i As Integer
For i = 1 To n
f = f + x(i)
Next i
f = f / n
End Function
正确答案
所选答案
1.
Private Sub Command1_Click()
-
[未给定]
2.
Dim a() As Single, n As Integer, s As Single
Dim v As Single, i As Integer
-
[未给定]
3.
n = InputBox("请输入n的值")
ReDim a(n)
-
[未给定]
4.
For i = 1 To n
-
[未给定]
5.
a(i) = InputBox("")
-
[未给定]
6.
Next i
v = f(a, n)
-
[未给定]
7.
For i = 1 To n
-
[未给定]
8.
s = s + ( a(i) - v ) ^ 2
-
[未给定]
9.
Next i
-
[未给定]
10.
s = Sqr(s) / n
-
[未给定]
11.
Print s
-
[未给定]
12.
End Sub
-
[未给定]
问题 5
得 0 分,满分 20 分
编写Sub过程求一元二次方程的实数解,并通过事件过程调用它。
Private Sub Command1_Click()
Dim a As Double, b As Double, c As Double, y1 As Double, y2 As Double
a = 3: b = 1: c = 5
If root(a, b, c, y1, y2) Then
Print y1, y2
Else
Print "方程无实数解!"
End If
End Sub
正确答案
所选答案
1.
Private Function root(ByVal a As Double, ByVal b As Double, ByVal c As Double, x1 As Double, x2 As Double) As Boolean
-
[未给定]
2.
Dim d As Double
-
[未给定]
3.
d = b * b - 4 * a * c
-
[未给定]
4.
If d < 0 Then
-
[未给定]
5.
root = False
-
[未给定]
6.
Else
-
[未给定]
7.
root = True
x1 = (-b + Sqr(d)) / (2 * a): x2 = (-b - Sqr(d)) / (2 * a)
-
[未给定]
8.
End If
-
[未给定]
9.
End Function
-
[未给定]
问题 1
得 0 分,满分 20 分
编写一子过程,将数组a(n, n)转置。
正确答案
所选答案
1.
Public Sub ff(a() As Single, n As Integer)
-
[未给定]
2.
Dim i As Integer, j As Integer, t As Single
-
[未给定]
3.
For i = 2 To n
For j = 1 To i-1
-
[未给定]
4.
t = a(i, j)
-
[未给定]
5.
a(i, j) = a(j, i)
-
[未给定]
6.
a(j, i) = t
-
[未给定]
7.
Next j
-
[未给定]
8.
Next i
-
[未给定]
9.
End Function
-
[未给定]
问题 2
得 0 分,满分 20 分
两质数的差为2,称此两质数为质数对,设计一个程序找出100以内的质数对,并在窗体上成对显示结果。要求质数的判断用自定义函数完成。
正确答案
所选答案
1.
Private Function prime(ByVal k As Integer) As Boolean
-
[未给定]
2.
Dim i As Integer
If k < 2 Then
-
[未给定]
3.
prime = False
-
[未给定]
4.
Else
-
[未给定]
5.
For i = 2 To Sqr(k)
-
[未给定]
6.
If k Mod i = 0 Then Exit For
-
[未给定]
7.
Next i
If i > Sqr(k) Then prime = True Else prime = False
-
[未给定]
8.
End If
-
[未给定]
9.
End Function
Private Sub Form_Click()
-
[未给定]
10.
Dim n As Integer
-
[未给定]
11.
For n = 3 To 100 Step 2
-
[未给定]
12.
If prime(n) And prime(n + 2) Then Print n; n + 2
-
[未给定]
13.
Next n
-
[未给定]
14.
End Sub
-
[未给定]
问题 3
得 0 分,满分 20 分
编写子过程,将某数组中元素按值从大到小排序,并在窗体的单击事件中,编写简单程序验算其正确性。
Private Sub Form_click()
Dim x(10) As Single, i As Integer
Print "排序前:"
For i = 1 To 10
x(i) = InputBox("b(" + Str(i) + ")=")
Print x(i);
Next i
Print
Call sort(x(), 10)
Print "排序后:"
For i = 1 To 10
Print x(i);
Next i
End Sub
正确答案
所选答案
1.
Private Sub sort(a() As Single, ByVal n As Byte)
-
[未给定]
2.
Dim i As Byte, j As Byte, k As Byte, temp As Single
-
[未给定]
3.
For i = 1 To n - 1
-
[未给定]
4.
k = i
-
[未给定]
5.
For j = i + 1 To n
-
[未给定]
6.
If a(j) > a(k) Then k = j
-
[未给定]
7.
Next j
-
[未给定]
8.
temp = a(k): a(k) = a(i): a(i) = temp
-
[未给定]
9.
Next i
-
[未给定]
10.
End Sub
-
[未给定]
问题 4
得 0 分,满分 20 分
编写Sub过程求一元二次方程的实数解,并通过事件过程调用它。
Private Sub Command1_Click()
Dim a As Double, b As Double, c As Double, y1 As Double, y2 As Double
a = 3: b = 1: c = 5
If root(a, b, c, y1, y2) Then
Print y1, y2
Else
Print "方程无实数解!"
End If
End Sub
正确答案
所选答案
1.
Private Function root(ByVal a As Double, ByVal b As Double, ByVal c As Double, x1 As Double, x2 As Double) As Boolean
-
[未给定]
2.
Dim d As Double
-
[未给定]
3.
d = b * b - 4 * a * c
-
[未给定]
4.
If d < 0 Then
-
[未给定]
5.
root = False
-
[未给定]
6.
Else
-
[未给定]
7.
root = True
x1 = (-b + Sqr(d)) / (2 * a): x2 = (-b - Sqr(d)) / (2 * a)
-
[未给定]
8.
End If
-
[未给定]
9.
End Function
-
[未给定]
问题 5
得 0 分,满分 20 分
编写一个将一维数组倒置存放的子过程,并编写简单事件验证子过程的正确性。
Private Sub Form_Click()
Dim b(6) As Single
For i = 1 To 6
b(i) = InputBox(“b(” + Str(i) + “)=”)
Print b(i),
Next I
Print
Call rev(b(), 6)
For i = 1 To 6
Print b(i),
Next i
End Sub
正确答案
所选答案
1.
Public Sub rev(x() As Double, n As Integer)
-
[未给定]
2.
Dim i As Integer, t As Double
-
[未给定]
3.
For i = 1 To n \ 2
-
[未给定]
4.
t = a(i): a(i) = a(n - i + 1): a(n - i + 1) = t
-
[未给定]
5.
Next i
-
[未给定]
6.
End Sub
-
[未给定]
问题 1
得 0 分,满分 20 分
编写一个将一维数组倒置存放的子过程,并编写简单事件验证子过程的正确性。
Private Sub Form_Click()
Dim b(6) As Single
For i = 1 To 6
b(i) = InputBox(“b(” + Str(i) + “)=”)
Print b(i),
Next I
Print
Call rev(b(), 6)
For i = 1 To 6
Print b(i),
Next i
End Sub
正确答案
所选答案
1.
Public Sub rev(x() As Double, n As Integer)
-
[未给定]
2.
Dim i As Integer, t As Double
-
[未给定]
3.
For i = 1 To n \ 2
-
[未给定]
4.
t = a(i): a(i) = a(n - i + 1): a(n - i + 1) = t
-
[未给定]
5.
Next i
-
[未给定]
6.
End Sub
-
[未给定]
问题 2
得 0 分,满分 20 分
验证哥德巴赫猜想———大于6的偶数可以分解为两个素数之和,调用函数过程实现判断任一正整数是不是素数。
Private Function prime(ByVal n As Integer) As Boolean
Dim i As Integer
prime = True
For i = 2 To Sqr(n)
If n Mod i = 0 Then prime = False: Exit For
Next i
End Function
正确答案
所选答案
1.
Private Sub Form_Click()
-
[未给定]
2.
Dim n1 As Integer, n2 As Integer, n As Integer
-
[未给定]
3.
Do
n = InputBox("输入一个大于6 的偶数")
-
[未给定]
4.
Loop While n <= 6 Or n Mod 2 <> 0
-
[未给定]
5.
For n1 = 3 To n / 2 Step 2
-
[未给定]
6.
n2 = n - n1
-
[未给定]
7.
If prime(n1) And prime(n2) Then
-
[未给定]
8.
Print n; "="; n1; "+"; n2
Exit For
-
[未给定]
9.
End If
-
[未给定]
10.
Next n1
-
[未给定]
11.
End Sub
-
[未给定]
问题 3
得 0 分,满分 20 分
编写函数过程,计算某一维数组的最大值,并在窗体的单击事件中,验算其正确性。
Private Sub Form_Click()
Dim a(10) As Integer
For i = 1 To 10
a(i) = Int(Rnd * 90) + 10
Print a(i);
Next i
Print
Print "最大值是:"; fmax(a(), 10)
End Sub
正确答案
所选答案
1.
Private Function fmax(x() As Integer, ByVal n As Byte) As Integer
-
[未给定]
2.
fmax = x(1)
-
[未给定]
3.
For i = 2 To n
-
[未给定]
4.
If x(i) > fmax Then fmax = x(i)
-
[未给定]
5.
Next i
-
[未给定]
6.
End Function
-
[未给定]
问题 4
得 0 分,满分 20 分
从1到10000中找出这样的数,该数各个位的数字的阶乘相加之和等于该数,并将结果输出。要求调用fact函数过程计算阶乘。
Private Function fact(ByVal k As Integer) As Long
Dim i As Integer
fact = 1
For i = 2 To k
fact = fact * i
Next i
End Function
正确答案
所选答案
1.
Private Sub Form_Click()
-
[未给定]
2.
Dim k As Integer, a As String, n As Long, i As Integer
Dim p As Integer
-
[未给定]
3.
For k = 1 To 10000
-
[未给定]
4.
a = LTrim(Str(k))
n = 0
-
[未给定]
5.
For i = 1 To Len(a)
-
[未给定]
6.
p = Val( Mid(a, i, 1) )
-
[未给定]
7.
n = n + fact( p )
-
[未给定]
8.
Next i
-
[未给定]
9.
If n = k Then Print k
-
[未给定]
10.
Next k
-
[未给定]
11.
End Sub
-
[未给定]
问题 5
得 0 分,满分 20 分
编程,使窗体的背景色在四种颜色间变换。第一次单击窗体是红色;第二次单击窗体是绿色;第三次单击窗体是蓝色;第四次单击窗体是黄色;第五次又重新开始。要求其中使用静态变量。
正确答案
所选答案
1.
Private Sub Form_Click()
-
[未给定]
2.
Static flag As Integer
-
[未给定]
3.
flag = flag + 1
-
[未给定]
4.
Select Case flag
Case 1
-
[未给定]
5.
BackColor = vbRed
Case 2
-
[未给定]
6.
BackColor = vbGreen
Case 3
-
[未给定]
7.
BackColor = vbBlue
Case 4
-
[未给定]
8.
BackColor = vbYellow
-
[未给定]
9.
Case 5
-
[未给定]
10.
BackColor = vbWhite
flag = 0
-
[未给定]
11.
End Select
-
[未给定]
12.
End Sub
-
[未给定]
问题 1
得 0 分,满分 20 分
从键盘输入m、n的值(m>0,n>0),求 y = m! + n!, 并在窗体上显示结果。要求用函数实现求阶乘的功能。
正确答案
所选答案
1.
Public Function fact(k As Integer) As Long
-
[未给定]
2.
Dim i As Integer
fact = 1
-
[未给定]
3.
For i = 1 To k
-
[未给定]
4.
fact = fact * i
-
[未给定]
5.
Next i
-
[未给定]
6.
End Function
Private Sub Form_Click()
-
[未给定]
7.
Dim m As Integer, n As Integer
-
[未给定]
8.
Do
m = InputBox("")
-
[未给定]
9.
n = InputBox("")
Loop Until m > 0 And n > 0
-
[未给定]
10.
Print fact(m) + fact(n)
-
[未给定]
11.
End Sub
-
[未给定]
问题 2
得 0 分,满分 20 分
两质数的差为2,称此两质数为质数对,设计一个程序找出100以内的质数对,并在窗体上成对显示结果。要求质数的判断用自定义函数完成。
正确答案
所选答案
1.
Private Function prime(ByVal k As Integer) As Boolean
-
[未给定]
2.
Dim i As Integer
If k < 2 Then
-
[未给定]
3.
prime = False
-
[未给定]
4.
Else
-
[未给定]
5.
For i = 2 To Sqr(k)
-
[未给定]
6.
If k Mod i = 0 Then Exit For
-
[未给定]
7.
Next i
If i > Sqr(k) Then prime = True Else prime = False
-
[未给定]
8.
End If
-
[未给定]
9.
End Function
Private Sub Form_Click()
-
[未给定]
10.
Dim n As Integer
-
[未给定]
11.
For n = 3 To 100 Step 2
-
[未给定]
12.
If prime(n) And prime(n + 2) Then Print n; n + 2
-
[未给定]
13.
Next n
-
[未给定]
14.
End Sub
-
[未给定]
问题 3
得 0 分,满分 20 分
输入n后,再输入n个数a1 ,a2 ,...,an ,按照下列公式计算s的值并显示。
编写事件过程Command1_Click(),计算s值,其中 v 值要求调用函数过程 f 来完成。
已知求v值的函数过程 f程序如下。
Private Function f (x() As Single, n As Integer) as single
Dim i As Integer
For i = 1 To n
f = f + x(i)
Next i
f = f / n
End Function
正确答案
所选答案
1.
Private Sub Command1_Click()
-
[未给定]
2.
Dim a() As Single, n As Integer, s As Single
Dim v As Single, i As Integer
-
[未给定]
3.
n = InputBox("请输入n的值")
ReDim a(n)
-
[未给定]
4.
For i = 1 To n
-
[未给定]
5.
a(i) = InputBox("")
-
[未给定]
6.
Next i
v = f(a, n)
-
[未给定]
7.
For i = 1 To n
-
[未给定]
8.
s = s + ( a(i) - v ) ^ 2
-
[未给定]
9.
Next i
-
[未给定]
10.
s = Sqr(s) / n
-
[未给定]
11.
Print s
-
[未给定]
12.
End Sub
-
[未给定]
问题 4
得 0 分,满分 20 分
编制函数过程求二维数组a(n,n)的对角线上各元素的和。
正确答案
所选答案
1.
Public Function ff(a() As Single, n As Integer) As Single
-
[未给定]
2.
Dim i As Integer, j As Integer
ff = 0
-
[未给定]
3.
For i = 1 To n
For j = 1 To n
-
[未给定]
4.
If i = j Or i + j = n + 1 Then ff = ff + a(i, j)
-
[未给定]
5.
Next j
-
[未给定]
6.
Next i
-
[未给定]
7.
End Function
-
[未给定]
问题 5
得 0 分,满分 20 分
编写一子过程,将数组a(n, n)转置。
正确答案
所选答案
1.
Public Sub ff(a() As Single, n As Integer)
-
[未给定]
2.
Dim i As Integer, j As Integer, t As Single
-
[未给定]
3.
For i = 2 To n
For j = 1 To i-1
-
[未给定]
4.
t = a(i, j)
-
[未给定]
5.
a(i, j) = a(j, i)
-
[未给定]
6.
a(j, i) = t
-
[未给定]
7.
Next j
-
[未给定]
8.
Next i
-
[未给定]
9.
End Function
-
[未给定]
问题 1
得 0 分,满分 20 分
编写Sub过程求一元二次方程的实数解,并通过事件过程调用它。
Private Sub Command1_Click()
Dim a As Double, b As Double, c As Double, y1 As Double, y2 As Double
a = 3: b = 1: c = 5
If root(a, b, c, y1, y2) Then
Print y1, y2
Else
Print "方程无实数解!"
End If
End Sub
正确答案
所选答案
1.
Private Function root(ByVal a As Double, ByVal b As Double, ByVal c As Double, x1 As Double, x2 As Double) As Boolean
-
[未给定]
2.
Dim d As Double
-
[未给定]
3.
d = b * b - 4 * a * c
-
[未给定]
4.
If d < 0 Then
-
[未给定]
5.
root = False
-
[未给定]
6.
Else
-
[未给定]
7.
root = True
x1 = (-b + Sqr(d)) / (2 * a): x2 = (-b - Sqr(d)) / (2 * a)
-
[未给定]
8.
End If
-
[未给定]
9.
End Function
-
[未给定]
问题 2
得 0 分,满分 20 分
产生10个[30,50]的随机整数,并按从小到大的顺序打印出来,要求调用Swap子过程实现两个数交换。
Public Sub Swap(a As Integer, b As Integer)
Dim temp As Integer
temp = a : a = b : b = temp
End Sub
正确答案
所选答案
1.
Private Sub form_click()
-
[未给定]
2.
Dim a(10) As Integer, i As Integer, j As Integer
-
[未给定]
3.
For i = 1 To 10
-
[未给定]
4.
a(i)= Int(Rnd * 21) + 30
Next i
-
[未给定]
5.
For i = 1 To 9
-
[未给定]
6.
For j = i + 1 To 10
-
[未给定]
7.
If a(i) > a(j) Then
-
[未给定]
8.
Call Swap(a(i), a(j))
-
[未给定]
9.
End If
-
[未给定]
10.
Next j
-
[未给定]
11.
Form1.Print a(i);
Next i
-
[未给定]
12.
Form1.print a(10)
-
[未给定]
13.
End Sub
-
[未给定]
问题 3
得 0 分,满分 20 分
求下面表达式的值,并在窗体上输出。要求m与n的值在窗体单击事件中用Inputbox()函数输入,且同为正整数,m>n。通过函数过程实现求阶乘的功能。
Private Sub Form_Click()
Dim m As Integer, n As Integer
Do
m = InputBox("m=", "m>0,m必须大于n")
n = InputBox("n=", "n>0")
Loop While m <= n Or m < 0 Or n < 0
Print fact(m) / fact(n) / fact(m - n)
End Sub
正确答案
所选答案
1.
Private Function fact(ByVal k As Integer) As Long
-
[未给定]
2.
Dim i As Integer
-
[未给定]
3.
fact = 1
-
[未给定]
4.
For i = 2 To k
-
[未给定]
5.
fact = fact * i
-
[未给定]
6.
Next i
-
[未给定]
7.
End Function
-
[未给定]
问题 4
得 0 分,满分 20 分
验证哥德巴赫猜想———大于6的偶数可以分解为两个素数之和,调用函数过程实现判断任一正整数是不是素数。
Private Function prime(ByVal n As Integer) As Boolean
展开阅读全文