📄 24finished.c
字号:
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%c%d%c%d%c%c%d%c%d\n",oper[4],expression[1][0],oper[ii],expression[3][0],oper[5],oper[jj],expression[6][0],oper[kk],expression[8][0]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int CalcArray3(int iNumInput[2][4])
{
// (a * b * c) * d //9 number
int expression[10][2];
int ii,jj,i,j,k,l,kk;
int dRes;
printf("CalcArray3\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(j==i)
{
continue;
}
for(k=0;k<4;k++)
{
if(k==i||k==j)
{
continue;
}
for(l=0;l<4;l++)
{
if(l==i||l==j||l==k)
{
continue;
}
expression[1][0]=iNumInput[0][i];
expression[3][0]=iNumInput[0][j];
expression[5][0]=iNumInput[0][k];
expression[8][0]=iNumInput[0][l];
expression[1][1]=eNumber;
expression[3][1]=eNumber;
expression[5][1]=eNumber;
expression[8][1]=eNumber;
for (ii=0;ii<4;ii++)
{
for (jj=0;jj<4;jj++)
{
for (kk=0;kk<4;kk++)
{
expression[2][0] = oper[ii];
expression[2][1] = eOperator;
expression[4][0] = oper[jj];
expression[4][1] = eOperator;
expression[7][0] = oper[kk];
expression[7][1] = eOperator;
expression[9][0] = oper[6];
expression[9][1] = eOperator;
expression[0][0] = oper[4];
expression[0][1] = eOperator;
expression[6][0] = oper[5];
expression[6][1] = eOperator;
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%c%d%c%d%c%d%c%c%d\n",oper[4],expression[1][0],oper[ii],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int CalcArray4(int iNumInput[2][4])
{
// (a * b * c) * d //9 number
int expression[10][2];
int ii,jj,i,j,k,l,kk;
int dRes;
printf("CalcArray4\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(j==i)
{
continue;
}
for(k=0;k<4;k++)
{
if(k==i||k==j)
{
continue;
}
for(l=0;l<4;l++)
{
if(l==i||l==j||l==k)
{
continue;
}
expression[0][0]=iNumInput[0][i];
expression[3][0]=iNumInput[0][j];
expression[5][0]=iNumInput[0][k];
expression[8][0]=iNumInput[0][l];
expression[0][1]=eNumber;
expression[3][1]=eNumber;
expression[5][1]=eNumber;
expression[8][1]=eNumber;
for (ii=0;ii<4;ii++)
{
for (jj=0;jj<4;jj++)
{
for (kk=0;kk<4;kk++)
{
expression[1][0] = oper[ii];
expression[1][1] = eOperator;
expression[4][0] = oper[jj];
expression[4][1] = eOperator;
expression[7][0] = oper[kk];
expression[7][1] = eOperator;
expression[9][0] = oper[6];
expression[9][1] = eOperator;
expression[2][0] = oper[4];
expression[2][1] = eOperator;
expression[6][0] = oper[5];
expression[6][1] = eOperator;
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%d%c%c%d%c%d%c%c%d\n",expression[0][0],oper[ii],oper[4],expression[3][0],oper[jj],expression[5][0],oper[5],oper[kk],expression[8][0]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int CalcArray5(int iNumInput[2][4])
{
// (a * b) * (c * d) //11 number
int expression[12][2];
int ii,jj,i,j,k,l,kk;
int dRes;
printf("CalcArray5\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(j==i)
{
continue;
}
for(k=0;k<4;k++)
{
if(k==i||k==j)
{
continue;
}
for(l=0;l<4;l++)
{
if(l==i||l==j||l==k)
{
continue;
}
expression[1][0]=iNumInput[0][i];
expression[3][0]=iNumInput[0][j];
expression[7][0]=iNumInput[0][k];
expression[9][0]=iNumInput[0][l];
expression[1][1]=eNumber;
expression[3][1]=eNumber;
expression[7][1]=eNumber;
expression[9][1]=eNumber;
for (ii=0;ii<4;ii++)
{
for (jj=0;jj<4;jj++)
{
for (kk=0;kk<4;kk++)
{
expression[2][0] = oper[ii];
expression[2][1] = eOperator;
expression[5][0] = oper[jj];
expression[5][1] = eOperator;
expression[8][0] = oper[kk];
expression[8][1] = eOperator;
expression[11][0] = oper[6];
expression[11][1] = eOperator;
expression[0][0] = oper[4];
expression[0][1] = eOperator;
expression[6][0] = oper[4];
expression[6][1] = eOperator;
expression[4][0] = oper[5];
expression[4][1] = eOperator;
expression[10][0] = oper[5];
expression[10][1] = eOperator;
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%c%d%c%d%c%c%c%d%c%d%c\n",oper[4],expression[1][0],oper[ii],expression[3][0],oper[5],oper[jj],oper[4],expression[7][0],oper[kk],expression[9][0],oper[5]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int CalcArray6(int iNumInput[2][4])
{
// ((a * b) * c) * d //11 number
int expression[12][2];
int ii,jj,i,j,k,l,kk;
int dRes;
printf("CalcArray6\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(j==i)
{
continue;
}
for(k=0;k<4;k++)
{
if(k==i||k==j)
{
continue;
}
for(l=0;l<4;l++)
{
if(l==i||l==j||l==k)
{
continue;
}
expression[2][0]=iNumInput[0][i];
expression[4][0]=iNumInput[0][j];
expression[7][0]=iNumInput[0][k];
expression[10][0]=iNumInput[0][l];
expression[2][1]=eNumber;
expression[4][1]=eNumber;
expression[7][1]=eNumber;
expression[10][1]=eNumber;
for (ii=0;ii<4;ii++)
{
for (jj=0;jj<4;jj++)
{
for (kk=0;kk<4;kk++)
{
expression[3][0] = oper[ii];
expression[3][1] = eOperator;
expression[6][0] = oper[jj];
expression[6][1] = eOperator;
expression[9][0] = oper[kk];
expression[9][1] = eOperator;
expression[11][0] = oper[6];
expression[11][1] = eOperator;
expression[0][0] = oper[4];
expression[0][1] = eOperator;
expression[1][0] = oper[4];
expression[1][1] = eOperator;
expression[5][0] = oper[5];
expression[5][1] = eOperator;
expression[8][0] = oper[5];
expression[8][1] = eOperator;
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%c%c%d%c%d%c%c%d%c%c%d\n",oper[4],oper[4],expression[2][0],oper[ii],expression[4][0],oper[5],oper[jj],expression[7][0],oper[5],oper[kk],expression[10][0]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int CalcArray7(int iNumInput[2][4])
{
// (a * b * c) * d //9 number
int expression[12][2];
int ii,jj,i,j,k,l,kk;
int dRes;
printf("CalcArray7\n");
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
if(j==i)
{
continue;
}
for(k=0;k<4;k++)
{
if(k==i||k==j)
{
continue;
}
for(l=0;l<4;l++)
{
if(l==i||l==j||l==k)
{
continue;
}
expression[1][0]=iNumInput[0][i];
expression[4][0]=iNumInput[0][j];
expression[6][0]=iNumInput[0][k];
expression[10][0]=iNumInput[0][l];
expression[1][1]=eNumber;
expression[4][1]=eNumber;
expression[6][1]=eNumber;
expression[10][1]=eNumber;
for (ii=0;ii<4;ii++)
{
for (jj=0;jj<4;jj++)
{
for (kk=0;kk<4;kk++)
{
expression[2][0] = oper[ii];
expression[2][1] = eOperator;
expression[5][0] = oper[jj];
expression[5][1] = eOperator;
expression[9][0] = oper[kk];
expression[9][1] = eOperator;
expression[11][0] = oper[6];
expression[11][1] = eOperator;
expression[0][0] = oper[4];
expression[0][1] = eOperator;
expression[3][0] = oper[4];
expression[3][1] = eOperator;
expression[7][0] = oper[5];
expression[7][1] = eOperator;
expression[8][0] = oper[5];
expression[8][1] = eOperator;
dRes = CalcOneExpress(expression);
if(Equal24(dRes))
{
// printf("ok!\n");
// CombineResult(expression, 7);//组织结果表达式
// printf("%d,%d,%d,%d,%d,%d,%d\n",i,ii,j,jj,k,kk,l);
// printf("%d%c\n",expression[i][0],oper[ii]);
printf("%c%d%c%c%d%c%d%c%c%c%d\n",oper[4],expression[1][0],oper[ii],oper[4],expression[4][0],oper[jj],expression[6][0],oper[5],oper[5],oper[kk],expression[10][0]);
return TRUE;
}
}
}
}//end of for oper
}
}
}
}
return FALSE;
}
int Calc24(int number[2][4])
{
int find=0;
//括号的几种情况
//1 无括号
//2 (a b) c d 同a b (c d), 下省略
//3 (a b c) d
//4 a (b c) d
//5 (a b) (c d)
//6 ((a b) c) d
//7 (a (b c)) d
//计算不含括号的情况
if (CalcArray1(number))
{
find=1;
return TRUE;
}
if (CalcArray2(number))
{
find=1;
return TRUE;
}
if (CalcArray3(number))
{
find=1;
return TRUE;
}
if (CalcArray4(number))
{
find=1;
return TRUE;
}
if (CalcArray5(number))
{
find=1;
return TRUE;
}
if (CalcArray6(number))
{
find=1;
return TRUE;
}
if (CalcArray7(number))
{
find=1;
return TRUE;
}
if(find==0)
{
printf("These numbers cannot be combined to 24\n");
}
return FALSE;
}
void main(){
char s[40],ch;
int result,t=1;
printf("/***************************************************/\n");
printf(" 24点游戏 dos 版本1.0\n");
printf(" 北京工商大学微机024班 欧阳锦林 版权所有\n");
printf(" 完成于2004年4月15日\n");
printf("/***************************************************/\n");
printf("When you input the formula,\n");
printf("you should look A as 1,J as 11,Q as 12,k as 13\n");
while(t!=0){
number[2][4]=randomm();
printf("When you input the formula,\n");
// printf("you should look A as 1,J as 11,Q as 12,k as 13\n");
printf("The four numbers are %d ,%d ,%d ,%d\n",number[0][0],number[0][1],number[0][2],number[0][3]);
printf("please input the arithmetic(算术)\n");
printf("如果你认为这四个数算不出24点,请输入?\n");
printf("计算机将会给出答案,算不出也是一种答案!\n");
scanf ("%s",s);
if(s[0]=='?'){
Calc24(number);
}
else
{
result=EvaluateExpression(s);
printf("Your result is %d \n",result);
if(result==24){
printf("Very good!!It's right.\n");
}
else {
printf("sorry!You are wrong!Thank you!\n");
}
}
printf("Contine?Or not??please input Y/N??\n");
scanf(" %c",&ch);
printf("the choic is %c\n",ch);
if(ch=='n'||ch=='N'){
t=0;
}
else if (ch=='Y'||ch=='y') t=1;
// else{
// printf("your choic is not exact!!");
// t=0;
// }
// t=0;
}//end while
//printf("all finished!the result is %d\n",result);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -