石头剪子布游戏:
(1)定义游戏规则剪刀 干掉 布石头 干掉 剪刀布 干掉石头
(2)显示玩家开始猜拳
(3)接收玩家输入的内容
(4)让电脑随机产生一种拳
(5)判断比较
(1)玩家赢的情况(显示玩家赢了)
(2)电脑赢的情况(显示电脑赢了)
(3)平局(显示平局)

 首先我们需要让电脑随机出拳:

 这里用rand函数(调用stdlib.h库)来生成随机数,代码如下:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{//1.让电脑随机出拳int cm = rand(); printf("%i\n",cm);    //%i 指定整数 %d十进制整数return 0;
}

应该有小伙伴发现了,随机数一直都是一个相同吧

的数,因为C语言提供的rand函数 默认的是一个伪随机数,所以我们还需要用到srand函数(调用time.h库)为初始化随机数生成器,代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{//1.让电脑随机出拳srand(time(NULL));int cm = rand();printf("%i\n",cm);    //%i 指定整数 %d十进制整数return 0;
}

如果大家不懂或者想更深层了解可以看这个rand和srand函数

接下来就是猜拳游戏规则:

0代表石头 1代表剪刀 2代表布

那我们怎么把随机数控制在0 1 2这三个数呢?

我们可以用模于3来实现:

0 % 3 = 0
1 % 3 = 1
2 % 3 = 23 % 3 = 0
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0

具体如下:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{//1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;printf("%i\n",cm);    //%i 指定整数 %d十进制整数return 0;
}

好,接下来就是 提示用户如何输入 ,定义变量保存用户的输入,接收用户的输入,代码如下:

//2.提示用户如何输入
printf("请出拳:0.剪刀 1.石头 2.布\n");//3.定义变量保存用户的输入
int number;//4.接收用户的输入
scanf("%d", &number);

 注意如果用户输入非法数据呢? 这里我们知道非法数据肯定是小于0大于2的,所以你懂得:

//6.排出非法数据
if (number < 0 || number > 2) {printf("您输入的数据不对!");
}

第一种实现方法:判断用户和电脑出拳的几种情况从而去确定谁输谁赢和平手,游戏规则如下:

* 猜拳游戏规则:
* 0代表石头 1代表剪刀 2代表布
* 电脑   用户(输了)  用户(赢了)
* 0      1         2
* 1      2         0
* 2      0         1

代码如下:

else if((cm == 0 && number == 2) ||(cm == 1 && number == 0) ||(cm == 2 && number == 1)){//赢了printf("电脑出的是:%d,用户出的是:%d,用户赢了\n",cm,number);
}else if((cm == 0 && number == 1 ||cm == 1 && number == 2 ||cm == 2 && number == 0)){//输了printf("电脑出的是:%d,用户出的是:%d,用户输了\n",cm,number);
}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n",cm,number);}

完整代码如下(可以拿去运行实践一下):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(void)
{// 1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;// printf("%i\n",cm);// 2.提示用户如何输入printf("请出拳:0.剪刀 1.石头 2.布\n");// 3.定义变量保存用户的输入int number;// 4.接收用户的输入scanf("%d", &number);// 5.判断电脑和用户出拳// 6.排出非法数据if (number < 0 || number > 2){printf("您输入的数据不对!");}// 7.判断出拳,输出结果//第一种方法:else if ((cm == 0 && number == 2) ||(cm == 1 && number == 0) ||(cm == 2 && number == 1)){//赢了printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if ((cm == 0 && number == 1 ||cm == 1 && number == 2 ||cm == 2 && number == 0)){//输了printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}return 0;
}

第二种实现方法:用电脑出的拳 -  用户的出的拳的出的结果判断谁输谁赢,游戏规则如下:

* //赢了
* 0 - 2 = -2
* 1 - 0 = 1
* 2 - 1 = 1
*
* //输了
* 0 - 1 = -1
* 1 - 2 = -1
* 2 - 0 = 2

代码如下:

