C语言游戏---小猫钓鱼

2023-11-06

A和B两个同学玩简单的纸牌游戏,每人手里有n张牌,两人轮流出牌并依次排列在桌面上,每次出掉手里的第1张牌,出牌后如果发现桌面上有跟刚才打出的牌的数字相同的牌,则把从相同的那张牌开始的全部牌按次序放在自己手里的牌的末尾。当一个人手中的牌先出完时,游戏结束,对方获胜。

#include<stdio.h>
#include<string.h>

typedef struct queue{//队列
	 int data[10000];
	 int head;
	 int tail;
}; 

typedef struct stack{//栈
	   int data[10];
	   int top;
};

int main(void)
{ 
     queue q1,q2;//队列 
     stack s;//栈 
     int flag=0,t,book[14];
     
     q1.head=1;q1.tail=1;
     q2.head=1;q2.tail=1;
     s.top=0;
     
     for(int i=1;i<=13;i++)//刚开始没有牌
     { 
           book[i]=0;
	 }
     for(int i=1;i<=6;i++)//读入p1的牌入队
     {
     	   scanf("%d",&q1.data[q1.tail++]);
	 }
	 for(int i=1;i<=6;i++)//读入p2的牌入队
	 { 
	    scanf("%d",&q2.data[q2.tail++]);
	 }
	
	 while(q1.head<q1.tail && q2.head<q2.tail)//当有人没有牌的时候游戏结束
	{
	 
	  t=q1.data[q1.head];//这张牌
	 
	  if(book[t]==0)//桌面是否有
	 {
	 	   q1.head++;
	 	   s.top++;
	 	   s.data[s.top]=t;//入栈
	 	   book[t]=1;//记录牌
	 }
     else
     {
     	   q1.head++;
     	   q1.data[q1.tail]=t;
     	   q1.tail++;
     	   while(s.data[s.top]!=t)
     	   { 
     	      book[s.data[s.top]]=0;//清除桌面牌 
     	      q1.data[q1.tail]=s.data[s.top];//出栈
     	      q1.tail++;
     	      s.top--;
			}
         }
         
	 t=q2.data[q2.head];	//同理对于p2
	 if(book[t]==0)
	  {
	 	   q2.head++;
	 	   s.top++;
	 	   s.data[s.top]=t;
	 	   book[t]=1;
	  }
     else
      {
     	   q2.head++;
     	   q2.data[q2.tail]=t;
     	   q2.tail++;
     	   while(s.data[s.top]!=t)
     	   { 
     	      book[s.data[s.top]]=0; 
     	      q2.data[q2.tail]=s.data[s.top];
     	      q2.tail++;
     	      s.top--;
			}	
	   }
    }
    
    if(q2.head==q2.tail)//判断是否p1win
    {
    	   printf("p1:win");
	}
	else printf("p2:win");
    
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言游戏---小猫钓鱼 的相关文章

随机推荐

  • 【python 1】python 基础

    文章目录 一 格式化输出 1 占位符 2 拼接输出 3 message 输出 4 format 输出 二 input 输入 三 pass break 四 字符串 五 列表 六 元组 七 字典 八 集合 一 格式化输出 1 占位符 s str
  • 文件读写的理论

    为了提高效率 稍微复杂一些的操作系统对文件的读写都是带缓冲的 Linux当然也不例外 所谓缓冲 就是操作系统为最近刚读写的文件内容在内核保留一份副本 以便当再次需要已经缓冲存储在副本中的内容时就不必再临时从设备上读入 而需要写的时候则可以先
  • Jmeter-使用http proxy代理录制脚本

    Jmeter 使用http proxy代理录制脚本 第1步 打卡jmeter工具新增1个线程组 第2步 给线程组添加1个HTTP请求默认值 第3步 设置下HTTP请求默认值第4步 在工作台中新增1个 HTTP代理服务器 第5步 设置HTTP
  • c语言中weak用法,c语言中weak的作用

    c语言中weak的作用 转载参考至 https blog csdn net q251900 在u boot源码中看到 weak关键字 在移植过程中遇到了问题 用例 weak在不同的环境中用法不同 在stm32源码中也比较常见 在u boot
  • BeanCreationException: Error creating bean with name ‘org.springframework.web.servlet.mvc.method.ann

    BeanCreationException Error creating bean with name org springframework web servlet mvc method annotation ExceptionHandl
  • 测试中

    root ubu blockchain2 ll total 44 drwx 5 root root 4096 Aug 4 09 48 drwxr xr x 23 root root 4096 Jul 26 11 26 rw r r 1 ro
  • MVC模式实现学生信息管理

    MVC全名是Model View Controller 是模型 model 视图 view 控制器 controller 的缩写 一种软件设计典范 用一种业务逻辑 数据 界面显示分离的方法组织代码 将业务逻辑聚集到一个部件里面 在改进和个性
  • Markdown表格-换行、合并单元格

    文章目录 1表格中对其 换行处理 1 1 一般我们都会这样用表格如下 1 2 当然这里也可以通过设置 左对齐 右对齐 1 3 实现表格内容换行 2 合并表格 2 1 合并表格行 2 2 合并表格列 2 3 综合实例 1表格中对其 换行处理
  • MyCat配置文件

    1 MyCat 配置文件简介 Mycat的架构其实很好理解 Mycat是代理 Mycat后面就是物理数据库 和 Web 服务器的 Nginx 类似 对于使用者来说 访问的都是Mycat 不会接触到后端的数据库 我们现在做一个主从 读写分离
  • 区块链改革杭州闭门会议——分享链改机遇,探讨价值联动!

    2018年8月19日14点 区块链改革 链改 闭门会暨链改超级节点 杭州 会议在杭州钱江新城华润大厦隆重召开 大会围绕 分享链改机遇 探讨价值联动 为主题 展开系列讨论 基于各界对区块链赋能实体经济的广泛共识 和区块链赋能实体经济场景的逐步
  • python计算距今时间

    计算距今时间 计算一个 ISO 8601 格式的时间字符串距离今天的天数 import datetime 定义时间字符串 time str 2023 08 03T09 30 29 359 08 00 解析时间字符串为datetime对象 d
  • 关于openldap/bdb的一些配置和维护的问题

    一 配置部份在基本配置完成之后 可以在slapd conf设置一些提高安全和效率的选项 cachesize 5000 checkpoint 1024 5 cachesize是ldap在内存中缓存的记录条数 这个缓存是openldap自己维护
  • GMTC分享——当插件化遇到 Android P

    转自 https blog csdn net xinzhou201 article details 80881604 GMTC分享 当插件化遇到 Android P 手机京东技术团队 2018 06 30 举报 前言 Android P 来
  • 用Python写爬虫就很low?你赞同嘛?

    之前换了份工作 不再是单纯的Web开发了 要学习的东西真的挺多的 入职的第1天 就让我入手写个爬虫 只是这个爬虫没有采集几个亿数据量的业务场景 之前换了份工作 不再是单纯的Web开发了 要学习的东西真的挺多的 入职的第1天 就让我入手写个爬
  • 总结flutter玩转之-flutter 调用安卓原生view(使用AndroidView)

    总结flutter玩转之 fluuter 调用安卓原生view 使用AndroidView 1 假设你已经熟悉fluuter 开发熟悉dart 语言 android 原生开发技能 1 在安卓原生项目添加代码 1 创建一个原生view 比如说
  • 什么是MIPI接口

    什么是MIPI接口 摘要 随着客户要求手机摄像头像素越来越高同时要求高的传输速度传统的并口传输越来越受到挑战 提高并口传输的输出时钟是一个办法但会导致系统的EMC设计变得越来困难增加传输 手机摄像头MIPI技术介绍 随着客户要求手机摄像头像
  • Postgresql一行变多行unnest与string_to_array,多行变一行string_agg

    Postgresql一行变多行unnest与string to array 多行变一行string agg 1 源码 创建表 create table tb id int value varchar 30 插入数据 insert into
  • vscode c++ string报错ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“.

    尝试用vscode配值c 环境 配通之后可以hello world了 但是cout string类型的变量时总是闪退 看了下调试控制台上报错 ERROR Unable to start debugging Unexpected GDB ou
  • BI开发步骤

    BI开发如何快速接入 在数据中台项目中 我们会频繁接触BI工具并需要进行开发接入 BI工具种类繁多 因此如果能快速学习完成开发 则能大大提升效率 1 BI工具通用的开发步骤 数据源接入 数据集配置 分为常规数据集和SQL数据集 仪表盘配置
  • C语言游戏---小猫钓鱼

    A和B两个同学玩简单的纸牌游戏 每人手里有n张牌 两人轮流出牌并依次排列在桌面上 每次出掉手里的第1张牌 出牌后如果发现桌面上有跟刚才打出的牌的数字相同的牌 则把从相同的那张牌开始的全部牌按次序放在自己手里的牌的末尾 当一个人手中的牌先出完