纯C语言:检索与周游加减乘除24源码

#include<stdio.h>
char op[5]={'#','+','-','*','/'};
float cal(float x,float y,int op)
{
	switch(op)
	{
	    case 1:return x+y;
        case 2:return x-y;
		case 3:return x*y;
		case 4:return x/y;
	}
}
float model1(float i,float j,float k,float t,int op1,int op2,int op3)
{
	float r1,r2,r3;
	r1=cal(i,j,op1);
	r2=cal(r1,k,op2);
	r3=cal(r2,t,op3);
	return r3;
}
float model2(float i,float j,float k,float t,int op1,int op2,int op3)
{
	float r1,r2,r3;
	r1=cal(j,k,op2);
	r2=cal(i,r1,op1);
	r3=cal(r2,t,op3);
	return r3;
}
float model3(float i,float j,float k,float t,int op1,int op2,int op3)
{
	float r1,r2,r3;
	r1=cal(k,t,op3);
	r2=cal(j,r1,op2);
	r3=cal(i,r2,op1);
	return r3;
}

float model4(float i,float j,float k,float t,int op1,int op2,int op3)
{
	float r1,r2,r3;
	r1=cal(j,k,op2);
	r2=cal(r1,t,op3);
	r3=cal(i,r2,op1);
	return r3;
}

float model5(float i,float j,float k,float t,int op1,int op2,int op3)
{
	float r1,r2,r3;
	r1=cal(i,j,op1);
	r2=cal(k,t,op3);
	r3=cal(r1,r2,op2);
	return 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++)
			{
				if(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(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(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(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(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;
}
void main()
{
	int i,j,k,t;
	printf("please input four integer(1-10)\n");
	scanf("%d%d%d%d",&i,&j,&k,&t);
	if(!get24(i,j,k,t))
		printf("sorry,the four integer cannot be calculated to get 24\n");
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值