C语言基础-猜拳问题

2023-05-16

题目描述

石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样, 则不分胜负。
一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头布-石头剪刀-石头布石头…,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?
输入
输入包含三行。
第一行包含三个整数: N, NA, NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。0 <
N,NA,NB < 100。
第二行包含NA个整数,表示小A出拳的规律。
第三行包含NB个整数,表示小B出拳的规律。
其中,0表示“石头", 2表示"剪刀”,5表示"布”。相邻两个整数之间用单个空格隔开。
输出
输出一行,如果小A赢的轮数多,输出A;如果小B赢的轮数多,输出B;如果两人打平,输出draw.

样例输入

10 3 4
0 2 5
0 5 0 2

样例输出

A
A:0 2 5 0 2 5 0 2 5 0
B:0 5 0 2 0 5 0 2 0 5
A赢了4轮,B赢了2轮,双方打平4

代码实现(做法一)

#include "stdio.h"

int main(){
	int N,NA,NB;//局数、AB的周期 
	int ACnt=0,BCnt=0;//A、B赢的局数 
	printf("请输入局数以及A、B的周期:");
	scanf("%d%d%d",&N,&NA,&NB);

	int A[999],B[999];
	printf("请输入A的出拳规律:");
	for(int i=1;i<=NA;i++){
		scanf("%d",&A[i]);//利用数组存放A 
	}

	printf("请输入B的出拳规律:");
	
	for(int i=1;i<=NB;i++){
		scanf("%d",&B[i]);//利用数组存放B 
	}


	for(int i=1;i<=N;i++){
		if(i>NA)
			A[i]=A[i-(i-1)/NA*NA]; //循环A数组的内容 
		if(i>NB)
			B[i]=B[i-(i-1)/NB*NB]; //循环B数组的内容  
		
		//猜拳结果	
		if((A[i]==0&&B[i]==2)||(A[i]==2&&B[i]==5)||(A[i]==5&&B[i]==0)){
			ACnt++;	
		}
		else if ((B[i]==0&&A[i]==2)||(B[i]==2&&A[i]==5)||(B[i]==5&&A[i]==0)){
			BCnt++;	
		}

	}
	if(ACnt>BCnt){
		printf("A\n");
	}
	else if(ACnt<BCnt){
		printf("B\n");
	}
	else{
		printf("draw\n");
	}
	printf("A:");
	for(int i=1;i<=N;i++){
		printf("%d ",A[i]);
	}
	printf("\nB:");
	for(int i=1;i<=N;i++){
		printf("%d ",B[i]);
	}
	printf("\nA赢了%d轮,B赢了%d轮,双方打平%d轮",ACnt,BCnt,N-ACnt-BCnt);
	
	return 0;
}

输出结果
猜拳问题1
代码实现(做法二)

#include "stdio.h"

//1为胜利 0为平局 -1是失败 
int checkWin(int q1,int q2){
	
	if(q1==q2)
		return 0;
	
	if(q1==0){
		if(q2==2)	return 1;
		if(q2==5) 	return -1;
	}
	
	if(q1==2){
		if(q2==5)	return 1;
		if(q2==0) 	return -1;
	}
	
	if(q1==5){
		if(q2==0)	return 1;
		if(q2==2) 	return -1;
	}
}

int main(){
	
	int n,na,nb;
	int awin=0,bwin=0;//A、B胜利的局数 
	int arr_a[100],arr_b[100];//存储出拳周期,最后出拳周期是100组
	
	scanf("%d%d%d",&n,&na,&nb);
	
	//录入小A的出拳周期 
	for(int i=0;i<na;i++){
		scanf("%d",&arr_a[i]);
	} 
	
	//录入小B的出拳周期 
	for(int i=0;i<nb;i++){
		scanf("%d",&arr_b[i]);
	} 
	
	
	int idx_a=0,idx_b=0;//记录小A和小B的出拳的位置 
	
	for(int i=1;i<=n;i++){
		//比较AB的出拳 
		int result = checkWin(arr_a[idx_a],arr_b[idx_b]);
		if(result==1)	
			awin++;
		else if(result==-1)
			bwin++;
		printf("a %d vs b %d %d	[%d %d]\n",arr_a[idx_a],arr_b[idx_b],result,awin,bwin);
		//检测周期是否到达,如果到达则重头开始 
		idx_a++;
		idx_b++;
		if(idx_a==na)	idx_a=0;
		if(idx_b==nb)	idx_b=0;
	}
	
	if(awin>bwin){
		printf("A\n");
	}
	else if(awin<bwin){
		printf("B\n");
	}
	else{
		printf("draw\n");
	}
	return 0;
} 

