posts - 70,comments - 80,trackbacks - 0
 

VB竞赛题库三

一、在你面前有一条长长的阶梯,如果你每步跨2阶,那么最后剩下一阶,如果你每步跨3阶,那么最后剩下2阶,如果每步跨5阶,最后剩4阶,只有当每少跨7阶时,最后才正好走完,一阶不剩。现在,问这条阶梯最少共有多少阶?

答:设这条阶梯最少共有X阶,根据题意,可知X+1235的倍数,即X+130的倍数,所以X的最后一个数字必须是9,又因为X7的倍数,所以循环的最低数应该是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人(分别用ABC……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 课堂

只有注册用户登录后才能发表评论。