VB竞赛题库三
一、在你面前有一条长长的阶梯,如果你每步跨2阶,那么最后剩下一阶,如果你每步跨3阶,那么最后剩下2阶,如果每步跨5阶,最后剩4阶,只有当每少跨7阶时,最后才正好走完,一阶不剩。现在,问这条阶梯最少共有多少阶?
答:设这条阶梯最少共有X阶,根据题意,可知X+1是2、3、5的倍数,即X+1是30的倍数,所以X的最后一个数字必须是9,又因为X是7的倍数,所以循环的最低数应该是49,循环的步长至少应该是10,但又要满足是7的倍数,所以步长应该是70,故源程序如下:
Private Sub Command1_Click()
Dim x As Integer
x = 49
Do
If (x + 1) Mod 30 = 0 Then Exit Do
x = x + 70
Loop Until (1)
Label1.Caption = "这条阶梯至少共有" & x & "阶!"
End Sub
二、编程验证:任意一个大于9的整数,减去它的各位上的数字之和所得的差,一定能被9整除。证明中应显示从键盘输入的数,以及差值和商的过程。
(例: 123——1+2+3=6——123-6=117——117/9=13)
答:
源程序:
Private Sub Command1_Click()
Dim sum As Integer, i As Integer
Dim s As String, str As String
s = Trim(Text1.Text)
If Val(s) <= 9 Then
MsgBox "所输入的数小于9,请重新输入!"
Text1 = ""
Text1.SetFocus
Exit Sub
End If
For i = 1 To Len(s)
sum = sum + Mid(s, i, 1)
str = str & Mid(s, i, 1) & "+"
Next
str = Mid(str, 1, Len(str) - 1)
If (Val(s) - sum) Mod 9 = 0 Then
Text2.Text = Val(s) & "——" & str & "=" & sum & "——" & Val(s) & "-" & sum & "=" & Val(s) - sum & "——" & Val(s) - sum & "/9=" & (Val(s) - sum) / 9
End If
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub
三、输入一串字符,以“?”结束,统计各字母出现的次数,并按字母出现的多少输出。(先输出字母出现次数多的,次数相同的按字母表顺序输出,不出现的字母不输出。)
答:源程序:
Private Sub Command1_Click()
Dim s As String, a(26) As Integer, i As Integer, j As Integer, n As Integer
s = Trim(Text1.Text)
s = UCase(s)
n = InStr(s, "?")
If n = 0 Then
MsgBox "请输入结束符号?"
Text1.SetFocus
Exit Sub
End If
For i = 0 To n - 2
t = Mid(s, i + 1, 1)
t = Asc(t) - 65
a(t) = a(t) + 1
Next
For j = 0 To 25
l = 0
For i = 1 To 25
If a(i) > a(l) Then l = i
Next
If a(l) <> 0 Then List1.AddItem "字母" & Chr(65 + l) & "出现的次数为:" & a(l)
a(l) = 0
Next
End Sub
Private Sub Command2_Click()
Text1 = ""
List1.Clear
Text1.SetFocus
End Sub
四、编写程序,将14人(分别用A、B、C、……,N表示)随机分配在5排(每排3座)的座位中,分配后空的座位用“EMPTY”表示,并打印出座位分配情况。
答:源程序:
Dim b(15) As String
Private Sub Command1_Click()
Randomize
Dim a(15) As String
Dim i As Integer, j As Integer, num As Integer
For i = 0 To 13
a(i) = Chr(65 + i)
Next
a(14) = "EMPTY"
For i = 0 To 14
b(i) = "0"
Next
For i = 0 To 14
num = Int(15 * Rnd)
While cz(a(num)) = True
num = Int(15 * Rnd)
Wend
b(i) = a(num)
Next
j = 1
For y = 0 To 14
If j Mod 3 = 0 Then
Text1 = Text1 & b(y) & vbCrLf
Else
Text1 = Text1 & b(y) & " "
End If
j = j + 1
Next
End Sub
Private Function cz(x As String) As Boolean
Dim i As Integer
cz = False
For i = 0 To 14
If b(i) = x Then cz = True: Exit For
Next
End Function
Private Sub Command2_Click()
Text1 = ""
End Sub
posted on 2008-01-03 15:58
木子李 阅读(1004)
评论(0) 编辑 收藏 引用 网摘 所属分类:
Visual Basic 课堂