关于C语言的猜数字和井字棋小游戏

 本文介绍关于C语言的猜数字和井字棋的小游戏,以及它们的实现思路

 猜数字:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
void main()
{
    int answer;
    srand((unsigned int)time(NULL));
    int riddle = rand() % 100 + 1;
    int count = 1;
    bool flag = true;
    printf("请输入一个1~100的数字:\n");
    scanf("%d", &answer);
    while (flag)
    {
        if (answer > riddle)
        {
            printf("姐姐,你猜的数字太大了,再来一次!\n");
            scanf("%d", &answer);
            count++;
        }
        else if (answer < riddle)
        {
            printf("姐姐,你猜的数字太小了,再来一次!\n");
            scanf("%d", &answer);
            count++;
        }
        else
        {
            printf("姐姐,恭喜你,猜对了!\n");
            printf("你一共花了%d次猜对", count);
            flag = false;
        }
    }
    return;
}

井字棋: 

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

#define SIZE 3

/**
 * 打印游戏板
 * 
 * @param board 一个二维字符数组,表示游戏板的状态
 * 
 * 此函数通过遍历二维数组来打印游戏板的每个位置的状态
 * 使用竖线 '|' 和横线 '-' 来划分游戏板的各个位置,以视觉上区分不同的游戏区域
 */
void printBoard(char board[SIZE][SIZE]) {
    // 遍历游戏板的每一行
    for (int i = 0; i < SIZE; i++) {
        // 遍历游戏板的每一列
        for (int j = 0; j < SIZE; j++) {
            // 打印当前位置的状态
            printf("%c", board[i][j]);
            // 如果不是最后一列,打印竖线分隔符
            if (j < SIZE - 1) printf("|");
        }
        // 换行,完成一行的打印
        printf("\n");
        // 如果不是最后一行,打印横线分隔符
        if (i < SIZE - 1) printf("-----\n");
    }
}

int checkWin(char board[SIZE][SIZE], char player) {
    for (int i = 0; i < SIZE; i++) {
        // 检查每一行是否有三个相同的玩家标记
        if (board[i][0] == player && board[i][1] == player && board[i][2] == player) return 1;
        // 检查每一列是否有三个相同的玩家标记
        if (board[0][i] == player && board[1][i] == player && board[2][i] == player) return 1;
    }
    // 检查对角线是否有三个相同的玩家标记
    if (board[0][0] == player && board[1][1] == player && board[2][2] == player) return 1;
    if (board[0][2] == player && board[1][1] == player && board[2][0] == player) return 1;
    return 0;
}

/**
 * 检查游戏板是否已满。
 * 
 * @param board 游戏板,一个二维字符数组。
 * @return 如果游戏板已满(即没有空位),返回1;否则返回0。
 *
 * 此函数通过遍历游戏板上的每个位置来确定游戏板是否已满。
 * 如果找到任何一个位置为空(' '),则表明游戏板未满,返回0。
 * 如果所有位置都已被占用,返回1,表示游戏板已满。
 */
int isFull(char board[SIZE][SIZE]) {
    // 遍历游戏板的每一行和每一列
    for (int i = 0; i < SIZE; i++) {
        for (int j = 0; j < SIZE; j++) {
            // 检查当前位置是否为空
            if (board[i][j] == ' ') return 0;
        }
    }
    // 如果没有找到空位,返回1
    return 1;
}

