首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
tellmenow (22)
cutemouse (22)
softj (78)
iiprogram (69)
qdzx2008 (50)
goodboy1881 (14)
wangchinaking (58)
fancyhf (1)
harrymeng (41)
yjz0065 (113)
CSDN - 文档中心 - Visual Basic 阅读:4243   评论: 5    参与评论
标题   VB算24点     选择自 bruceYing 的 Blog
关键字   24点
出处  

VERSION 5.00
Begin VB.Form frmMain
   BorderStyle     =   1  'Fixed Single
   Caption         =   "  24点"
   ClientHeight    =   4020
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   5325
   Icon            =   "Form1.frx":0000
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   4020
   ScaleWidth      =   5325
   StartUpPosition =   3  '窗口缺省
   Begin VB.Timer t
      Interval        =   20000
      Left            =   4440
      Top             =   2310
   End
   Begin VB.CommandButton cmdExit
      Caption         =   "退出"
      Height          =   525
      Left            =   3330
      TabIndex        =   6
      Top             =   3030
      Width           =   975
   End
   Begin VB.CommandButton cmdDo
      Caption         =   "求解"
      Height          =   525
      Left            =   2160
      TabIndex        =   1
      Top             =   3030
      Width           =   975
   End
   Begin VB.CommandButton cmdMake
      Caption         =   "出题"
      Height          =   525
      Left            =   960
      TabIndex        =   0
      Top             =   3030
      Width           =   975
   End
   Begin VB.Label lresult
      AutoSize        =   -1  'True
      BeginProperty Font
         Name            =   "宋体"
         Size            =   15.75
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      Height          =   315
      Left            =   450
      TabIndex        =   7
      Top             =   1560
      Width           =   165
   End
   Begin VB.Label lNumberD
      AutoSize        =   -1  'True
      Caption         =   "0"
      BeginProperty Font
         Name            =   "宋体"
         Size            =   48
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H0000C000&
      Height          =   960
      Left            =   4200
      TabIndex        =   5
      Top             =   300
      Width           =   480
   End
   Begin VB.Label lNumberB
      AutoSize        =   -1  'True
      Caption         =   "0"
      BeginProperty Font
         Name            =   "宋体"
         Size            =   48
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H0080FF80&
      Height          =   960
      Left            =   1680
      TabIndex        =   4
      Top             =   300
      Width           =   480
   End
   Begin VB.Label lNumberC
      AutoSize        =   -1  'True
      Caption         =   "0"
      BeginProperty Font
         Name            =   "宋体"
         Size            =   48
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H0000FF00&
      Height          =   960
      Left            =   2940
      TabIndex        =   3
      Top             =   300
      Width           =   480
   End
   Begin VB.Label lNumberA
      AutoSize        =   -1  'True
      Caption         =   "0"
      BeginProperty Font
         Name            =   "宋体"
         Size            =   48
         Charset         =   134
         Weight          =   400
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00C0FFC0&
      Height          =   960
      Left            =   420
      TabIndex        =   2
      Top             =   300
      Width           =   480
   End
End
Attribute VB_Name = "frmMain"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim NumberA, NumberB, NumberC, NumberD As Single
Dim A, B, C, D As Single
Dim Jieguo As Single
Dim ResultExpression As String
Dim i As Integer
Dim Num As Boolean