输出结果
猜拳问题2

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

C语言基础-猜拳问题 的相关文章

  • 如何实现广告精准投放?一文获得新思路

    随着互联网人口红利的持续衰减 xff0c 互联网用户数量的增长速度越来越慢 市场进入存量 xff0c 用户们对产品质量要求越来越高 面对这样的市场阶段 xff0c APP开发者们做好广告精准投放是很有必要的 精准地广告投放在减少广告预算浪费
  • 激励视频广告——移动应用的财富密钥

    如何良好地平衡用户体验和用户增长 是广告行业的持久命题 xff0c 上网搜索 激励视频广告 你会发现类似的问题层出不穷 xff1a 请问什么是激励视频广告 xff1f 谁能麻烦介绍一下吗 xff1f 激励视频广告哪家做的好 xff1f 跪求
  • 设计模式详解:模式汇总与索引清单

    从本篇开始 xff0c 和您一起进入设计模式的世界 之前用C 做微信微信公众号开发系列文章 xff0c 更多的是原生模式 xff0c 帮助猿友们理解业务流程和基本实现方法 xff0c 但是那些类的实现仍然是用面向过程的思维方式 xff0c
  • 如何稳步实现互联网流量变现?

    我突然想起了自己刚做开发的时候 xff0c 那会还是菜鸟的我为了快速获取流量 最大程度的变现 xff0c 基本上不会考虑所谓的用户体验 xff0c 满脑子都是怎么引流 怎么变现 xff0c 所以常常引起用户反感 xff0c 严重折损了用户体
  • 一文获悉互动广告的投放攻略

    一直以来 xff0c 顶着 第四代互联网广告 头衔的 互动广告 通过互动 交流等方式进行双向传播 xff0c 一改以往传统广告的单向线性传播 xff0c 与此同时 xff0c 用户也从被动的观看者转变为主动的参与者 xff0c 直观地体验产
  • 穿山甲成长中心——人能尽其才则百事兴

    对于一众APP开发者来说 xff0c 要想在激烈的市场竞争中突出重围 xff0c 得到用户的青睐 xff0c 往往要面临重重困难 缺乏广告资源 xff0c 流量变现困难等着问题都使得开发者在刚刚进入市场时没有机会展现自己从而停滞不前 每一个
  • 广告精准投放的新出路为何?

    众所周知 xff0c 当前广告行业呈现普遍性的跨媒体投放 xff0c 测试成本 管理成本较高 xff0c 存在信息孤岛等情况 xff0c 一众广告主们通过数据分析优化投放的难度较大 在各类引擎中搜索 广告精准投放 xff0c 诸如 如何以更
  • 互联网流量变现出路为何?一文浅析

    国庆小长假在各大广告主和开发者们眼里就是一座巨大的流量富矿 xff0c 以国庆为主题推的广告和软件层出不穷 我突然想起了我自己刚做开发的时候 xff0c 那会还是菜鸟的我为了快速获取流量 最大程度的变现 xff0c 基本上不会考虑所谓的用户
  • MyBatisPlus 入门学习笔记(版本:3.4.3)

    文章目录 学习辅助资料 MyBatisPlus概述1 MyBatisPlus是什么2 特性 快速开始1 创建数据库 96 mybatis plus 96 2 导入相关依赖3 数据源配置3 快速开始3 1 User实体类编写3 2 mappe
  • Shell自动化脚本学习

    目录 xff08 1 6 xff09 Linux Shell脚本的自动化编程之shell xff1a 命令排序 xff08 1 7 xff09 Linux Shell脚本的自动化编程之shell xff1a 通配符 xff08 2 1 xf
  • ROS创建工作空间及功能包流程总结整理(python)

    ROS创建工作空间及功能包流程总结整理 xff08 python xff09 参考资料 xff1a B站赵虚左 xff1a https www bilibili com video BV1Ci4y1L7ZZ p 61 19 amp vd s
  • 中序计算式的计算器模型C语言实现

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 设计模式详解:面向对象设计的七大原则

    单一职责原则 xff1a 一个对象应该只包含单一的职责 xff0c 并且该职责被完整地封装在一个类中 Single Responsibility Principle SRP Every object should have a single
  • 排序算法——猴子排序

    猴子排序 让一群猴子在打印机前昼夜不停地敲打键盘 xff0c 最终有可能能输入一部莎士比亚作品集 尽管概论微乎其微 同理 xff0c 把一堆扑克牌扔到天上 xff0c 等它们落下来的时候有概率会刚刚好从小到大排成一列 现在有一个无序的数组
  • ubuntu下firefox使用HTML 5播放器看B站

    ubuntu下FireFox使用HTML 5播放器看B站 firefox使用flash是真的难顶 xff0c 一直闪白 发现bilibili其实可以使用html 5播放器 使用 span class token function sudo
  • Ubuntu下将rm命令替换为trash命令

    Ubuntu下将rm命令替换为trash命令 rm命令是一个很可怕的命令 xff0c 因为它不会给你后悔的机会 xff0c 删了就是删了 xff0c 再也找不回来了 xff08 据说能在lost 43 found里面恢复 xff0c 但是操
  • 正则表达式_排除特定字符/字符串

    正则表达式 排除特定字符 字符串 使用场景 xff1a 使用git add A指令提交一个文件夹中所有的代码文件 xff0c 忽略所有的可执行文件 抽象化 匹配一些字符串 xff0c 找出其中不含后缀 xff0c 即 的字符串 理解 排除特
  • 什么是操作系统?操作系统的定义、功能、特性

    什么是操作系统 xff1f 操作系统的定义 功能 特性 什么是操作系统 xff1f 首先 xff0c 计算机的资源可以分为硬件资源和软件资源 CPU 存储设备 各种类型的输入输出设备与外设等 xff0c 共同构成计算机的硬件资源 各种程序
  • 计算机网络第六课

    计算机网络第六课 奈式准则未考虑噪声 噪声 xff1a 模拟信号 gt 数字信号转换 信道复用技术 xff08 续 xff09 在单一物理通信线路上 xff0c 传输若干个独立的信号 三种信道复用技术 xff1a FDMTDMWDM TDM
  • libc_hidden_def、libc_hidden_weak、libc_hidden_proto

    libc hidden def libc hidden weak libc hidden proto 在阅读glibc源码的时候 xff0c 遇见了几个没见过的宏 xff0c 几乎所有的函数都会使用这几个宏 xff1a libc hidde

