数据结构课程设计----24点游戏 30

24点游戏:基本要求及步骤:1、随机产生四个1-13的数,分别代表13张牌。2、提示玩家输入算式。3、判断玩家输入的表达式是否合法,其中算式中的四个数字只能是程序所给的四... 24点游戏:
基本要求及步骤:
1、 随机产生四个1-13的数,分别代表13张牌。
2、 提示玩家输入算式。
3、 判断玩家输入的表达式是否合法,其中算式中的四个数字只能是程序所给的四个数字,非法则回到1)。
4、 如果玩家认为这四张牌算不出24点(如:1,1,1,1),可只输入?,程序将判断这四张牌是否能得出24点,如果能,则程序将给出算式,如果不能,说明不能,并回到1)。
5、 当用户正确输入算式后,用“堆栈来求表达式的值”的原理 求出结果并判断是否为24,得出用户是输是赢的结果。
6、 询问用户是否继续,是则回到1),否则结束程序。

这个我不会啊,而且很急啊!如果有哪位高手知道的话,请帮帮我,不胜感激。
展开
 我来答
风鹰12
2010-01-31 · TA获得超过158个赞
知道答主
回答量:75
采纳率:0%
帮助的人:40.1万
展开全部
//你看一下,下面这段代码,可能对你有帮助:
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int fun(int a,int b,int c,int d);
//4个数求24点的穷举算法
int main(){

int i=0,j=0,a[4];
char ch2,ch1,ch;
for(;;){
printf("Chose method: input(I) OR random(R) OR EXIT(Q)\n");
ch1=getch();
if(ch1=='q'||ch1=='Q')break;
else if(ch1=='R'||ch1=='r')
for(i=0;i<4;i++)a[i]=rand()%13+1;
else
for(i=0;i<4;i++){
printf("\nNO.%d:",i+1);
scanf("%d",&a[i]);
if(a[i]<1||a[i]>13)
return main();
}
printf("\n\tthe 4 numbers are:");
for(i=0;i<4;i++) printf("%d,",a[i]);
printf("\n\n\tget way to 24(or:-24)\n");
if(ch2=getch())
j=fun(a[0],a[1],a[2],a[3]);
if(j==0)printf("\n\n\tNO ANSWERS!\n\n");
else printf("\n\n\tThere are %d ways to 24(or -24):\n\n\n\n",j);
scanf("%c",&ch);
}
}
int fun(int a,int b,int c,int d){
int flag=0,time=0;
int i=0,j=0,k=0,a_b,temp;
char ch[4];
while(time<6){
for(i=0;i<4;i++){
if(i<3){
if(i==0){a_b=a+b;ch[i]='+';}
if(i==1){a_b=a-b;ch[i]='-';}
if(i==2){a_b=a*b;ch[i]='*';}
{
if(a_b+c+d==24){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b+c-d==24){printf("\n%d%c%d+%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==24){printf("\n%d%c%d-%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==-24){printf("\n%d%c%d-%d+%d=-24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==-24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)+c*d==24){printf("\n(%d%c%d)+%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-c*d==24){printf("\n(%d%c%d)-%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==-24){printf("\n(%d%c%d)*(%d+%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*(c+d)){printf("\n(%d%c%d)/(%d+%d)=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d==24){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c+d==-24){printf("\n(%d%c%d)*%d+%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==24){printf("\n(%d%c%d)*%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==-24){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b&&(a_b)==24*(c-d)){printf("\n(%d%c%d)/(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==24){printf("\n(%d%c%d)*%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==-24){printf("\n(%d%c%d)*%d*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*c*d){printf("\n(%d%c%d)/(%d*%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==24*d){printf("\n(%d%c%d)*%d/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)==-24*c*d){printf("\n(%d%c%d)/(%d*%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==-24*d){printf("\n(%d%c%d)*%d/%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c==24*c){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c==24*c){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(c!=d){temp=c;c=d;d=temp;}
else break;
}
}
}
if(i==3)for(k=0;k<2;k++){a_b=a;ch[i]='/';
if(a_b+(c+d)*b==24*b){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c+d)*b==-24*b){printf("\n%d%c%d-(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==-24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==24*b){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==-24*b){printf("\n%d%c%d-%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24*b){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*b){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c*b==-24*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c*b==24*b){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d*b==24*b){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d*b==24*b){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24*b){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*c*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==24*b){printf("\n(%d%c%d-%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==-24*b){printf("\n(%d%c%d-%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)*d==24*b){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c==24*b*d){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
if(c!=d){temp=c;c=d;d=temp;}
else break;
}temp=a;a=b;b=temp;
}
}
if(time==0){temp=b;b=c;c=temp;if(b==c)time++;}
if(time==1){temp=b;b=d;d=temp;if(b==d)time++;}
if(time==2){temp=a;a=c;c=temp;if(a==c)time++;}
if(time==3){temp=a;a=d;d=temp;if(a==d)time++;}
if(time==4){temp=b;b=d;d=temp;if(b==d)time++;}
if(time==5){temp=a;a=c;c=temp;}
time++;
}
return flag;
}

hdjhjafd
BJ华夏艺匠
2024-08-11 广告
智能动态实训模型,作为北京华夏艺匠模型科技有限公司的创新力作,集高科技与实战教学于一体。该模型通过高精度模拟与智能控制技术,动态再现复杂工作场景,为学员提供沉浸式学习体验。不仅能够直观展示操作流程,还能根据学习进度自动调整难度,实现个性化教... 点击进入详情页
本回答由BJ华夏艺匠提供
青花f3
2010-01-15 · TA获得超过1453个赞
知道小有建树答主
回答量:637
采纳率:0%
帮助的人:818万
展开全部
//你看一下,下面这段代码,可能对你有帮助:
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
int fun(int a,int b,int c,int d);
//4个数求24点的穷举算法
int main(){

int i=0,j=0,a[4];
char ch2,ch1,ch;
for(;;){
printf("Chose method: input(I) OR random(R) OR EXIT(Q)\n");
ch1=getch();
if(ch1=='q'||ch1=='Q')break;
else if(ch1=='R'||ch1=='r')
for(i=0;i<4;i++)a[i]=rand()%13+1;
else
for(i=0;i<4;i++){
printf("\nNO.%d:",i+1);
scanf("%d",&a[i]);
if(a[i]<1||a[i]>13)
return main();
}
printf("\n\tthe 4 numbers are:");
for(i=0;i<4;i++) printf("%d,",a[i]);
printf("\n\n\tget way to 24(or:-24)\n");
if(ch2=getch())
j=fun(a[0],a[1],a[2],a[3]);
if(j==0)printf("\n\n\tNO ANSWERS!\n\n");
else printf("\n\n\tThere are %d ways to 24(or -24):\n\n\n\n",j);
scanf("%c",&ch);
}
}
int fun(int a,int b,int c,int d){
int flag=0,time=0;
int i=0,j=0,k=0,a_b,temp;
char ch[4];
while(time<6){
for(i=0;i<4;i++){
if(i<3){
if(i==0){a_b=a+b;ch[i]='+';}
if(i==1){a_b=a-b;ch[i]='-';}
if(i==2){a_b=a*b;ch[i]='*';}
{
if(a_b+c+d==24){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b+c-d==24){printf("\n%d%c%d+%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==24){printf("\n%d%c%d-%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c+d==-24){printf("\n%d%c%d-%d+%d=-24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-c-d==-24){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)+c*d==24){printf("\n(%d%c%d)+%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-c*d==24){printf("\n(%d%c%d)-%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==-24){printf("\n(%d%c%d)*(%d+%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*(c+d)){printf("\n(%d%c%d)/(%d+%d)=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d==24){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c+d==-24){printf("\n(%d%c%d)*%d+%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==24){printf("\n(%d%c%d)*%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d==-24){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b&&(a_b)==24*(c-d)){printf("\n(%d%c%d)/(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==24){printf("\n(%d%c%d)*%d*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c*d==-24){printf("\n(%d%c%d)*%d*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)==24*c*d){printf("\n(%d%c%d)/(%d*%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==24*d){printf("\n(%d%c%d)*%d/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)==-24*c*d){printf("\n(%d%c%d)/(%d*%d)=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*c==-24*d){printf("\n(%d%c%d)*%d/%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c==24*c){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c==24*c){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==24){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)*d==-24){printf("\n(%d%c%d+%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c)==24*d){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(c!=d){temp=c;c=d;d=temp;}
else break;
}
}
}
if(i==3)for(k=0;k<2;k++){a_b=a;ch[i]='/';
if(a_b+(c+d)*b==24*b){printf("\n%d%c%d+%d+%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c+d)*b==-24*b){printf("\n%d%c%d-(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b+(c-d)*b==-24*b){printf("\n%d%c%d+(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==24*b){printf("\n%d%c%d-%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b-(c-d)*b==-24*b){printf("\n%d%c%d-%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c+d)==24*b){printf("\n(%d%c%d)*(%d+%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*b){printf("\n(%d%c%d)/%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)-d*c*b==-24*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c*b==24*b){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
for(j=0;j<2;j++){
if((a_b)*c+d*b==24*b){printf("\n(%d%c%d)*%d+%d=24",a,ch[i],b,c,d);flag++;}
if((a_b)*c-d*b==24*b){printf("\n(%d%c%d)*%d-%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b)*(c-d)==24*b){printf("\n(%d%c%d)*(%d-%d)=24",a,ch[i],b,c,d);flag++;}
if((a_b)+d*c*b==24*c*b){printf("\n(%d%c%d)/%d-%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==24*b){printf("\n(%d%c%d-%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)*d==-24*b){printf("\n(%d%c%d-%d)*%d=-24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)*d==24*b){printf("\n(%d%c%d+%d)*%d=24",a,ch[i],b,c,d);flag++;}
if((a_b+c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if((a_b-c*b)==24*d*b){printf("\n(%d%c%d+%d)/%d=24",a,ch[i],b,c,d);flag++;}
if(a_b*c==24*b*d){printf("\n(%d%c%d*%d*%d=24",a,ch[i],b,c,d);flag++;}
if(c!=d){temp=c;c=d;d=temp;}
else break;
}temp=a;a=b;b=temp;
}
}
if(time==0){temp=b;b=c;c=temp;if(b==c)time++;}
if(time==1){temp=b;b=d;d=temp;if(b==d)time++;}
if(time==2){temp=a;a=c;c=temp;if(a==c)time++;}
if(time==3){temp=a;a=d;d=temp;if(a==d)time++;}
if(time==4){temp=b;b=d;d=temp;if(b==d)time++;}
if(time==5){temp=a;a=c;c=temp;}
time++;
}
return flag;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shaguashenjunt
2010-01-31
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
hdjhjafd
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式