1.实验目的

a.24点游戏是经典的纸牌益智游戏,请完成它。

2.题目描述

从扑克中每次取出4张牌。使用加减乘除,第一个能得出24者为赢。(其中,J代表11,Q代表12,K代表13,A代表10),按照要求编程解决24点游戏。

随机生成4个代表扑克牌牌面的数字字母,程序自动列出所有可能算出24的表达式,用擅长的语言(C/C++/Java或其他均可)实现程序解决问题。

1.程序风格良好(使用自定义注释模板)

2.列出表达式无重复。

3.需求分析

随机产生4个1-13的数字,然后生成表达式,表达式包括:

  1. 四个1-13的数字
  2. 加减乘除运算符
  3. 成对出现的括号

这些表达式必须是合法的,什么是合法的表达式?

举个例子,如(2+10)*(6-4)就是个合法的、并且计算结果是24的表达式,如2+4()*38+就是非法的表达式,(2+8)/5*2是个合法的表达式但计算结果不是24。

然后根据运算法则计算这个表达式是否等于24。

4.算法设计

4.1随机函数生成四个随机数

使用C语言中的随机函数rand()%10*1.0,生成四个符合要求的随机数。

4.1.1算法实现

A=rand()%10*1.0;

B=rand()%10*1.0;

C=rand()%10*1.0;

D=rand()%10*1.0;

 

4.2 对四个数进行全排列

     使用递归方法对随机数进行全排列

 

4.3对‘+’、‘-’、‘×’、‘÷’进行全排列

对4种运算符的全排列和数字的全排列几乎一样,但是因为是4个数字进行计算,所以只会用到3个运算符,所以在后期处理上只需要将最后一个运算符删除即可

4.4 通过拼凑的方式构造表达式

对生成的数字全排列列表和预算符全排列列表只需要交替的插入即可构造一个只有数字和“+、-、×、÷”的运算表达式,但这样构造的表达式不够多样,存在很多不满足运算结果等于24的情况,所以应当引入括号运算,保证运算的多样性。

4.5计算表达式,将满足运算结果为24的表达式打印出来

if(c[i][j][k]==24.0)

{if(precede(d[i],d[j])){

printf("(%.0f%c%.0f)%c%.0f%c%.0f",A,d[i],B,d[j],C,d[k],D);

printf("\n");}

else if(precede(d[j],d[k])){

printf("(%.0f%c%.0f%c%.0f)%c%.0f",A,d[i],B,d[j],C,d[k],D);

printf("\n");}

else{

printf("%.0f%c%.0f%c%.0f%c%.0f",A,d[i],B,d[j],C,d[k],D);

printf("\n");}5.调试及测试

4.6流程图及设计图

5.算法实现

5.1调试界面

 

5.2数据测试

 

 

5.3利用MFC制作24点游戏

   

游戏正常运行截图

输入大于13的数字时游戏报错

MFC风格原件下载地址:

24点游戏——C语言纯代码及MFC风格相关推荐

  1. 24点游戏c语言程序代码,C语言实现24点游戏源代码

    本文实例为大家分享了C语言实现24点游戏的具体代码,供大家参考,具体内容如下 将算法实现改成C语言,并可在linux服务器上运行.同时修改为可显示所有结果. 注:如果传参重复,如4,4,7,7这样,会 ...

  2. 一个完整的c语言的单链表代码,单链表完整C语言纯代码.docx

    单链表完整C语言纯代码单链表完整C语言纯代码 带头结点的单链表 PAGE \* MERGEFORMAT 4 单链表 带头结点 #include #include /* 带头结点的单链表的操作 在该链表 ...

  3. 24点游戏c语言链表做法,C语言实现24点程序(示例代码)

    一.简介 本程序的思想和算法来自于C语言教材后的实训项目,程序通过用户输入四个整数计算出能够通过加减乘除得到数字24的所有表达式,程序的设计有别于一般通过穷举实现的方式,效率得到提高.算法介绍如下: ...

  4. 24点游戏c语言去除重复,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

  5. 24点游戏c语言源代码6,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

  6. c语言简单的24点游戏,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

  7. 用c语言编写24点游戏,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

  8. 最简单的24点游戏c语言,C语言解24点游戏程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 前几天在微博上看到24点的游戏,6 6 6 10.算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的 ...

  9. C#打字游戏案例(纯代码实现),新手入门必备!

    文章目录 一.需求分析 二.代码实现 三.运行结果 一.需求分析 1.界面设计 布局 需要哪些内容控件 容器的概念 集合的概念 2.开始游戏 字母的生成 26个字母 ASCII码值 字母的载体 控件 ...

最新文章

  1. MySql5.7环境搭建
  2. MyBatis查询两个字段,返回Map,一个字段作为key,一个字段作为value的实现
  3. python 网站文件下载-python实现下载文件的三种方法
  4. POJ 3420 Quad Tiling
  5. 白瑜庆:知乎基于Kubernetes的kafka平台的设计和实现
  6. java 将一个非空文件夹拷贝到另一个地方
  7. 十 web爬虫讲解2—Scrapy框架爬虫—Scrapy安装—Scrapy指令
  8. jps后发现DataNode没有启动
  9. Go程序:变量声明、赋值与输出
  10. Part4:Citrix 3D 技术Step by Step配置指导手册
  11. ASP.NET画图全攻略(下)
  12. mybatis比mysql安全吗_MyBatis 和 SQL 注入的恩恩怨怨
  13. 微信云托管云调用使用指南
  14. 接收灵敏度和等效噪声带宽(ENBW)
  15. 小白也能懂的 Python 入门指南(1)——Python 的前世今生
  16. [云原生专题-1]:总体-云原生初步探究,什么是云原生,云原生的基本特性
  17. id门禁卡复制到手机_门禁卡复制到手机苹果
  18. 按ASC码对字符串排序
  19. 5G工业级路由器的常见接口功能解析
  20. 什么叫系统后门?后门与漏洞有什么区别?

热门文章

  1. 教育部重磅:179所高校新增人工智能本科专业!智能制造等九大专业井喷
  2. 《信号与系统》笔记·第一章:信号与系统
  3. 杂项-镜像:镜像(一种文件类型)
  4. 系统死机重启调试分析
  5. 直角坐标系中向量与三个坐标轴的夹角问题
  6. Linux——互联网搜索引擎nbtscan是一个扫描WINDOWS网络NetBIOS信息的小工具
  7. 助眠好物排行榜,有了这些就不怕睡不着了
  8. Java面向对象思想、类的定义、对象的使用、对象内存图、成员变量和局部变量的区别、封装、private关键字、this关键字、构造方法、JavaBean-day06
  9. LeetCode刷题笔记-逃脱阻碍者
  10. http://www.ibm.com/developerworks/cn/linux/l-ro...