
#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std
double maths(double a,double b,int i)
{
if(i==0)
return(a+b)
else if(i==1)
return(a-b)
else if(i==2)
return(a*b)
else
return(b == 0.0? 0.0: a/b)
}
int prin(int i)
{
if(i==0)printf(" + ")
else if(i==1)printf(" - ")
else if(i==2)printf(" x ")
else if(i==3)printf(" ÷ ")
}
int main()
{
int g,i,j,q
char t
double a,b,c,d
double X[4]
double N[4]
printf("24点是把4个小于13的正整数通过加减乘除运算,使最后的计算结果是24的一个数学游戏。可以考验人的智力和数学敏感性。\n\nInput Four Number Within 1-13, Then Press Enter:\n")
begin:g=0
scanf("%lf%lf%lf%lf",&N[0],&N[1],&N[2],&N[3])
for(i=0i<4i++)
{
if(N[i]<1||N[i]>13)
{
printf(" Wrong Input !\n")
goto end
}
}
sort(N,N+4)
for(i=0i<4i++)
{
X[i]=N[i]
}
do
{
for(i=0i<4i++)
{
for(j=0j<4j++)
{
for(q=0q<4q++)
{
a=maths(N[0],N[1],i)
b=maths(N[2],N[3],j)
c=maths(a,b,q)
if(c==24.0&&a>0.0&&b>0.0)
{
g=1
goto answer1
}
}
}
}
}while(next_permutation(N,N+4))
for(i=0i<4i++)
{
N[i]=X[i]
}
if(g==0)
{
do
{
for(i=0i<4i++)
{
for(j=0j<4j++)
{
for(q=0q<4q++)
{
a=maths(N[0],N[1],i)
b=maths(a,N[2],j)
c=maths(b,N[3],q)
if(c==24.0&&a>0.0&&b>0.0)
{
g=2
goto answer2
}
}
}
}
}while(next_permutation(N,N+4))
}
if(g==0)
{
for(i=0i<4i++)
{
N[i]=X[i]
}
do
{
for(i=0i<4i++)
{
for(j=0j<4j++)
{
for(q=0q<4q++)
{
a=maths(N[0],N[1],i)
b=maths(N[2],a,j)
c=maths(b,N[3],q)
if(c==24.0&&a>0.0&&b>0.0)
{
g=3
goto answer3
}
}
}
}
}while(next_permutation(N,N+4))
}
if(g==0)
{printf("\n No Answer !\n")
goto end}
answer1:
{ printf("\n Answer: ( %.0lf",N[0])
prin(i)
printf("%.0lf )",N[1])
prin(q)
printf("( %.0lf",N[2])
prin(j)
printf("%.0lf )=24\n",N[3])
goto end
}
answer2:
{
printf("\n Answer: (( %.0lf",N[0])
prin(i)
printf("%.0lf )",N[1])
prin(j)
printf("%.0lf )",N[2])
prin(q)
printf("%.0lf=24\n",N[3])
goto end
}
answer3:
{
printf("\n Answer: ( %.0lf",N[2])
prin(j)
printf("( %.0lf",N[0])
prin(i)
printf("%.0lf ))",N[1])
prin(q)
printf("%.0lf=24\n",N[3])
goto end
}
end:
{printf("\n*******************************************************\n\n")}
printf("Try Again(Y/N) ?\n")
scanf("%c",&t)
scanf("%c",&t)
if(t=='Y'||t=='y')
{
printf("Input Four Number Within 1-13, Then Press Enter:\n")
goto begin
}
system("pause")
return 0
}
设第一个数为a(0),第二a(1),第三a(2),第四a(3)。Cls '清空屏幕
Dim b,c,d,e As Integer
For b = 0 To 3
For c = 0 To 3
For d = 0 To 3
For e = 0 To 3
If b<>c And c<>d And d<>e And e<>b And b<>d And c<>e Then
If a(b) + a(c) + a(d) + a(e) = 24 Then ?a(b)"+"a(c)"+"a(d)"+"a(e)
If a(b) + a(c) + a(d) - a(e) = 24 Then ?a(b)"+"a(c)"+"a(d)"-"a(e)
If a(b) + a(c) - a(d) - a(e) = 24 Then ?a(b)"+"a(c)"-"a(d)"-"a(e)
If a(b) - a(c) - a(d) - a(e) = 24 Then ?a(b)"-"a(c)"-"a(d)"-"a(e)
If a(b) * a(c) + a(d) + a(e) = 24 Then ?a(b)"×"a(c)"+"a(d)"+"a(e)
If a(b) * a(c) + a(d) - a(e) = 24 Then ?a(b)"×"a(c)"+"a(d)"-"a(e)
If a(b) * a(c) - a(d) - a(e) = 24 Then ?a(b)"×"a(c)"-"a(d)"-"a(e)
If a(b) * a(c) * a(d) + a(e) = 24 Then ?a(b)"×"a(c)"×"a(d)"+"a(e)
If a(b) * a(c) * a(d) - a(e) = 24 Then ?a(b)"×"a(c)"×"a(d)"-"a(e)
If a(b) * a(c) * a(d) * a(e) = 24 Then ?a(b)"×"a(c)"×"a(d)"×"a(e)
If a(b) / a(c) + a(d) + a(e) = 24 Then ?a(b)"÷"a(c)"+"a(d)"+"a(e)
If a(b) / a(c) + a(d) - a(e) = 24 Then ?a(b)"÷"a(c)"+"a(d)"-"a(e)
If a(b) / a(c) * a(d) + a(e) = 24 Then ?a(b)"÷"a(c)"×"a(d)"+"a(e)
If a(b) / a(c) * a(d) - a(e) = 24 Then ?a(b)"÷"a(c)"×"a(d)"-"a(e)
If a(b) / a(c) / a(d) + a(e) = 24 Then ?a(b)"÷"a(c)"÷"a(d)"+"a(e)
If a(b) / a(c) / a(d) - a(e) = 24 Then ?a(b)"÷"a(c)"÷"a(d)"-"a(e)
If a(b) / a(c) / a(d) * a(e) = 24 Then ?a(b)"÷"a(c)"÷"a(d)"×"a(e)
If a(b) / a(c) / a(d) / a(e) = 24 Then ?a(b)"÷"a(c)"÷"a(d)"÷"a(e)
If a(b) / a(c) + a(d) * a(e) = 24 Then ?a(b)"÷"a(c)"+"a(d)"×"a(e)
If a(b) / a(c) - a(d) * a(e) = 24 Then ?a(b)"÷"a(c)"-"a(d)"×"a(e)
If a(b) / a(c) + a(d) / a(e) = 24 Then ?a(b)"÷"a(c)"+"a(d)"÷"a(e)
If a(b) / a(c) - a(d) / a(e) = 24 Then ?a(b)"÷"a(c)"-"a(d)"÷"a(e)
End If
Next e,d,c,b
可能有问题,请先试试,有问题问我
只需要复制到程序中,引用函数s24就可以了,比如打印结果:Print s24(1,2,3,4)Private Function s24(ByVal n1 As Single, ByVal n2 As Single, ByVal n3 As Single, ByVal n4 As Single) As String
Dim i As Integer, j As Integer
Dim a As Single, b As Single, c As Single, d As Single
Dim s() As String
Dim Num As Boolean
If n1 * n2 * n3 * n4 <1 Then s24 = "本程序只对正整数有效!": Exit Function
For j = 1 To 30
Select Case j
Case 1
For i = 1 To 1
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a + b + c + d = 24 Then
s24 = a &"+" &b &"+" &c &"+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 2
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a + b + c - d = 24 Then
s24 = a &"+" &b &"+" &c &"-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 3
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b + c + d = 24 Then
s24 = a &"*" &b &"+" &c &"+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 4
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b + c - d = 24 Then
s24 = a &"*" &b &"+" &c &"-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 5
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b * c + d = 24 Then
s24 = a &"*" &b &"*" &c &"+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 6
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b * c - d = 24 Then
s24 = a &"*" &b &"*" &c &"-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 7
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b * c * d = 24 Then
s24 = a &"*" &b &"*" &c &"*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 8
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b + c * d = 24 Then
s24 = a &"*" &b &"+" &c &"*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 9
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b - c * d = 24 Then
s24 = a &"*" &b &"-" &c &"*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 10
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a / b + c + d = 24 Then
s24 = a &"/" &b &"+" &c &"+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 11
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b / c + d = 24 Then
s24 = a &"*" &b &"/" &c &"+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 12
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b / c - d = 24 Then
s24 = a &"*" &b &"/" &c &"-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 13
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b * c / d = 24 Then
s24 = a &"*" &b &"*" &c &"/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 14
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * b / c / d = 24 Then
s24 = a &"*" &b &"/" &c &"/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 15
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b) * c / d = 24 Then
s24 = "(" &a &"+" &b &")*" &c &"/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 16
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b) * c * d = 24 Then
s24 = "(" &a &"+" &b &")*" &c &"*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 17
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b) * (c + d) = 24 Then
s24 = "(" &a &"+" &b &")*(" &c &"+" &d &")=24"
Num = True
Exit For
End If
Next i
Case 18
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b) * (c - d) = 24 Then
s24 = "(" &a &"+" &b &")*(" &c &"-" &d &")=24"
Num = True
Exit For
End If
Next i
Case 19
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a - b) * (c - d) = 24 Then
s24 = "(" &a &"-" &b &")*(" &c &"-" &d &")=24"
Num = True
Exit For
End If
Next i
Case 20
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a - b) * c / d = 24 Then
s24 = "(" &a &"-" &b &")*" &c &"/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 21
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a - b) * c * d = 24 Then
s24 = "(" &a &"-" &b &")*" &c &"*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 22
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b + c) * d = 24 Then
s24 = "(" &a &"+" &b &"+" &c &")*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 23
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b + c) / d = 24 Then
s24 = "(" &a &"+" &b &"+" &c &")/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 24
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If (a + b - c) * d = 24 Then
s24 = "(" &a &"+" &b &"-" &c &")*" &d &"=24"
Num = True
Exit For
End If
Next i
Case 25
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * (b + c) + d = 24 Then
s24 = a &"*(" &b &"+" &c &")+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 26
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * (b - c) + d = 24 Then
s24 = a &"*(" &b &"-" &c &")+" &d &"=24"
Num = True
Exit For
End If
Next i
Case 27
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * (b + c) - d = 24 Then
s24 = a &"*(" &b &"+" &c &")-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 28
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a * (b - c) - d = 24 Then
s24 = a &"*(" &b &"-" &c &")-" &d &"=24"
Num = True
Exit For
End If
Next i
Case 29
For i = 1 To 24
s = Split(Kind(i, n1, n2, n3, n4), " "): a = Val(Trim(s(0))): b = Val(Trim(s(1))): c = Val(Trim(s(2))): d = Val(Trim(s(3)))
If a + (b + c) / d = 24 Then
s24 = a &"+(" &b &"+" &c &")/" &d &"=24"
Num = True
Exit For
End If
Next i
Case 30
s24 = "无解"
Num = True
End Select
If Num = True Then Exit For
Next j
End Function
Private Function Kind(i As Integer, n1 As Single, n2 As Single, n3 As Single, n4 As Single) As String
Dim a As Single, b As Single, c As Single, d As Single
Select Case i
Case 1
a = n1: b = n2: c = n3: d = n4
Case 2
a = n1: b = n2: d = n3: c = n4
Case 3
a = n1: c = n2: b = n3: d = n4
Case 4
a = n1: c = n2: d = n3: b = n4
Case 5
a = n1: d = n2: b = n3: c = n4
Case 6
a = n1: d = n2: c = n3: b = n4
Case 7
b = n1: a = n2: c = n3: d = n4
Case 8
b = n1: a = n2: d = n3: c = n4
Case 9
b = n1: c = n2: a = n3: d = n4
Case 10
b = n1: c = n2: d = n3: a = n4
Case 11
b = n1: d = n2: a = n3: c = n4
Case 12
b = n1: d = n2: c = n3: a = n4
Case 13
c = n1: a = n2: b = n3: d = n4
Case 14
c = n1: a = n2: d = n3: b = n4
Case 15
c = n1: b = n2: a = n3: d = n4
Case 16
c = n1: b = n2: d = n3: a = n4
Case 17
c = n1: d = n2: a = n3: b = n4
Case 18
c = n1: d = n2: b = n3: a = n4
Case 19
d = n1: a = n2: b = n3: c = n4
Case 20
d = n1: a = n2: c = n3: b = n4
Case 21
d = n1: b = n2: a = n3: c = n4
Case 22
d = n1: b = n2: c = n3: a = n4
Case 23
d = n1: c = n2: a = n3: b = n4
Case 24
d = n1: c = n2: b = n3: a = n4
End Select
Kind = a &" " &b &" " &c &" " &d
End Function
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)