Sub Kind(i As Integer)
Select Case i
  Case 1
  A = NumberA: B = NumberB: C = NumberC: D = NumberD
  Case 2
  A = NumberA: B = NumberB: D = NumberC: C = NumberD
  Case 3
  A = NumberA: C = NumberB: B = NumberC: D = NumberD
  Case 4
  A = NumberA: C = NumberB: D = NumberC: B = NumberD
  Case 5
  A = NumberA: D = NumberB: B = NumberC: C = NumberD
  Case 6
  A = NumberA: D = NumberB: C = NumberC: B = NumberD
 
  Case 7
  B = NumberA: A = NumberB: C = NumberC: D = NumberD
  Case 8
  B = NumberA: A = NumberB: D = NumberC: C = NumberD
  Case 9
  B = NumberA: C = NumberB: A = NumberC: D = NumberD
  Case 10
  B = NumberA: C = NumberB: D = NumberC: A = NumberD
  Case 11
  B = NumberA: D = NumberB: A = NumberC: C = NumberD
  Case 12
  B = NumberA: D = NumberB: C = NumberC: A = NumberD
 
  Case 13
  C = NumberA: A = NumberB: B = NumberC: D = NumberD
  Case 14
  C = NumberA: A = NumberB: D = NumberC: B = NumberD
  Case 15
  C = NumberA: B = NumberB: A = NumberC: D = NumberD
  Case 16
  C = NumberA: B = NumberB: D = NumberC: A = NumberD
  Case 17
  C = NumberA: D = NumberB: A = NumberC: B = NumberD
  Case 18
  C = NumberA: D = NumberB: B = NumberC: A = NumberD
 
  Case 19
  D = NumberA: A = NumberB: B = NumberC: C = NumberD
  Case 20
  D = NumberA: A = NumberB: C = NumberC: B = NumberD
  Case 21
  D = NumberA: B = NumberB: A = NumberC: C = NumberD
  Case 22
  D = NumberA: B = NumberB: C = NumberC: A = NumberD
  Case 23
  D = NumberA: C = NumberB: A = NumberC: B = NumberD
  Case 24
  D = NumberA: C = NumberB: B = NumberC: A = NumberD
End Select
 

 
End Sub

Private Sub cmdDo_Click()
For j = 1 To 30
  Select Case j
     Case 1
     For i = 1 To 1
      Call Kind(i)
      Jieguo = A + B + C + D
      If Jieguo = 24 Then
       ResultExpression = A & "+" & B & "+" & C & "+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 2
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A + B + C - D
      If Jieguo = 24 Then
       ResultExpression = A & "+" & B & "+" & C & "-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 3
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B + C + D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "+" & C & "+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 4
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B + C - D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "+" & C & "-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 5
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B * C + D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "*" & C & "+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 6
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B * C - D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "*" & C & "-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 7
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B * C * D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "*" & C & "*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 8
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B + C * D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "+" & C & "*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 9
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B - C * D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "-" & C & "*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 10
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A / B + C + D
      If Jieguo = 24 Then
       ResultExpression = A & "/" & B & "+" & C & "+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 11
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B / C + D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "/" & C & "+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 12
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B / C - D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "/" & C & "-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 13
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B * C / D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "*" & C & "/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 14
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * B / C / D
      If Jieguo = 24 Then
       ResultExpression = A & "*" & B & "/" & C & "/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 15
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B) * C / D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & ")*" & C & "/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 16
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B) * C * D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & ")*" & C & "*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 17
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B) * (C + D)
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & ")*(" & C & "+" & D & ")=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 18
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B) * (C - D)
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & ")*(" & C & "-" & D & ")=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 19
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A - B) * (C - D)
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "-" & B & ")*(" & C & "-" & D & ")=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 20
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A - B) * C / D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "-" & B & ")*" & C & "/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 21
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A - B) * C * D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "-" & B & ")*" & C & "*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 22
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B + C) * D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & "+" & C & ")*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 23
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B + C) / D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & "+" & C & ")/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 24
     For i = 1 To 24
      Call Kind(i)
      Jieguo = (A + B - C) * D
      If Jieguo = 24 Then
       ResultExpression = "(" & A & "+" & B & "-" & C & ")*" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 25
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * (B + C) + D
      If Jieguo = 24 Then
       ResultExpression = A & "*(" & B & "+" & C & ")+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 26
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * (B - C) + D
      If Jieguo = 24 Then
       ResultExpression = A & "*(" & B & "-" & C & ")+" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 27
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * (B + C) - D
      If Jieguo = 24 Then
       ResultExpression = A & "*(" & B & "+" & C & ")-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 28
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A * (B - C) - D
      If Jieguo = 24 Then
       ResultExpression = A & "*(" & B & "-" & C & ")-" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 29
     For i = 1 To 24
      Call Kind(i)
      Jieguo = A + (B + C) / D
      If Jieguo = 24 Then
       ResultExpression = A & "+(" & B & "+" & C & ")/" & D & "=24"
       Num = True
       lresult.Caption = ResultExpression
       Exit For
      End If
     Next i
     Case 30
     ResultExpression = "无解"
    
     Num = True
       lresult.Caption = ResultExpression
       End Select
      
   If Num = True Then Exit For
