c语言实现24点课程设计,完美起航-数据结构课程设计(一)---24点

#include

using namespace std;

int flag=0;

int Calculate(float x,float y,float z,float w);//a b c d的所有排列组合情况

int check(int *a,int *b,int *c,int *d);

int main()

{

int a,b,c,d;

m_ret: //做标记

cout<

cout<

cin>>a;

cout<

cin>>b;

cout<

cin>>c;

cout<

cin>>d;

cout<

if ((a<0)||(a>13)||(b<0)||(b>13)||(c<0)||(c>13)||(d<0)||(d>13))

{

cout<

goto m_ret;

} // 返回标记,重复输入

if(check(&a,&b,&c,&d)==0)//分成五种情况,都不想等,有两个相等(两种),有三个相等,有四个相等 ,并且把相等的往后放

{

Calculate(a,b,c,d); Calculate(a,b,d,c); Calculate(a,c,d,b);

Calculate(a,c,b,d); Calculate(a,d,b,c); Calculate(a,d,c,b);

Calculate(b,a,c,d); Calculate(b,a,d,c); Calculate(b,c,a,d);

Calculate(b,c,d,a); Calculate(b,d,c,a); Calculate(b,d,a,c);

Calculate(c,a,b,d); Calculate(c,a,d,b); Calculate(c,b,d,a);

Calculate(c,b,a,d); Calculate(c,d,a,b); Calculate(c,d,b,a);

Calculate(d,a,b,c); Calculate(d,a,c,b); Calculate(d,b,c,a);

Calculate(d,b,a,c); Calculate(d,c,a,b); Calculate(d,c,b,a);

}

else if(check(&a,&b,&c,&d)==1) //只有一组一样的,即交换后的c和d

{

Calculate(a,b,c,d);

Calculate(a,c,d,b);

Calculate(a,c,b,d); Calculate(a,d,c,b);

Calculate(b,a,c,d); Calculate(b,c,a,d);

Calculate(b,c,d,a);

Calculate(c,a,b,d); Calculate(c,a,d,b); Calculate(c,b,d,a);

Calculate(c,b,a,d); Calculate(c,d,a,b); Calculate(c,d,b,a);

}

else if(check(&a,&b,&c,&d)==2) //有两组一样的,即交换后的a和b c和d

{

Calculate(a,b,c,d); Calculate(a,c,d,b); Calculate(a,c,b,d);

Calculate(c,a,b,d); Calculate(c,a,d,b); Calculate(c,d,a,b);

}

else if(check(&a,&b,&c,&d)==3)

{

Calculate(a,b,c,d);Calculate(b,a,c,d);

Calculate(c,b,a,d);Calculate(d,b,c,a);

}

else

Calculate(a,b,c,d);

if(flag==0)

cout<

else

cout<

return 0;

}

int Calculate(float x,float y,float z,float w) //运算表达式的所有情况,里面的x,y,z,w位置相对固定,所以所有情况,靠主函数里面对他们进行排序

{

if (x+y+z+w==24) {cout<

else if (x+y+z-w==24) {cout<

else if ((x+y)*(z+w)==24) {cout<

else if ((x-y)*(z+w)==24) {cout<

else if ((x-y)*(z-w)==24) {cout<

else if ((x+y+z)*w==24) {cout<

else if ((x-y-z)*w==24) {cout<

else if ((x+y-z)*w==24) {cout<

else if ((x-y+z)*w==24) {cout<

else if ((x*y*z)/w==24) {cout<

else if ((x*y)*(z+w)==24) {cout<

else if ((x*y)*(z-w)==24) {cout<

else if ((x*y)*z-w==24) {cout<

else if ((x*y)*z+w==24) {cout<

else if (x*y*z*w==24) {cout<

else if ((x+y)+(z/w)==24) {cout<

else if ((x+y)*(z/w)==24) {cout<

else if ((x*y)+z+w==24) {cout<

else if ((x*y)+z-w==24) {cout<

else if ((x*y)-(z/w)==24) {cout<

else if ((x*y)+(z/w)==24) {cout<

else if ((x*y)-z-w==24) {cout<

else if ((x*y)+(z*w)==24) {cout<

else if ((x*y)-(z*w)==24) {cout<

else if ((x*y)/(z*w)==24) {cout<

else if ((x*y)/(z-w)==24) {cout<

else if ((x*y)/(z+w)==24) {cout<

else if ((x*y+z)/w==24) {cout<

else if ((x*y-z)/w==24) {cout<

else if ((x/y+z)/w==24) {cout<

else if ((x/y-z)/w==24) {cout<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值