一个简单的猜数字游戏送给大家,非常适合初学者练习,为此,我将详细地讲解每一个步骤

我的码云地址:https://gitee.com/small-protrusion/c-practice-code.git

猜数字游戏
1. 电脑随机生成一个数字(1~100)
2. 玩家猜数字
    玩家猜小了,就告知猜小了
    玩家猜大了,就告知猜大了
    直到猜对为止
3. 游戏可以一直玩

首先,这个猜数字游戏,要可以多次玩,不论怎样一开始都会一次。就比如我们玩的王者荣耀之类的游戏,都会一开始有一个登录界面。这样我们就会想到do...while循环很符合这样的思想。

int main()
{do{menu();printf("请输入:>");}while()return 0;
}

一个游戏,一般我们进入后就有一个菜单选项,这里我们先用一个menu函数来表示完成我的操作。在menu函数中写出玩家所要做的操作。

void menu()
{printf("******************\n");printf("***** 1.play *****\n");printf("***** 0.exit *****\n");printf("******************\n");
}

玩家输入1代表要玩这个游戏,输入0代表退出这个游戏。输入的数字我用一个变量input来存,因为数字不只是0和1,还有其他数字。这种情况适合switch分支。当我们选择其他数字时,提示选择错误,我们这个游戏肯定不只是玩一次,所以我们还要回到上面,则while中的表达式选input正好合适。这样就简单的实现了一下游戏的逻辑。

