24点计算器(2.7版本)

 如题目,直接上代码:

#include<bits/stdc++.h>
using namespace std;
int main(){
	bool keepRunning=true;  
	while(keepRunning){ 
	//循环使用部分 
	
	
		cout<<"请输入4个数"<<endl; 
		int a,b,c,d,s=0;
		cin>>a>>b>>c>>d;
		//输入部分 
	
		
		for(int m=1;m<=5;m++){
			
			
			
			for(int l=0;l<24;l++){//每位上的数字做交换,一共4*3*2*1=24种情况 ,做24次交换 
				int ssa=a,ssb=b,ssc=c,ssd=d;
				if(l==1){
					swap(ssc,ssd);
				}
				if(l==2){
					swap(ssb,ssc);
				}
				if(l==3){
					swap(ssb,ssc);
					swap(ssb,ssd);
				}
				if(l==4){
					swap(ssb,ssd);
					swap(ssc,ssb);
				}
				if(l==5){
					swap(ssb,ssd);
				}
				if(l==6){
					swap(ssa,ssb);
				}
				if(l==7){
					swap(ssa,ssb);
					swap(ssc,ssd);
				}
				if(l==8){
					swap(ssa,ssb);
					swap(ssa,ssc);
				}
				if(l==9){
					swap(ssa,ssb);
					swap(ssa,ssc);
					swap(ssa,ssd);
				}
				if(l==10){
					swap(ssa,ssb);
					swap(ssa,ssc);
					swap(ssc,ssd);
				}
				if(l==11){
					swap(ssa,ssb);
					swap(ssa,ssc);
					swap(ssc,ssd);
					swap(ssa,ssc);
				}
				if(l==12){
					swap(ssa,ssc);
					swap(ssb,ssa);
				}
				if(l==13){
					swap(ssa,ssc);
					swap(ssb,ssa);
					swap(ssb,ssd);
				}
				if(l==14){
					swap(ssa,ssc);
				}
				if(l==15){
					swap(ssa,ssc);
					swap(ssa,ssd);
				}
				if(l==16){
					swap(ssa,ssc);
					swap(ssa,ssd);
					swap(ssb,ssd);
					swap(ssb,ssa);
				}
				if(l==17){
					swap(ssa,ssc);
					swap(ssa,ssd);
					swap(ssb,ssd);
				}
				if(l==18){
					swap(ssd,ssa);
					swap(ssb,ssa);
					swap(ssc,ssb);
				}
				if(l==19){
					swap(ssd,ssa);
					swap(ssb,ssa);
				}
				if(l==20){
					swap(ssd,ssa);
					swap(ssc,ssa);
				}
				if(l==21){
					swap(ssd,ssa);
				}
				if(l==22){
					swap(ssa,ssd);
					swap(ssc,ssb);
					swap(ssb,ssa);
				}
				if(l==23){
					swap(ssa,ssd);
					swap(ssb,ssc);
				}
				
				
				//爆枚 
				for(int i=1;i<=4;i++){
					for(int j=1;j<=4;j++){
						for(int k=1;k<=4;k++){
							float sa=ssa,sb=ssb,sc=ssc,sd=ssd;
							
							
							char si,sj,sk;//3个运算符号 
							
							
							if(m==1){
								if(i==1){
									sb=sb+sa;
									si='+';
								}
								if(i==2){	
									sb=sa-sb;
									si='-';
								}
								if(i==3){
									sb=sb*sa;
									si='x';
								}
								if(i==4){
									sb=sa/sb;
									si='/';
								}
								if(j==1){
									sc=sb+sc;
									sj='+';
								}
								if(j==2){
									sc=sb-sc;
									sj='-';
								}
								if(j==3){
									sc=sb*sc;
									sj='x';
								}
								if(j==4){
									sc=sb/sc;
									sj='/';
								}
								if(k==1){
									sd=sd+sc;
									sk='+';
									if(sd==24){
										s++;
										cout<<"(("<<ssa<<si<<ssb<<")"<<sj<<ssc<<")"<<sk<<ssd<<endl;
									}
								}
								if(k==2){
									sd=sc-sd;
									sk='-';
									if(sd==24){
										s++;
										cout<<"(("<<ssa<<si<<ssb<<")"<<sj<<ssc<<")"<<sk<<ssd<<endl;
									}
								}
								if(k==3){
									sd=sd*sc;
									sk='x';
									if(sd==24){
										s++;
										cout<<"(("<<ssa<<si<<ssb<<")"<<sj<<ssc<<")"<<sk<<ssd<<endl;
									}
								}
								if(k==4){
									sd=sc/sd;
									sk='/';
									if(sd==24){
										s++;
										cout<<"(("<<ssa<<si<<ssb<<")"<<sj<<ssc<<")"<<sk<<ssd<<endl;
									}
								}
							}
							if(m==2){
								if(i==1){
									sb=sb+sc;
									si='+';
								}
								if(i==2){	
									sb=sb-sc;
									si='-';
								}
								if(i==3){
									sb=sb*sc;
									si='x';
								}
								if(i==4){
									sb=sb/sc;
									si='/';
								}
								if(j==1){
									sa=sa+sb;
									sj='+';
								}
								if(j==2){
									sa=sa-sb;
									sj='-';
								}
								if(j==3){
									sa=sa*sb;
									sj='x';
								}
								if(j==4){
									sa=sa/sb;
									sj='/';
								}
								if(k==1){
									sd=sa+sd;
									sk='+';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<sj<<"("<<ssb<<si<<ssc<<"))"<<sk<<ssd<<endl;
									}
								}
								if(k==2){
									sd=sa-sd;
									sk='-';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<sj<<"("<<ssb<<si<<ssc<<"))"<<sk<<ssd<<endl;
									}
								}
								if(k==3){
									sd=sa*sd;
									sk='x';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<sj<<"("<<ssb<<si<<ssc<<"))"<<sk<<ssd<<endl;
									}
								}
								if(k==4){
									sd=sa/sd;
									sk='/';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<sj<<"("<<ssb<<si<<ssc<<"))"<<sk<<ssd<<endl;
									}
								}
							}
							if(m==3){
								if(i==1){
									sb=sb+sa;
									si='+';
								}
								if(i==2){	
									sb=sa-sb;
									si='-';
								}
								if(i==3){
									sb=sb*sa;
									si='x';
								}
								if(i==4){
									sb=sa/sb;
									si='/';
								}
								if(j==1){
									sd=sc+sd;
									sj='+';
								}
								if(j==2){
									sd=sc-sd;
									sj='-';
								}
								if(j==3){
									sd=sc*sd;
									sj='x';
								}
								if(j==4){
									sd=sc/sd;
									sj='/';
								}
								if(k==1){
									sd=sd+sb;
									sk='+';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<si<<ssb<<")"<<sk<<"("<<ssc<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==2){
									sd=sb-sd;
									sk='-';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<si<<ssb<<")"<<sk<<"("<<ssc<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==3){
									sd=sd*sb;
									sk='x';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<si<<ssb<<")"<<sk<<"("<<ssc<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==4){
									sd=sb/sd;
									sk='/';
									if(sd==24){
										s++;
										cout<<"("<<ssa<<si<<ssb<<")"<<sk<<"("<<ssc<<sj<<ssd<<")"<<endl;
									}
								}
							}
							if(m==4){
								if(i==1){
									sb=sb+sc;
									si='+';
								}
								if(i==2){	
									sb=sb-sc;
									si='-';
								}
								if(i==3){
									sb=sb*sc;
									si='x';
								}
								if(i==4){
									sb=sb/sc;
									si='/';
								}
								if(j==1){
									sd=sb+sd;
									sj='+';
								}
								if(j==2){
									sd=sb-sd;
									sj='-';
								}
								if(j==3){
									sd=sb*sd;
									sj='x';
								}
								if(j==4){
									sd=sb/sd;
									sj='/';
								}
								if(k==1){
									sa=sa+sd;
									sk='+';
									if(sa==24){
										s++;
										cout<<ssa<<sk<<"(("<<ssb<<si<<ssc<<")"<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==2){
									sa=sa-sd;
									sk='-';
									if(sa==24){
										s++;
										cout<<ssa<<sk<<"(("<<ssb<<si<<ssc<<")"<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==3){
									sa=sa*sd;
									sk='x';
									if(sa==24){
										s++;
										cout<<ssa<<sk<<"(("<<ssb<<si<<ssc<<")"<<sj<<ssd<<")"<<endl;
									}
								}
								if(k==4){
									sa=sa/sd;
									sk='/';
									if(sa==24){
										s++;
										cout<<ssa<<sk<<"(("<<ssb<<si<<ssc<<")"<<sj<<ssd<<")"<<endl;
									}
								}
							}
							if(m==5){
								if(i==1){
									sc=sc+sd;
									si='+';
								}
								if(i==2){	
									sc=sc-sd;
									si='-';
								}
								if(i==3){
									sc=sc*sd;
									si='x';
								}
								if(i==4){
									sc=sc/sd;
									si='/';
								}
								if(j==1){
									sb=sb+sc;
									sj='+';
								}
								if(j==2){
									sb=sb-sc;
									sj='-';
								}
								if(j==3){
									sb=sb*sc;
									sj='x';
								}
								if(j==4){
									sb=sb/sc;
									sj='/';
								}
								if(k==1){
									sd=sa+sb;
									sk='+';
									if(sd==24){
										s++;
										cout<<ssa<<sk<<"("<<ssb<<sj<<"("<<ssc<<si<<ssd<<"))"<<endl;
									}
								}
								if(k==2){
									sd=sa-sb;
									sk='-';
									if(sd==24){
										s++;
										cout<<ssa<<sk<<"("<<ssb<<sj<<"("<<ssc<<si<<ssd<<"))"<<endl;
									}
								}
								if(k==3){
									sd=sa*sb;
									sk='x';
									if(sd==24){
										s++;
										cout<<ssa<<sk<<"("<<ssb<<sj<<"("<<ssc<<si<<ssd<<"))"<<endl;
									}
								}
								if(k==4){
									sd=sa/sb;
									sk='/';
									if(sd==24){
										s++;
										cout<<ssa<<sk<<"("<<ssb<<sj<<"("<<ssc<<si<<ssd<<"))"<<endl;
									}
								}
							}
						}	
					}
				}
			}
		}
		cout<<"一共"<<s<<"种结果"<<endl<<"谢谢使用"<<endl<<endl<<endl; 
		cout << "是否继续输入新的数字?(y/n)";  
	    char choice;  
	    cin >> choice;  
	    if (choice != 'y' && choice != 'Y') {  
	        keepRunning = false;  
	    }  
	}  
	return 0;
}

额……由于小编为了大家能看懂,所以用了大家都能看懂的代码(好吧,其实是小编能力有限,我才六年级!)

我用的方法是3个循环嵌套来实现24点的计算,因为有4个数,所以应该有3个计算符号

前面用swap交换是用来实现加括号的

其他的你们应该都能看懂

下面我们来看效果:

输入:

输出:

小编这里没有把所有答案都放出来,大家可以自己去试试

小编认为已经没有任何bug ,如有发现,可以告诉我哟。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值