要实现的功能:

  1. 自动产生一个1~100的随机数。
  2. 猜数字 -     a、猜大了,就恭喜你,游戏结束     b、猜错了,会告诉你是猜大了还是猜小了
  3. 这个游戏你可以一直玩,直到游戏结束

首先我们要制作一个菜单:

#include <stdio.h>
void menu()
{printf("####################\n");printf("####  1.paly   #####\n");printf("####  0.exit   #####\n");printf("####################\n");}int main()
{menu();printf("进入或者退出(1/0):");return 0;
}

这个菜单会打印输出一个菜单;然后提示你是进入游戏还是退出游戏。这时我们需要从键盘上输入一个数并且要判断这个数是1/0/其他,然后用分支语句分别对输入的数做出不同的行为。

int main()
{int imput = 0;menu();printf("进入或者退出(1/0):");scanf("%d", &imput);switch (imput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输错了,请重新输入\n");break;}return 0;
}

由于我们要实现游戏可以一直玩,知道游戏结束,那么我们可以将主函数中的部分代码放入do - while循环当中,来实现这个功能。

不管imput输入的是什么,循环体都会先走一遍,然后再判断是不是要再进入循环。当imput的值为非0时,循环再次执行;当imput为0时,循环结束,游戏结束。

然后我们就要对进入游戏后要做的事进行编写了。我们的目的是要实现一个1~100的随机数。在C语言中有一个随机数生成函数:rand()。

void game()
{int rej = rand();printf("%d\n", rej);
}

但是这里我们发现,我们每次退出程序,再进入游戏,这个随机数都是41,这不符合我们想要的随机数的想法。这里的问题在于这个随机数生成函数在使用的时候需要使用srand()函数对其进行设定。下面是库函数rand()和srand()的说明。rand()和srand()的使用需要引入头文件

#include <stdlib.h>

那么我们应该怎样设置才能让这个数字随机起来呢,我们需要使用srand函数对rand函数进行设定,srand就是给rand随机数设定一个初识的值,就是从哪开始的。

srand((unsigned)time(NULL));

这里所用到的time函数,是使用了时间戳的概念。时间戳就是将系统现在的时间和初始的时间相减,得出的一个差值。

那么当我们把这个时间戳参数给srand函数之后,可以看到现在的每个随机数都离得很近,不是我们希望的那种随机数(也就是不够随机),为了解决这个问题,我们将这个srand函数放到循环外面,整个程序中只对rand设置一次,这样这个数就足够随机了。

接下来我们就要允许玩游戏的人输入一个数,然后程序对这个数和随机生成的数进行比较,然后给出提示来让玩游戏的人继续猜直到猜中。

全部代码:

#include <stdio.h>
#include <stdlib.h>void menu()
{printf("####################\n");printf("####  1.paly   #####\n");printf("####  0.exit   #####\n");printf("####################\n");}void game()
{int rej = rand()%100+1;int guess = 0;while (1){printf("请输入猜的数:");scanf("%d", &guess);if (guess < rej){printf("猜小了\n");}else if (guess > rej){printf("猜大了\n");}else{printf("恭喜你猜对了!!!\n");break;}}
}int main()
{int imput = 0;do{srand((unsigned)time(NULL));menu();printf("进入或者退出(1/0):");scanf("%d", &imput);switch (imput){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("输错了,请重新输入\n");break;}} while (imput);return 0;
}

这里对int rej = rand()%100+1    进行解释:rand()%100是一个0~99的余数,余数加一正好符合我们的需求。

游戏运行的效果为:

一定要认真地去理解这个程序的逻辑结构!加油吧!

用C语言实现猜数字游戏相关推荐

  1. c语言程序设计 猜数字,C语言程序设计(猜数字游戏)报告.doc

    C语言程序设计(猜数字游戏)报告 <高级语言程序设计>课程设计 题目:班级:09R3 学生姓名:谢泽雄 学生学号:200931000622 指导老师:提交时间:华南农业大学信息(软件)学院 ...

  2. c语言编程题猜数字游戏6题,c语言编程—猜数字游戏.doc

    c语言编程-猜数字游戏 计算机实习报告 面向过程编程 用C语言求解实际问题 一.问题描述 游戏类第15个任务--猜数字游戏 计算机从0-9这10个数字中任意选择n个不重复数字(n≤10)组成一个5位数 ...

  3. C语言编写猜数字游戏及随机数生成方法

    C语言编写猜数字游戏及随机数生成方法 文章目录 C语言编写猜数字游戏及随机数生成方法 前言 一.猜数字小游戏 内容: 步骤: 代码的实现: 二.随机数生成的方法 总结 前言 对于C语言初学者来说,当我 ...

  4. c语言猜数字游戏用while,用C语言实现猜数字游戏

    本文实例为大家分享了C语言实现猜数字的具体代码,供大家参考,具体内容如下 问题:计算机随机生成一个数字,用户进行猜数字,当用户猜错时,提醒用户猜高/猜低,直到用户猜的数字与计算机给的随机数一致时,提示 ...

  5. C语言实现猜数字游戏(通俗易懂)

    文章目录 前言 一.代码思路: 1.游戏菜单: 2.主函数: 3.游戏函数: 二.游戏总体代码: 结尾: 前言 首先规划一下我们的猜数字游戏: 数字给定(1-100)的随机值,生成随机值的方法之前有讲 ...

  6. 用python做C语言的猜数字游戏,[Python3 练习] 007 简单的猜数字小游戏

    题目:简单的猜数字小游戏 (1) 描述 程序随机生成一个数字,玩家用键盘输入所猜数字,在规定次数内猜对为胜. (2) 要求 程序随机生成一个 1 到 100 的自然数 有 7 次机会去猜 机会用尽之前 ...

  7. 【C语言】第一个C语言项目——“猜数字”游戏(内附源码)

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello米娜桑,这里是君兮_,今天又抽空为大家更新我们的主线0基础C语言啦!鉴于最近讲解了非常多的选择语句与循环语句,咱们今天就来讲讲 ...

  8. 【C语言】-猜数字游戏

    目录 一.猜数字游戏 1.什么是猜数字游戏? 2.怎么实现猜数字游戏? 1>.分析需要的功能 2>.随机数的产生 3>.system()函数 4>.总代码 二.猜数字游戏+关机 ...

  9. c语言作业 猜数字游戏,C语言实现猜数字小游戏

    本文实例为大家分享了C语言猜数字的具体代码,供大家参考,具体内容如下 一.描述 猜数字游戏. 二. 程序 使用srand((unsigned)time(NULL)),产生随机数种子. int rand ...

  10. 喵呜:C语言实现猜数字游戏

    编写代码实现,模拟用户登录情景,并且只能登录三次.(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序.) 猜数字游戏实现 1.生成一个随机数 2.猜数字(猜大.猜小.猜对 ...

最新文章

  1. BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应
  2. shell中source与sh区别
  3. vue获取输入框得内容_React入坑(四):获取输入框内的内容
  4. Excel TargetRange.Validation为空的
  5. 捷径app 保存视频_Android N App捷径
  6. 几个轻巧好用的代码检查工具!
  7. 解决 jq ui 弹框 select2 input 失效问题
  8. 电商技术中企业数据总线ESB和注册服务管理的区别
  9. SAN计算机,什么是SAN网络存储
  10. 医学计算机论文,医学图像数据库-外文翻译(计算机论文,医学论文适合)
  11. 女孩做妻子前应知道的10件事
  12. Java实现找回密码
  13. 市场的结构,各种投资方法的此消彼长,没有所谓圣杯
  14. 快讯 I Nexperia 超低电容 ESD 保护二极管保护汽车数据接口
  15. 理解linux cpu load - 什么时候应该担心了
  16. 【MATLAB编程】求斐波那契数列的第n项与前n项和
  17. 2年5个月13天,从外包到拿下阿里offer,没想到我也能有今天
  18. css img图片按比例缩小,保持图片不失真
  19. 【学习笔记】SpringMVC—@RequestMapping注解
  20. 使用J-Link启动海思3516最小系统

热门文章

  1. 帆软帮助文档_聚焦商业智能主赛道,帆软如何取得里程碑式突破
  2. component组件基础
  3. Java快捷键的设置与使用
  4. MySQL常用函数之聚合函数
  5. 【最详细】数据结构(C语言版 第2版)课后习题答案全集 严蔚敏 等 编著
  6. cmd中,执行java命令与javac命令的区别
  7. 上证指数ARIMA模型预测(R软件)
  8. 算法学习笔记:连通图详解
  9. windows命令行包管理工具 -Scoop
  10. python 编码例子汇总