else{int temp;temp = cm - number;if (temp == -2 || temp == 1){printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if (temp == -1 || temp == 2){printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}}

完整代码如下(可以拿去运行实践一下):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>int main(void)
{// 1.让电脑随机出拳srand(time(NULL));int cm = rand() % 3;// printf("%i\n",cm);// 2.提示用户如何输入printf("请出拳:0.剪刀 1.石头 2.布\n");// 3.定义变量保存用户的输入int number;// 4.接收用户的输入scanf("%d", &number);// 5.判断电脑和用户出拳// 6.排出非法数据if (number < 0 || number > 2){printf("您输入的数据不对!");}// 7.判断出拳,输出结果//第二种方法:else{int temp;temp = cm - number;if (temp == -2 || temp == 1){printf("电脑出的是:%d,用户出的是:%d,用户赢了\n", cm, number);}else if (temp == -1 || temp == 2){printf("电脑出的是:%d,用户出的是:%d,用户输了\n", cm, number);}else{printf("电脑出的是:%d,用户出的是:%d,打平了\n", cm, number);}}return 0;
}

如有错误或者建议欢迎各位在评论区留言:

C语言石头剪子布游戏(详解保姆级)相关推荐

  1. Pyhton之模拟石头剪子布游戏篇

    石头剪子布游戏规则:石头>剪子来,剪子>布,布>石头.如果双方出示了一样的手势,就是平局. # coding :UTF_8 # 开发团队 :心心相印 # 开发人员 :机器人小白 # ...

  2. 【C语言】扫雷小游戏详解

    [C语言]扫雷小游戏详解 前言: 还记得大明湖畔的夏雨荷,电脑课上的扫雷吗? ---------------------------是 他 吗--------------------------- 没 ...

  3. 菜鸟写C语言———石头剪子布

    话不多说,上题 输入: 第一行是一个整数N,表示一共进行了N次游戏.1 ≤ N ≤ 100. 接下来N行的每一行包括两个字符串,表示游戏参与者Player1,Player2的选择(石头.剪子或者是布) ...

  4. c语言字符游动程序,C语言实现扫雷小游戏详解

    本文实例为大家分享了C语言实现扫雷小游戏的具体代码,供大家参考,具体内容如下 一.实现功能 首先显示一个小菜单,选择是否玩游戏.当用户选择退出时,程序运行结束,当用户选择玩游戏时,将提示用户输入扫雷位 ...

  5. shell编程实例-石头剪子布游戏

    新建game.sh文件,编辑内容如下: Input() {while :doecho "请选择剪刀(J).石头(S)或(B)"read Choicecase $Choice inJ ...

  6. c语言模拟石头 剪子布游戏,用C++如何做出石头剪刀布的游戏。。。初学者不给力啊...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include using namespace std; int main() { int s; srand(int(0)); int ...

  7. 少儿编程150讲轻松学Scratch(十二)-用Scratch制作石头剪子布游戏

    前言 Scratch融合卡通.动画.音效等多媒体的运用和直观拖拽式的编程方式,生动有趣,可以编写各种类型程序,游戏.动画.互动美术.实物模拟.数学模拟等,想象无限.同时蕴含丰富知识,体现现代编程思想, ...

  8. 信息学奥赛C++语言:石头剪子布

    [题目描述] 石头剪子布,是一种猜拳游戏.起源于中国,然后传到日本.朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界.简单明了的规则,使得石头剪子布没有任何规则漏洞可钻,单次玩法比 ...

  9. 石头剪子布(字符串)c语言,石头、剪刀、布程序,C语言模拟

    /*同问用C编写:同学 A 和B两个人玩最简单的石头剪子布游戏,游戏规则如下:石头赢剪子:剪子赢布:布赢石头: 如果二者相同,则平局:并且规定,如果赢一局则得 2 分,平局的话双方各得 1 分,输的人 ...

最新文章

  1. git - 简易指南
  2. 【MATLAB】MATLAB的控制流
  3. 用贪心算法解决马踏棋盘问题
  4. SQL Server表分区的NULL值问题
  5. kuangbin专题十六 KMP扩展KMP HDU3068 最长回文
  6. (3)Python3笔记之变量与运算符
  7. 图论 —— 二分图 —— 匈牙利算法
  8. end_request: I/O error
  9. react.js 表单验证-登录框
  10. python 通信_深入浅出通信原理(Python代码版)
  11. go html桌面,用 Go 开发桌面应用程序(GUI):Webview、Lorca 与 Electron
  12. 轻量级分布式事务-自定义多数据源事务注解
  13. 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】
  14. 光线追踪算法—镜面反射
  15. 内存管理(15)——UI(20)——DeleteObject
  16. 小程中的web-view缓存问题
  17. 【深度学习】深度学习模型
  18. HiPER宽带安全网关——逍遥岛网吧应用实例(转)
  19. 网易月薪25K的Linux运维面试真题曝光
  20. 区块链联盟的正确方式

热门文章

  1. c语言外部中断th0,单片机C语言代码:外部中断,按下中断按键LED不亮,LED1正常亮...
  2. 典型计算机控制系统的基本框图6,计算机控制系统试题
  3. Django(一)-学习笔记整理
  4. 阿里巴巴优酷视频增强和超分辨率挑战赛记录
  5. Lyft抢跑Uber上市! 打响硅谷独角兽上市潮第一枪!
  6. 【Swift初见】Swift字典
  7. Markdown语法016:最常用的LaTeX语法
  8. 计算机毕业设计php_thinkphp_vue的家乡石泉网站-乡村家乡旅游信息网站
  9. Mac系统Kettle安装教程
  10. 【数据结构】常见七大排序总结