int main() {
    // 初始化空的井字棋盘
    char board[SIZE][SIZE] = { {' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '} };
    // 当前玩家,游戏开始时为玩家X
    char currentPlayer = 'X';
    // 用于存储玩家输入的行和列
    int row, col;

    // 游戏开始打印信息
    printf("井字棋游戏\n");
    printf("玩家1: X\n玩家2: O\n");

    // 游戏主循环
    while (1) {
        // 打印当前棋盘状态
        printBoard(board);
        // 提示当前玩家输入移动
        printf("玩家 %c, 请输入您的移动 (行和列, 1-3): ", currentPlayer);
        // 接收玩家输入
        if (scanf("%d %d", &row, &col) != 2) {
            printf("读取输入错误。请重试。\n");
            continue;
        }

        // 验证玩家输入是否有效
        if (row < 1 || row > SIZE || col < 1 || col > SIZE || board[row-1][col-1] != ' ') {
            printf("无效的移动。请重试。\n");
            continue;
        }

        // 在棋盘上标记玩家的移动
        board[row-1][col-1] = currentPlayer;

        // 检查是否有玩家获胜
        if (checkWin(board, currentPlayer)) {
            printBoard(board);
            printf("玩家 %c 获胜!\n", currentPlayer);
            break;
        }

        // 检查棋盘是否已满,即平局情况
        if (isFull(board)) {
            printBoard(board);
            printf("游戏平局!\n");
            break;
        }

        // 切换下一个玩家
        currentPlayer = (currentPlayer == 'X') ? 'O' : 'X';
    }

    return 0;
}
标题SpringBoot基于Web的图书借阅管理信息系统设计与实现AI更换标题第1章引言介绍图书借阅管理信息系统的研究背景、意义、现状以及论文的研究方法创新点。1.1研究背景与意义分析当前图书借阅管理的需求SpringBoot技术的应用背景。1.2国内外研究现状概述国内外在图书借阅管理信息系统方面的研究进展。1.3研究方法与创新点介绍本文采用的研究方法系统设计的创新之处。第2章相关理论技术阐述SpringBoot框架、Web技术数据库相关理论。2.1SpringBoot框架概述介绍SpringBoot框架的基本概念、特点核心组件。2.2Web技术基础概述Web技术的发展历程、基本原理关键技术。2.3数据库技术应用讨论数据库在图书借阅管理信息系统中的作用选型依据。第3章系统需求分析对图书借阅管理信息系统的功能需求、非功能需求进行详细分析。3.1功能需求分析列举系统应具备的各项功能,如用户登录、图书查询、借阅管理等。3.2非功能需求分析阐述系统应满足的性能、安全性、易用性等方面的要求。第4章系统设计详细介绍图书借阅管理信息系统的设计方案实现过程。4.1系统架构设计给出系统的整体架构,包括前后端分离、数据库设计等关键部分。4.2功能模块设计具体阐述各个功能模块的设计思路实现方法,如用户管理模块、图书管理模块等。4.3数据库设计详细介绍数据库的设计过程,包括表结构、字段类型、索引等关键信息。第5章系统实现与测试对图书借阅管理信息系统进行编码实现,并进行详细的测试验证。5.1系统实现介绍系统的具体实现过程,包括关键代码片段、技术难点解决方法等。5.2系统测试给出系统的测试方案、测试用例测试结果,验证系统的正确性稳定性。第6章结论与展望总结本文的研究成果,指出存在的问题未来的研究方向。6.1研究结论概括性地总结本文的研究内容取得的成果。6.2展望对图书借阅管理
摘 要 基于SpringBoot的电影院售票系统为用户提供了便捷的在线购票体验,覆盖了从注册登录到观影后的评价反馈等各个环节。用户能够通过系统快速浏览搜索电影信息,包括正在热映及即将上映的作品,并利用选座功能选择心仪的座位进行预订。系统支持多种支付方式如微信、支付宝以及银行卡支付,同时提供积分兑换优惠券领取等功能,增强了用户的购票体验。个人中心允许用户管理订单、收藏喜爱的影片以及查看使用优惠券,极大地提升了使用的便利性互动性。客服聊天功能则确保用户在遇到问题时可以即时获得帮助。 后台管理人员,系统同样提供了全面而细致的管理工具来维护日常运营。管理员可以通过后台首页直观地查看销售额统计图,了解票房情况并据此调整策略。电影信息管理模块支持新增、删除及修改电影资料,确保信息的准确与及时更新。用户管理功能使得管理员可以方便地处理用户账号,包括导入导出数据以供分析。订单管理模块简化了对不同状态订单的处理流程,提高了工作效率。优惠券管理弹窗提醒管理功能有助于策划促销活动,吸引更多观众。通过这样的集成化平台,SpringBoot的电影院售票系统不仅优化了用户的购票体验,也加强了影院内部的管理能力,促进了业务的发展服务质量的提升。 关键词:电影院售票系统;SpringBoot框架;Java技术
内容概要:本文介绍了2025年中国网络安全的十大创新方向,涵盖可信数据空间、AI赋能数据安全、ADR(应用检测与响应)、供应链安全、深度伪造检测、大模型安全评估、合规管理与安全运营深度融合、AI应用防火墙、安全运营智能体、安全威胁检测智能体等。每个创新方向不仅提供了推荐的落地方案典型厂商,还详细阐述了其核心能力、应用场景、关键挑战及其用户价值。文中特别强调了AI技术在网络安全领域的广泛应用,如AI赋能数据安全、智能体驱动的安全运营等,旨在应对日益复杂的网络威胁,提升企业政府机构的安全防护能力。 适合人群:从事网络安全、信息技术、数据管理等相关工作的专业人士,尤其是负责企业信息安全、技术架构设计、合规管理的中高层管理人员技术人员。 使用场景及目标:①帮助企业理解应对最新的网络安全威胁技术趋势;②指导企业选择合适的网络安全产品服务,提升整体安全防护水平;③协助企业构建完善自身的网络安全管理体系,确保合规运营;④为技术研发人员提供参考,推动技术创新发展。 其他说明:文章内容详尽,涉及多个技术领域应用场景,建议读者根据自身需求重点关注相关章节,并结合实际情况进行深入研究实践。文中提到的多个技术解决方案已在实际应用中得到了验证,具有较高的参考价值。此外,随着技术的不断发展,文中提及的部分技术方案可能会有所更新或改进,因此建议读者保持关注最新的行业动态技术进展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值