用扑克牌实现24点游戏,c++编写
发布网友
发布时间:2022-11-27 07:12
我来回答
共5个回答
热心网友
时间:2023-11-06 01:57
你好
下面的小程序有一些笨(语法很简单)
它无法分辨一些重复的情况
但结果还是基本正确的
#include<iostream>
using namespace std;
int main(){
int i1,i2,i3,i4,v,n1,n2;
int num=0;
int a,b;
double t1,t2,t3,t4,choice[4],s1[4],s2[4][4],s3[2],t;
for(;;){
cout<<"########################## 二十四点 ###################################\n友情提示:A=1,J=11,Q=12,K=13\n";
cout<<"请给出你抽到的第一牌:";
cin>>choice[0];
cout<<"请给出你抽到的第二牌:";
cin>>choice[1];
cout<<"请给出你抽到的第三牌:";
cin>>choice[2];
cout<<"请给出你抽到的第四牌:";
cin>>choice[3];
cout<<"########################## THINKING ###################################\n";
for(b=0;b<=2;b++)
for(a=3;a>=1+b;a--)if(choice[a]<choice[a-1]){
t=choice[a-1];
choice[a-1]=choice[a];
choice[a]=t;}
for(int j=0;j<4;j++)cout<<j+1<<". "<<choice[j]<<" ";
cout<<"\n";
for(i1=0;i1<4;i1++){
t1=choice[i1];
for(i2=0;i2<4;i2++){ if((i1-1)!=0 && t1==choice[i1-1])break;
if(i2!=i1){
t2=choice[i2];
s1[0]=t1+t2;
s1[1]=t1-t2;
s1[2]=t1*t2;
s1[3]=t1/t2;
for(i3=0;i3<4;i3++){
if(i3!=i1&&i3!=i2){
t3=choice[i3];
for(v=0;v<4;v++)
{s2[v][0]=s1[v]+t3;
s2[v][1]=s1[v]-t3;
s2[v][2]=s1[v]*t3;
s2[v][3]=s1[v]/t3;}
for(i4=0;i4<4;i4++){
if(i4!=i1&&i4!=i2&&i4!=i3){
t4=choice[i4];
for(n1=0;n1<4;n1++)for(n2=0;n2<4;n2++)
if(s2[n1][n2]+t4==24||s2[n1][n2]-t4==24||s2[n1][n2]*t4==24||s2[n1][n2]/t4==24){
cout<<"找到一种组合方案:\n(("<<t1;
if(s1[n1]==t1+t2)cout<<" + ";
if(s1[n1]==t1-t2)cout<<" - ";
if(s1[n1]==t1*t2)cout<<" * ";
if(s1[n1]==t1/t2)cout<<" / ";
if(n2==0)cout<<t2<<") + "<<t3;
if(n2==1)cout<<t2<<") - "<<t3;
if(n2==2)cout<<t2<<") * "<<t3;
if(n2==3)cout<<t2<<") / "<<t3;
if(s2[n1][n2]+t4==24)cout<<") + "<<t4<<" = 24 \n";
if(s2[n1][n2]-t4==24)cout<<") - "<<t4<<" = 24 \n";
if(s2[n1][n2]*t4==24)cout<<") * "<<t4<<" = 24 \n";
if(s2[n1][n2]/t4==24)cout<<") / "<<t4<<" = 24 \n";
num++;
}
}}}
}}}}
for(i1=0;i1<4;i1++){
t1=choice[i1];
for(i2=0;i2<4;i2++){
if(i2!=i1){
t2=choice[i2];
s1[0]=t1*t2;
s1[1]=t1/t2;
for(i3=0;i3<4;i3++){
if(i3!=i1&&i3!=i2){
t3=choice[i3];
for(i4=0;i4<4;i4++){
if(i4!=i1&&i4!=i2&&i4!=i3){
t4=choice[i4];
s3[0]=t3*t4;
s3[1]=t3/t4;
for(n1=0;n1<2;n1++)for(n2=0;n2<2;n2++)
if(s1[n1]+s3[n2]==24||s1[n1]-s3[n2]==24){
cout<<"找到一种组合方案:\n("<<t1;
if(s1[n1]==t1*t2)cout<<" * ";
if(s1[n1]==t1/t2)cout<<" / ";
if(s1[n1]+s3[n2]==24)cout<<t2<<") + ("<<t3;
if(s1[n1]-s3[n2]==24)cout<<t2<<") - ("<<t3;
if(s3[n2]==t3*t4)cout<<" * "<<t4<<") = 24 \n";
if(s3[n2]==t3/t4)cout<<" / "<<t4<<") = 24 \n";
num++;
}
}}}
}}}}
cout<<"总共有"<<num<<"种解法。\n";
if(num==0)cout<<"这四张牌无法构成24点~~~\n";
num=0;
}
return 0;
}
热心网友
时间:2023-11-06 01:57
#include "stdafx.h"
#include <time.h>
using namespace std;
void guess( int randomNum[4]);
int n=0;
void main()
{
cout<<"*****************猜数字小游戏***************"<<endl;
cout<<"***请输入四个不同的0~9间整数且首位不要为0***"<<endl;
cout<<"**************Such as: 9876 Enter***********"<<endl;
int randomNum[4],temp[10],randomSum,n=10;
srand((unsigned)time( NULL ));
for(int i=0;i<=3;i++)
{
randomNum[i]=rand() % 10;
}
for(int i=0;i<=9;i++)
{
temp[i]=i;
}
for(int i=0;i<=3;i++)
for(int j=0;j<9;j++)
{
if(randomNum[i]==temp[j])
{
for(int k=j;k<9;k++)
temp[k]=temp[k+1];
}
}
for(int i=0;i<=3;i++)
{
randomSum=0;
randomSum+=randomNum[i];
}
for(int i=1;i<=3;i++)
for(int j=0;j<i;j++)
{
if(randomNum[i]==randomNum[j])
{
randomNum[i]=temp[(randomSum++)%6];
}
}
if(randomNum[0]==0)
{
int temp;
temp=randomNum[0];
randomNum[0]=randomNum[1];
randomNum[1]=temp;
}
guess(randomNum);
}
void guess( int randomNum[])
{
int input,a=0,b=0;
int inputArray[4];
cin>>input;
for(int i=3;i>=0;i--)
{
inputArray[i]=input%10;
input/=10;
}
for(int i=0;i<=3;i++)
{
if(inputArray[i]==randomNum[i])
a++;
}
for(int i=0;i<=3;i++)
for(int j=0;j<=3;j++)
{
if(inputArray[i]==randomNum[j])
b++;
}
if(a==4)
{
cout<<"succeed!"<<endl;
exit(0);
}
else
{
cout<<a<<"A"<<b-a<<"B"<<endl;
n++;
if(n==10)
{
cout<<"还是看答案吧,呵呵~~"<<endl;
for(int i=0;i<=3;i++)
cout<<randomNum[i];
cout<<endl;
exit(0);
}
else
{
guess(randomNum);
}
}
}
热心网友
时间:2023-11-06 01:58
1、看材质 (1)红木有很多很多种材质,不同材质的红木沙发价格也相差甚远,普通消的费者很难区分红木属于哪一种材质,但有一个诀窍,只要会,就会辨别。 (2)主要是看木材的硬度和木纹,木材的硬度越高、木纹越美丽,材质就越珍贵,价格也就越高。 2、检查红木 挑选红木沙发是,看沙发木材是否有天然的疤结;再看红木是否有色差,真正的红木表面一般都是有色差的。 3、察看细节 看红木是否有开裂、虫眼、霉变,只要有这几种情况,就一律不要购买,其质量不会好到哪里。 4、检查框架 红木沙发采用螺钉和保护块等方式加固,消费者可以坐在沙发上试几下,看沙发是否会出现咯吱咯吱的声音,如果有,最好不要购买。 5、闻味道 重点辨别是否有刺激性气味,如果有刺激气味,可能是红木沙发表面所刷油漆含的甲醛过量,遇到这种情况,也不要购买,散发的味道对身体有危害。 6、需要尺寸 弄清客厅间的大小尺寸,清楚需要多大的红木沙发,一般市面上常见的是1+2+3组合沙发、两人沙发、三人沙发、贵妃位、L型沙发等等。如果需要其他尺寸,可要求厂家订做,但价格可能会贵点。 7、需要材质 (1)红木沙发的主要成本,是红木原料的价格和设计师设计成本,选用的材料越珍贵,做成的沙发价格也就越高,没有专业知识的消费者,可以掌握这样一个原则。 (2)在挑选的时候,不要被商家蒙蔽了,部分无良商家会以次充好,让消费者购买假的红木沙发,因此,最好去大型的店铺购买。追答真的太喜欢了呢。12BO fkqt/www.ole0812.com?vNzDd
热心网友
时间:2023-11-06 01:58
提示:千万不要在同学面前炫耀,如果你算不好,同学叫你跟他比赛,你比不过可能会被笑话的
热心网友
时间:2023-11-06 01:59
不好意思,没测试完整,给您带来的麻烦望谅解
用C/C++编写小游戏:第2章 计算24点
在“计算24点”游戏程序中,需要生成4个大小介于[1,13]的随机整数。假设在程序中定义整型变量a、b、c和d,利用rand函数可以实现如下操作:a = rand() % 13 + 1; b = rand() % 13 + 1; c = rand() % 13 + 1; d = rand() % 13 + 1; 为了方便用户处理,需要打印输出所生成的4...
如何用C语言做一个24点游戏的程序?
n=p[kind][num]; /*取相应位置的扑克牌数*/ p[kind][num]=-1; /*牌发好以后相应位置的元素置-1*/ break; } } switch(kind)/*花式的判断*/ { case 0:setcolor(RED);sprintf(str,"%c",3);break; /*红桃*/ case 1:setcolor(BLACK);sprintf(str,"%c",3);break; /*黑桃*/ case 2:setco...
用扑克牌实现24点游戏,c++编写
if(s2[n1][n2]+t4==24)cout<<") + "<<t4<<" = 24 \n";if(s2[n1][n2]-t4==24)cout<<") - "<<t4<<" = 24 \n";if(s2[n1][n2]*t4==24)cout<<") * "<<t4<<" = 24 \n";if(s2[n1][n2]/t4==24)cout<<") / "<<t4<<" = 24 \n";num++;} }}} }}...
用c语言编写24点代码分析
else if(tem3==1.0/24.0)//如果是倒数,说明需要颠倒最后一次运算(第三次运算同样不可能是加减)printf("%d%c{(%d%c%d)%c%d}=24\n",save[l],sign[r],save[i],sign[n],save[j],sign[m],save[k]);else if(tem3==-1.0/24.0)//如果是负倒数,则说明第二次和第三次运算都...
24点游戏程序编程
我把表达式如下分成三类——1、 无括号的简单表达式。2、 有一个括号的简单表达式。3、 有两个括号的较复4、 杂表达式。穷举的开始我对给出的四个数进行排列,其可能的种数为4*3*2*1=24。我利用一个嵌套函数实现四个数的排列,算法如下:/* ans[] 用来存放各种排列组合的数组 *//* c[] 存放四张牌的...
c++作业扑克牌24点要求:具体的图形化展示整个游戏。能够随机抽取4张牌...
k=0;double a,b;sign.pop();if (num.top(b)==success){ //判断例外 num.pop();if (num.top(a)==success) { num.pop();k=1;} } if (k) { switch (c) { case '+': num.push(a+b); break;case '-': num.push(a-b); break;case '*': num.push(a*b); break;...
求几C语言个小游戏代码,简单的,要注释、、谢谢了、
// Calcu24.cpp : Defines the entry point for the console application.// / 6-6 24点游戏 / include "conio.h"include "stdlib.h"include "time.h"include "math.h"include "string.h"/ 从一副扑克牌中,任取4张。2-10 按其点数计算(为了表示方便10用T表示),J,Q,K,A 统一按 1 ...
求教24点游戏的算法(最好用C++)
24点游戏是一个大众化的益智游戏.任意给四张扑克牌(不包括大小王),只能够用加,减,乘,除以及适当的括号连接这四张牌,无论顺序,使计算结果为24,或者宣布根本就是无解的.需要注意的是,每张牌必须运算,并且只能运算一次,J,Q,K可设置为11,12,13.本程序目的就是算出一组牌的所有解(不同形式的式子算不同解),...
算24点的汇编程序
“算24点”作为一种扑克牌智力游戏,还应注意计算中的技巧问题.计算时,我们不可能把牌面上的4个数的不同组合形式——去试,更不能瞎碰乱凑.这里向大家介绍几种常用的、便于学习掌握的方法:1.利用3×8=24、4×6=24求解.把牌面上的四个数想办法凑成3和8、4和6,再相乘求解.如3、3、6...
加减乘除求24点的游戏怎么用C语言编啊?
3 完美的24点运算与游戏程序 } if(sign==0) return(recog(p)); else { c=p; for(;*c!='\0';c++) { if(*c=='(') kuoh++; if(*c==')') kuoh--; if(!judge2©) { if(*c=='+'&&kuoh==0) { *c='\0'; ...