用c 语言写21点游戏,求一c语言程序 :21点游戏代码

2011-06-26 回答

你这个搞错了吧...不是24点吗??怎么出来了21点...估计21点不怎么好凑(虽然道理一样)

这个24点游戏不是很简单写的!!!你确认下是21点还是24点

追问:

确定是21点而不是24点,麻烦你帮帮忙哦

追答:

真正给你写确实有点难度...

我从网上给你找了一个24点的程序(至于改成21点,你只需把有24的地方改成21就好啦...)

程序不是我写的...帮你调试了下,是可以运行的!!!也许不完全符合你的要求,但愿能够帮助你...

#include

using namespace std;

int calcute(int a, int b, char sig);

int calExpress(int a, int b, int c, int d);

char sig[4] = {'+', '-', '*', '/'};

bool flag = true;

int num = 0;

void main()

{

int s[4] ;

cin >> s[0] >> s[1] >> s[2] >> s[3];

for(int i = 0; i < 4; i++)

for(int j =0; j < 4; j++)

for(int k =0; k < 4; k++)

for(int m = 0; m < 4; m++)

if(i!=j && i!=k && i!=m && j!= k && j!=m && k!=m)

if(calExpress(s[i],s[j],s[k],s[m]) == 1)

return;

if(num == 0)

{

cout << "no answer" << endl;

}

}

int calcute(int a, int b, char sig)

{

switch(sig)

{

case '+':

return a+b;

case '-':

return a-b;

case '*':

return a*b;

case '/':

if(a%b!=0)

flag = false;

return a/b;

}

}

int calExpress(int a, int b, int c, int d)

{

int temp1, temp2,temp3;

for(int i = 0; i < 4; i++)

for(int j =0; j < 4; j++)

for(int k =0; k < 4; k++)

{

flag = true;

if(i <=1)

{

if(j <= 1)

{

temp1 = calcute(c,d,sig[k]);

temp2 = calcute(a,b,sig[i]);

temp3 = calcute(temp1,temp2,sig[j]);

if(temp3 == 24 && flag == true)

{

num++;

cout << a << sig[i] << b << sig[j] <

return 1;

}

}

else

{

temp1 = calcute(b, c, sig[j]);

temp2 = calcute(temp1, d, sig[k]);

temp3 = calcute(a, temp2, sig[i]);

if(temp3 == 24&& flag == true)

{

num++;

cout << a << sig[i] << b << sig[j] <

return 1;

}

}

}

else

{

temp1 = calcute(a, b, sig[i]);

if(j <= 1)

{

temp2 = calcute(c, d, sig[k]);

temp3 = calcute(temp1,temp2,sig[j]);

if(temp3 == 24&& flag == true)

{

num++;

cout << a << sig[i] << b << sig[j] <

return 1;

}

}

else

{

temp2 = calcute(temp1, c, sig[j]);

temp3 = calcute(temp2, d, sig[k]);

if(temp3 == 24&& flag == true)

{

num++;

cout << a << sig[i] << b << sig[j] <

return 1;

}

}

}

}

return 0;

}

补充:

我晕,,狂晕...根本没有看清你的题...这个完全和24点两回事...

我再帮你看看........十分不好意思..........

补充:

dcce6285b40f8698379f42ce767fb9e5.png

这个样子行不...累死我了

我的邮箱malc1988@qq.com

给我发邮件,我给你...

给我加分啊.....

追问:

发给我吧谢谢 我再给你加上100分,辛苦了

追问:

你收到我的邮件了没啊,我的邮箱是1453894140@qq.com,发给我谢谢

追答:

我已经给你发了,里面的注释也很全...

追问:

不好意思 那邮箱有点问题。。。没收到   请帮忙发到  87266709@qq.com   谢谢 不好意思哈~~

追答:

我晕...

追问:

真的不好意思我现在才知道我的邮箱有问题,不好意思,浪费你几分钟再发一下,真的很不好意思

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值