首页 > 其他分享 >C语言实现一个24点游戏

C语言实现一个24点游戏

时间:2024-09-12 23:25:05浏览次数:3  
标签:24 tmp return 游戏 int count C语言 cards TRUE

  1. 定义扑克牌的值,其中A=1或14(在这个上下文中我们通常认为A=1),J=11,Q=12,K=13。
  2. 随机选择4张牌。
  3. 使用递归算法来尝试所有可能的组合来达到24点。
  4. 输出结果或提示玩家输入表达式。

下面是一个简化版的示例代码,展示如何随机选取四张牌并检查是否能通过运算得到24。注意,这里的代码不包含用户交互部分,仅作为一个基础框架来解释如何实现。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TRUE 1
#define FALSE 0

int calculate(int a, int b, char op) {
    switch(op) {
        case '+': return a + b;
        case '-': return a - b;
        case '*': return a * b;
        case '/':
            if(b != 0) return a / b;
            return 0; // Division by zero is not allowed.
    }
    return 0;
}

int check24(int cards[], int n, int target, int result = 0, int count = 0) {
    if (count == n) {
        return result == target ? TRUE : FALSE;
    }
    
    for (int i = count; i < n; ++i) {
        int tmp = check24(cards, n, target, calculate(result, cards[i], '+'), count + 1);
        if (tmp) return TRUE;
        tmp = check24(cards, n, target, calculate(result, cards[i], '-'), count + 1);
        if (tmp) return TRUE;
        tmp = check24(cards, n, target, calculate(result, cards[i], '*'), count + 1);
        if (tmp) return TRUE;
        tmp = check24(cards, n, target, calculate(result, cards[i], '/'), count + 1);
        if (tmp && cards[i] != 0) return TRUE;
    }
    return FALSE;
}

int main() {
    int cards[4];
    int faces[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
    srand((unsigned int)time(NULL));
    
    for (int i = 0; i < 4; i++) {
        cards[i] = faces[rand() % 13];
        printf("Card %d: %d\n", i + 1, cards[i]);
    }
    
    if (check24(cards, 4, 24)) {
        printf("It is possible to get 24.\n");
    } else {
        printf("It is not possible to get 24.\n");
    }
    
    return 0;
}

标签:24,tmp,return,游戏,int,count,C语言,cards,TRUE
From: https://blog.csdn.net/MAMA6681/article/details/142188147

相关文章

  • 2024/9/12
    数据库连接学习记录今天,我继续学习了关于数据库连接的知识,这对于后续的项目开发至关重要。数据库连接的基本过程包括加载数据库驱动、建立连接、执行SQL操作和关闭连接。通过这四个步骤,应用程序才能与数据库进行有效的交互。我首先了解了不同数据库的连接方式。例如,使用Python的......
  • C语言数据类型、变量及数据类型的长度、取值范围
    文章目录一、数据类型介绍1.字符型2.整型3.浮点型4.布尔类型二、变量1.变量的创建2.变量的分类三、数据类型的长度(字节)1.sizeof操作符2.各种数据类型的长度3.sizeof中表达式不计算四、各种类型的取值范围1.signed和unsigned2.数据类型的取值范围五、整型提升练习1......
  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4894软件选装纯净特别版9.12
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4894.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.48......
  • 51单片机-AT24C02(IIC总线介绍及其时序编写步骤)-第一节(下一节实战)
    IIC开始通信(6大步)我以前的文章也有对基本常用的通信协议讲解,如SPIUARTIICRS232RS485CAN的讲解,可前往主页查询,(2024.9.12,晚上20:53,将AT24C02存储芯片,掉电不丢失,容量256字节)......
  • 最新24年计算机三级网络技术速过指南之校园网部署的解题方法与思路,包拿分教程
            多了不说少了不唠,直接进入主题。校园网分析这种体型,共15分,五个空,涉及到的考点有十余个,还有两道天选题。目录一、常规题型做题方法:    1.看题干提取要点    2.看图提取要点    3.看空的上下左右提取要点           ......
  • 网络流24题(8/24 待更新 码风良好可做代码参考)
    P2764最小路径覆盖问题建模方式拆所有点为入点和出点两部分,创建超级源点和超级汇点。连边:源点到所有入点边权值为1表示,每个点只进入一个流量,出点到汇点边权值也为1,表示出度也为1。然后对图求最大流。最小路径覆盖=总点数-最大流代码实现lln,m;structedge{  l......
  • [20240911]查看超长视图的定义2.txt
    [20240911]查看超长视图的定义2.txt--//昨天看了链接:https://www.anbob.com/archives/8295.html,提供了另外的方式获得超长定义试图的长文本。--//我重复验证看看.1.环境:SYS@book>@ver2==============================PORT_STRING                  :x86_6......
  • 2024.9.12 CF1783 VP
    A:先将\(a\)降序排序,此时只有位置\(2\)有可能不满足条件。找到最小的\(i\ge2\)使得\(a_1\neqa_i\)(不存在则无解),然后交换\(a_2,a_i\),即为一个解。点击查看代码#include<bits/stdc++.h>#defineintlonglong#definepsbkpush_back#definefstfirst#definescdse......
  • 汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
    汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推①得物【八大职类】技术、供应链、产品、运营、设计、职能、商品研究、风控等大类【内推码】RTHEA59【一键内推】https://poizon.jobs.feishu.cn/s/iMo1482J②汤臣倍健【招聘岗位】营销类、市场......
  • [20240912]记录使用tnsping遇到的问题.txt
    [20240912]记录使用tnsping遇到的问题.txt--//tnsping用来检测数据库是否连接存在许多局限性,记录自己在使用tnsping遇到的问题.1.环境:--//关闭数据库开启监听.SYS@book>shutdownimmediate;Databaseclosed.Databasedismounted.ORACLEinstanceshutdown.--//服务端监听配置......