Next j

End Sub
Private Sub cmdExit_Click()
End
End Sub
Private Sub cmdMake_Click()
Randomize
NumberA = Int(Rnd * 10) + 1
NumberB = Int(Rnd * 10) + 1
NumberC = Int(Rnd * 10) + 1
NumberD = Int(Rnd * 10) + 1
lNumberA.Caption = NumberA
lNumberB.Caption = NumberB
lNumberC.Caption = NumberC
lNumberD.Caption = NumberD
lresult.Caption = "请按求解键!"
cmdDo.Enabled = True
Num = False

End Sub

Private Sub Form_Load()
cmdDo.Enabled = False
t.Enabled = False
lresult.Caption = "请按出题键!"
Num = False

End Sub


相关文章
对该文的评论
CSDN 网友 ( 2006-01-20)
太差了
shawphy ( 2005-06-09)
用的是VBS,但也差不多的
shawphy ( 2005-06-09)
把以下文件保存成.vbs文件

on error resume next
Dim a(4), f(4),list1
count24()

Function sum(n1, n2, f)
on error resume next
sum = n1
If f = 1 Then
sum = sum + n2
ElseIf f = 2 Then
sum = sum - n2
ElseIf f = 3 Then
sum = sum * n2
ElseIf f = 4 Then
sum = sum / n2
End If
End Function

Function showsum(n1, n2, f)
showsum = CStr(n1)
If f = 1 Then
showsum = showsum + "+" + CStr(n2)
ElseIf f = 2 Then
showsum = showsum + "-" + CStr(n2)
ElseIf f = 3 Then
showsum = showsum + "*" + CStr(n2)
ElseIf f = 4 Then
showsum = showsum + "/" + CStr(n2)
End If
End Function

Sub count24()

For i = 1 To 4
e=inputbox("Please enter the Number "&i,"Count 24")
list1=list1 & e & " "
a(i) = cint(e)
Next
z=list1
list1=""
iis24 a,4
if list1="" then 
msgbox z & vbcrlf & "What's wrong?" & vbcrlf & "Are you sure that these 4 numbers are right?"
else 
msgbox list1 & vbcrlf & a(1) & "," & a(2) & "," &a(3) & "," & a(4)
end if

End Sub


Function iis24(ByRef a(), ByRef i)
If i = 2 Then
n1 = a(1): n2 = a(2)
For ff = 1 To 4
If sum(n1, n2, ff) = 24 Then
List1= List1 & showsum(n1, n2, ff) + "=" + CStr(sum(n1, n2, ff)) & vbcrlf
iis24 = True
Exit Function
ElseIf sum(n2, n1, ff) = 24 Then
List1= List1 & showsum(n2, n1, ff) + "=" + CStr(sum(n2, n1, ff)) & vbcrlf
iis24 = True
Exit Function
End If
Next
Else
Dim b(4), c(4)
For ii = 1 To i
n1 = a(ii)
For jj = 1 To i
If jj <> ii Then
n2 = a(jj)
nb = 2
For kk = 1 To i
If kk <> ii And kk <> jj Then c(nb) = a(kk): nb = nb + 1
Next
For ff = 1 To 4
c(1) = sum(n1, n2, ff)
If iis24(c, i - 1) Then
List1= List1 & showsum(n1, n2, ff) + "=" + CStr(sum(n1, n2, ff)) & vbcrlf
iis24 = True
Exit Function
End If
Next
End If
Next
Next
End If
End Function
shawphy ( 2005-06-09)
可以用递归的呀
vblau ( 2004-11-27)
就没有更变通一点的算法吗?不过偶也只想到这种穷举