24点游戏

来源:互联网 发布:unity3d行走播放动画 编辑:程序博客网 时间:2024/06/16 21:36
#include<stdio.h>#include<stdlib.h> #include<string.h>char op[5]={'#','+','-','*','/',};    //将运算符存入字符数组 float cal(float x,float y,int op)   {switch(op){case 1:return x+y;  //op等于1,加法运算 case 2:return x-y;  //op等于2,减法运算 case 3:return x*y;  //op等于3,乘法运算 case 4:return x/y;  //op等于4,除法运算  } }float calculate_model1(float i,float j,float k,float t,int op1,int op2,int op3){                               //对应表达式类型:((A?B)?C)?D float r1,r2,r3;  r1=cal(i,j,op1);            //计算i,j,结果存入r1 r2=cal(r1,k,op2);           //计算r1,k,结果存入r2 r3=cal(r2,t,op3);           //计算r2,t,结果存入r3 return r3;}float calculate_model2(float i,float j,float k,float t,int op1,int op2,int op3){                               //对应表达式类型:(A?(B?C))?D float r1,r2,r3;r1=cal(j,k,op2);            //计算j,k,结果存入r1 r2=cal(i,r1,op1);           //计算i,r1,结果存入r2 r3=cal(r2,t,op3);           //计算r2,t,结果存入r3return r3;}float calculate_model3(float i,float j,float k,float t,int op1,int op2,int op3){                               //对应表达式类型:A?(B?(C?D)) float r1,r2,r3;r1=cal(k,t,op3);            //计算k,j,结果存入r1 r2=cal(j,r1,op2);           //计算j,r1,结果存入r2r3=cal(i,r2,op1);           //计算i,r2,结果存入r3return r3;}float calculate_model4(float i,float j,float k,float t,int op1,int op2,int op3){                               //对应表达式类型:A?((B?C)?D) float r1,r2,r3;             r1=cal(j,k,op2);                //计算j,k,结果存入r1 r2=cal(r1,t,op3);               //计算r1,t,结果存入r2r3=cal(i,r2,op1);               //计算i,r2,结果存入r3return r3;}float calculate_model5(float i,float j,float k,float t,int op1,int op2,int op3){                               //对应表达式类型:(A?B)?(C?D)float r1,r2,r3;r1=cal(i,j,op1);             //计算i,j,结果存入r1 r2=cal(k,t,op3);             //计算k,t,结果存入r2 r3=cal(r1,r2,op2);           //计算r1,r2,结果存入r3return r3;}int get24(int i,int j,int k,int t){int op1,op2,op3;    int flag=0;for(op1=1;op1<=4;op1++){       for(op2=1;op2<=4;op2++)       {            for(op3=1;op3<=4;op3++)    //得到不含括号的表达式:A op1 B op2 C op3 D             {            if(calculate_model1(i,j,k,t,op1,op2,op3)==24)            {printf("((%d%c%d)%c%d)%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);      //若满足条件,则按照对应表达式输出                 flag=1;            }            if(calculate_model2(i,j,k,t,op1,op2,op3)==24)            {printf("(%d%c(%d%c%d))%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);       //若满足条件,则按照对应表达式输出                flag=1;            }            if(calculate_model3(i,j,k,t,op1,op2,op3)==24)            {printf("%d%c(%d%c(%d%c%d))=24\n",i,op[op1],j,op[op2],k,op[op3],t);         //若满足条件,则按照对应表达式输出                flag=1;            }            if(calculate_model4(i,j,k,t,op1,op2,op3)==24)            {printf("%d%c((%d%c%d)%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);           //若满足条件,则按照对应表达式输出                flag=1;            }            if(calculate_model5(i,j,k,t,op1,op2,op3)==24)            {printf("(%d%c%d)%c(%d%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);            //若满足条件,则按照对应表达式输出                flag=1;            }            }        }    }    return flag;}int main(){int i,j,k,t;printf("Please input four numbers:\n");   //随机输入四个数 scanf("%d %d %d %d",&i,&j,&k,&t);if(get24(i,j,k,t));    //调用get24() elseprintf("Sorry,the four integer cannot be calculated to get 24\n");}

0 0
原创粉丝点击