随机推荐

  • GLIBC源码——putchar

    GLIBC源码 putchar GLIBC源码 从我认为最简单的putchar开始 putchar放在putchar c中 xff0c 而putchar c放在libio文件夹里 加上注释 xff0c 一共只有36行 span class
  • 【汇编】正确使用IDIV指令

    汇编 正确使用IDIV指令 div为无符号除法 xff0c idiv为有符号除法 idiv进行的是128 64位除法 xff0c 即被除数为128位 除数为64位 64位操作系统中寄存器大小当然只有64位 xff0c 因此 xff0c id
  • 【acwj】04,An Actual Compiler 一个真正的编译器

    搬运自https github com DoctorWkt acwj xff0c 一个介绍如何使用C语言编写一个可自举的类C语言编译器的说明 进行了粗略的翻译 acwj 04 xff0c An Actual Compiler 一个真正的编译
  • 设计模式详解:工厂方法模式

    今天我们来看一下使用频率非常高的工厂方法模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 工厂方法模式 xff1a 定义一个用于创建对象的接口 xff0c 但是 让子类决定将哪一个类实例化 工厂方法模
  • 【acwj】05,Statements 实现“Statements”

    搬运自https github com DoctorWkt acwj xff0c 一个介绍如何使用C语言编写一个可自举的类C语言编译器的说明 进行了粗略的翻译 acwj 05 xff0c Statements 实现 Statements I
  • diff命令实现

    diff命令实现 diff是类UNIX系统下的一个重要的系统工具 xff0c 用于比较两个文本文件的差异 它有三种输出格式 先给大家看看两个用于比对的文件原文 file1 a e b a g h b g g file2 b c d g e
  • verilog 常见位宽问题集合

    verilog 常见的位宽问题集合 1 位宽不等 wire b 31 0 assign b 61 5 39 b0 这种错误常见于赋值操作中 2 保留最低位 wire b assign b 61 32 39 h5 此时因为b缺省定义为1位长度
  • glibc源码阅读

    FBI warning 本文仅仅是试图以二进制选手的方式来理解mallo c中所使用的堆机制 xff0c 不会对具体操作以及堆块结构作过多叙述 xff0c 敬请谅解 水平欠佳 xff0c 有问题也欢迎留言指出 先解释一些常用的宏与常量 变量
  • github copilot插件安装

    首先是github copilot的官网地址 xff1a https copilot github com 现在要使用copilot首先要先通过申请才可以使用 xff0c 点击 Sign up 登录 xff0c 这里最好已经有github的
  • 操作系统第一章知识点小结

    第一章 操作系统概述 1 1操作系统的概念 xff0c 功能和目标 资源管理者 xff08 接下来的4给章节就是对这四个功能的详细学习 xff09 处理机处理 xff1a 处理机管理因为是为进程分配处理机资源 xff0c 也称为进程管理 存
  • SerDes基础知识

    SerDes是什么 SerDes是Serializer Deserializer 的缩写 xff0c 即串行器和解串器 xff0c 顾名思义是一种将并行数据转换成串行数据发送 xff0c 将接收的串行数据转换成并行数据的 器件 对于FPGA
  • 安装Pycharm

    文章目录 Ubuntu使用pycharm解压安装使用pycharmwindows 使用Pycharmpip install cryptography 报错 Ubuntu使用pycharm 官网地址 这里以Ubuntu1604 LTS 下载p
  • 找完数(用数组实现)

    找完数 所谓完数就是该数恰好等于除自身外的因子之和 例如 xff1a 6 61 1 43 2 43 3 xff0c 其中1 2 3为6的因子 本题要求编写程序 xff0c 找出任意两正整数m和n之间的所有完数 输入格式 xff1a 输入在一
  • Ubuntu系统使用图形化界面来创建一个用户

  • 设计模式详解:抽象工厂模式

    今天我们来看一下另一个使用频率非常高的抽象工厂模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 抽象工厂模式 xff1a 提供一个 创建一系列相关或相互依赖对象的接口 xff0c 而无须指定它们具体的
  • Vmmem进程(WSL)内存资源过高

    本文章向大家介绍Docker Vmmem内存占用过高的解决方案 Windows的linux子系统最大占用可到本机器的80 xff0c 所以必须限制一下它的性能来达到优化目的 解决方案 win 43 R 输入cmd打开控制台 输入wsl sh
  • git使用教程8-pycharm 使用 Reset 回滚到某次 commit 提交

    前言 当我们用 pycharm 提交代码的时候 xff0c 每天都要 commit 提交的内容 xff0c 有时候发现后面写的代码还不如前两天的稳定 这时候想把代码回退到某次 commit 提交 xff0c 可以使用git的 reset 功
  • IP地址中的网络地址和主机地址分别是什么意思?怎么计算的呢?

    什么意思呢 xff1f 先理解下这个 xff1a 01087654321 这是一个电话号码 xff0c 它是一坨数字但我们很清楚它分为两部分 xff0c 其中010是表示北京的区号 xff0c 后面87654321是北京范围内的一台座机号
  • Windows安装 hadoop 环境

    1 需要安装 Java 环境 2 下载 hadoop https archive apache org dist hadoop common 3 解压 hadoop 压缩包 xff08 如 xff1a 将下载好的压缩包放在 E config
  • C语言基础-猜拳问题

    题目描述 石头剪刀布是常见的猜拳游戏 石头胜剪刀 xff0c 剪刀胜布 xff0c 布胜石头 如果两个人出拳一样 xff0c 则不分胜负 一天 xff0c 小A和小B正好在玩石头剪刀布 已知他们的出拳都是有周期性规律的 xff0c 比如 石