#include <stdio.h>void menu()
{printf("******************\n");printf("***** 1.play *****\n");printf("***** 2.exit *****\n");printf("******************\n");
}int main()
{int input = 0;do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("猜数字\n");break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

当然,这个游戏不可能那么简单。我们主要的代码要在一个函数里实现。

猜数字游戏的实现:1.生成一个随机数    2.猜数字

首先,C语言中提供了一个生成随机数的函数,那就是rand函数。我们可以从我画的红线中了解到rand函数可以生成一个0~RAND_MAX 的整数。这个RAND_MAX是多少呢?我们可以这样来看

这个RAND_MAX是多少呢?我们可以这样来看

一个十六进制的数,我们可以用计算机算一下,得出来的结果是32767,所以rand函数的返回值范围就是0~32767.

而我们调用rand函数时。要先调用srand函数,看图。

你也可以设置一个变量来查看一下随机数,你会发现rand函数前后两次的值是一样的。

那么srand又是何方神圣呢?

srand需要的参数是一个无符号整型的值,且要传进去一个一直变化的值。否则的话,我传进去的是100,而rand生成的值却总是不变了。 那么有什么是一直变化的值呢?当然有

时间戳:表示你的程序运行的时间与计算机起始时间的差值,单位是秒。

时间戳可以转化为时间,时间也可以转化为时间戳。

c语言提供了一个返回时间戳的函数time,time函数返回的类型是time_t,时间戳。而time_t又是什么类型呢? 

最后发现,time_t竟然是整型。 time函数所需要的参数是一个指针,我直接穿传进去一个空指针,因为我没有必要把时间戳给存下来。srand的参数是无符号整型的,再来个强转。这下生成一个随机数的需求就完成了。而我们要求生成的数在0~100,可以通过模运算之后加1来完成

接下来就是完整的代码了,这里要注意的点是:1.srand这个函数只要在工程中调动一次,你要是在game函数里调用,那么每次都会生成一个全新的随机值,那猜数字的人不要给你玩死啊。2.每次猜数字肯定不只有一次,所以game函数里的if语句要用while循环。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{printf("******************\n");printf("***** 1.play *****\n");printf("***** 2.exit *****\n");printf("******************\n");
}
//RAND_MAX  //记得要包含头文件哦
//time_t
void game()
{int guess = 0;int ret = rand()%100 + 1;//printf("%d\n", ret);while (1) {scanf("%d", &guess);if (guess > ret){printf("猜大了\n");}else if (guess < ret){printf("猜小了\n");}else{printf("恭喜你,猜对了\n");break;}}}int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("退出游戏\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
}

这就是一个简单的猜数字游戏的思路及实现,希望各位看官可以多点点赞。感谢大家。

猜数字游戏(c语言实现)相关推荐

  1. c语言程序设计 猜数字,猜数字游戏c语言编程,c语言编程 编一个猜数字游戏

    c语言编程 编一个猜数字游戏 #include #include #include #include void main()/*主函数*/ { int a,b,times=0,i,j,guess=0, ...

  2. c语言课题设计题目猜数字游戏,C语言课题设计报告(猜数字游戏)文档.doc

    C语言课题设计报告(猜数字游戏)文档 课 程 设 计 报 告 课程名称 C 语言课程设计 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1183 学 号 13 姓 名 鲁响 指导教师 王颖 ...

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

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

  4. 猜数字游戏c语言原理二进制,第一个c语言实现的猜数字游戏

    #include #include #include #include #include #include #include void output() { printf("******** ...

  5. 与猜数问题有关的游戏C语言,猜数字游戏(C语言版)

    最近在研究算法的问题 貌似这是工作中的一个短板 当然 这跟我从事的工作有关 一般不容易接触太多算法问题 .很多时候接触都是一些CRUD  ! 今天空闲了会 写了一个猜数字的游戏  原理很简单 直接上代 ...

  6. 猜数字游戏c语言编程,【游戏编程】猜数字游戏(C语言)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 //此游戏规则为:系统随机生成一个整数,然后要你去猜它.系统会提示你是大了还是小了.游戏结束后会生成排行榜,有记录时间 #include #include ...

  7. 猜数字游戏——c语言

    /*随机生成一个1至9之间的任意整数作为被猜的数字,循环输入你猜的数字,告知你猜的是大了还是小了 ,一直到猜中那个数字,同时输出猜的次数 */ #include<stdio.h> #inc ...

  8. 猜数字游戏 模拟用户登录场景 模拟屏幕输出 C语言代码实现详细

    范围在 0-100 的猜数字游戏 c语言代码实现 //1-100猜数字游戏 #include<stdio.h> #include<stdlib.h> //随机数函数头文件 #i ...

  9. 1到100猜数字游戏规则c语言,[C语言课程设计猜数字游戏1.doc

    [C语言课程设计猜数字游戏1 课 程 设 计 报 告 课程名称 C语言程序设计报告 课题名称 猜数字游戏 专 业 电气工程及其自动化 班 级 1104 学 号 33 姓 名 张腾 指导教师 黄晓宇 丁 ...

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

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

最新文章

  1. 从RCNN到Fast RCNN,再到Faster RCNN的奥秘
  2. 自监督学习新思路!基于蒸馏(distillation loss)的自监督学习算法
  3. 虚拟服务器的磁盘,虚拟服务器磁盘扩容
  4. Elasticsearch 字段数据类型
  5. Centos7更新 SQLite3至版本3.29.0
  6. 电子计算机应由,计算机
  7. vector.resize 与 vector.reserve的区别(转载)
  8. 合肥师范学院2020年专业计算机是多少分,合肥师范学院2020年安徽省一本、二本各专业录取分数统计...
  9. 关于使用CKplayer播放m3u8视频出现没有视频的问题分析
  10. python复制、移动文件到指定文件夹
  11. 《统计数据会说谎》阅读总结
  12. 小白疑问3dsmax和maya的区别有什么?大佬来给你解答
  13. 由内而外全面造就自己(七)
  14. F5学习——Part 1(基于LTM模块的基本组网模式)
  15. 计算机命令清除所有,电脑深度清理命令设置方法
  16. ML.net 3-情绪预测
  17. 最全英豪工具箱(LvyhTools)PPT插件教程(前篇)
  18. ggplot2设置坐标轴范围_使用 ggplot2 进行高级绘图—R读书笔记(二)
  19. Pycharm浏览器打开报错解决
  20. maya腿的蒙皮旋转枢轴_MAYA更改、移动枢轴点

热门文章

  1. 2018-2019年江苏省高等学校“阿里云大数据技术实战训练营”大学生万人计划学术冬令营开营... 1
  2. Python模拟QQ群发邮件
  3. 《大秦帝国之崛起》看后感
  4. java单继承多实现_单继承,多实现
  5. docker容器的前台后台运行
  6. 几何分布的期望和方差公式推导_统计学笔记——概率、期望、排列组合和几何分布等...
  7. (十二:2020.08.28)CVPR 2016 追踪之论文纲要(译)
  8. 当 TiDB 遇到图数据库 | TiDB Hackathon 2020 优秀项目分享
  9. 【零基础学Python】Day9 Python推导式
  10. Linux服务器遇到攻击怎么办?用这些方法封禁IP