目录

1.前言

2.编写思路

3.代码实现

3.1菜单代码

3.2游戏代码

3.2-1 rand函数

3.2-2 srand 函数

3.2-3 time函数

4.注意事项

5.完整的猜数字游戏代码展示

6.结语



1.前言

猜数字游戏游戏是一个简单有趣的游戏,相信大家在现实也会有一起玩过。通过一些简单的C语言代码,就能实现这个游戏。赶紧来看看吧!

2.编写思路

首先作为一个小游戏,点开程序的时候就应该先玩一次,完成一次游戏后可以再选择玩或者不玩。那么由此我们想到了do while 循环作为起始语句。

其次需要一个菜单来提示玩家进行继续或结束游戏的提示,我们选择用简单的函数来实现。

接着玩家会不断地进行猜数字,程序需要告诉玩家猜大了还是猜小了。

最后玩家猜中数字,根据菜单来决定是否进行下一次游戏。

3.代码实现

根据编写思路,我们可以简单构造出一个大体框架。

#include <stdio.h>
int main()
{int input = 0;do{//编写一个菜单函数nemu();printf("请选择:>");scanf("%d", &input);//根据玩家选择是否需要继续游戏switch (input){case 1:printf("开始游戏\n");game();break;case 0:printf("游戏结束");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}

接下来就是game函数的编写与nemu函数的编写,来充实我们游戏的主体内容。

3.1菜单代码

nemu函数起到一个提示玩家选择的作用,用printf即可实现,由于不需要返回值,所以nemu的类型是void。具体如下

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

3.2游戏代码

进入game函数后,我们需要程序生成一个随机数。然后玩家再去猜这个随机数。

那么程序如何实现每一次都生成一个完全随机的数字呢?

3.2-1 rand函数

rand函数需要引用<stdlib.h>才可以使用,功能是随机生成一个数。那么这个数的范围是多少呢?答案是(0~32767)。我们的游戏不可能需要玩家猜那么大的数字!于是在使用rand函数后应该模上一个数,来圈定随机数的范围。

void game()
{//随机数命名为num  int num = 0;printf("请在0~100之间猜一个数字\n");num = rand() % 100 + 1;//此时num的范围在0~100while (1){//玩家猜的数字kint k = 0;scanf("%d", &k);if (k < num)printf("猜小了\n");else if (k > num)printf("猜大了\n");else if(k = num){printf("恭喜你,猜对了\n");break;}}
}

用while即可实现之前我们所说的循环猜数字的功能,合理用break来打破循环,若不达到条件,则不会执行break语句,从而可以一直循环。while(1)这么写还是十分常见且实用的!

但是也存在一个问题,仔细调试的小伙伴们会发现,虽然程序中每次的随机数不同,但是再次打开程序,与上一次打开程序时,程序生成的随机数是相同的。                                                             

那么这个猜数字小游戏在玩过一次后,就已经失去了随机性和趣味性。那么我们该怎么解决这个问题呢?我们不妨先去了解一下rand函数!!

看得懂最好,看不懂也没关系。

总的来说rand函数使用之前,需要先调用srand函数来重置随机生成数起点。这样就能保证每一次打开程序所生成的随机数真正随机。

3.2-2 srand 函数

*由于文章是面向小白,所有srand函数不会过多介绍。*

调用srand函数需要引用头文件<stdlib.h>,功能是重置随机生成数起点。需要注意的是srand()括号内需要一个unsigned int 类型的数值。如果括号内我们设置成常量。那么每次生成随机数的起点都会相同,同样达不到完全随机的效果。

void game()
{srand(1);//随机数命名为num  int num = 0;printf("请在0~100之间猜一个数字\n");num = rand() % 100 + 1;//此时num的范围在0~100while (1){//玩家猜的数字kint k = 0;scanf("%d", &k);if (k < num)printf("猜小了\n");else if (k > num)printf("猜大了\n");else if(k = num){printf("恭喜你,猜对了\n");break;}}
}

所以我们需要一个每时每刻都在变化的一个变量,来放到srand的括号里,保持rand函数每一次的起点都不一样,才能真正达到完全随机的效果。

3.2-3 time函数

time函数,也叫时间戳 ,需要引用头文件<time.h>。这里介绍一下什么是时间戳:我们现实每一个时间与系统初始时间的差值叫做时间戳。时间戳是一串数字,一串无时无刻都在变的数字,这串数字可以转化成现实中的时间。知道这些,我们的问题也就能解决了!

void game()
{
srand((unsigned int)time(NULL));//随机数命名为num  int num = 0;printf("请在0~100之间猜一个数字\n");num = rand() % 100 + 1;//此时num的范围在0~100while (1){int k = 0;scanf("%d", &k);if (k < num)printf("猜小了\n");else if (k > num)printf("猜大了\n");else if(k = num){printf("恭喜你,猜对了\n");break;}}
}

time()函数的返回类型是time_t,之前有提到srand()括号内需要一个unsigned int类型的变量,于是我们在time()前面加上(unsigned int)来强制转换数据类型。

另外time()括号里需要一个指针变量。但是我们不需要这个指针变量,只需要他生成的随机数,所以time()括号内可以放NULL空指针。

这样,rand()函数就可以真正的做到完全随机!game函数的功能也完全齐全!

4.注意事项

srand函数只需要调用一次,如果每次使用rand函数前都调用srand函数,在循环足够快的情况下,还是有可能出现与srand()括号内放常量的那种重复情况!!!

5.完整的猜数字游戏代码展示

#include <time.h>
#include <stdlib.h>
#include <stdio.h>void nemu()
{printf("***********************************\n");printf("***********   1.play   ************\n");printf("***********   0.exit   ************\n");printf("***********************************\n");
}
void game()
{
srand((unsigned int)time(NULL));//随机数命名为num  int num = 0;printf("请在0~100之间猜一个数字\n");num = rand() % 100 + 1;//此时num的范围在0~100while (1){int k = 0;scanf("%d", &k);if (k < num)printf("猜小了\n");else if (k > num)printf("猜大了\n");else if(k = num){printf("恭喜你,猜对了\n");break;}}
}
int main()
{int input = 0;do{nemu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:printf("开始游戏\n");game();break;case 0:printf("游戏结束");break;default:printf("选择错误,请重新选择\n");break;}} while (input);return 0;
}

6.结语

此次示例代码仅写出猜数字游戏的核心功能,且引用的各种函数讲解也不是很透彻。希望有兴趣的小伙伴可以继续完善游戏代码,写出属于自己的功能更完备的猜数字游戏!!

最后还是请大家多多支持,点赞,关注,收藏!!!

https://cplusplus.com/reference/  ps:这个是查阅rand函数时博主使用的网站,可以收藏一下哦!

【小白系列】C语言 猜数字游戏相关推荐

  1. C语言—猜数字游戏的实现

    目录 目录 完整的程序 打印菜单 主函数部分 生成随机数 猜数字函数的实现 我们已经学习到了C语言的一些基本知识和分支循环语句了,可以自己动一动手来尝试实现C语言-猜数字游戏了,为了猜数字程序的实现, ...

  2. C语言猜数字游戏(详解)

    使用C语言写出猜数字游戏 1.思路 1.我们需要电脑生成一个随机数 2.玩家进行猜数字 3.玩过一次可以再玩一次,那么至少要进去一次,可以使用do...while循环 2.大体结构(主函数) 使用do ...

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

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

  4. 【趣学】C语言猜数字游戏

    目录 一.前言 二.从游戏初始界面开始 三.游戏实现 ①rand函数 ②srand函数 ③时间戳 ④time函数 一.前言 学习的过程有时候会有些许枯燥,但换一种方式学习也算是一种有趣的事情,呀哈,写 ...

  5. C语言 猜数字游戏

    猜数字游戏 规则:给定一个范围如[1,100],系统生成一个范围内随机数字,用户随便输入一个整数,如果用户输入的数字比系统生成的数字小就提示"猜低了",如果用户输入的数字比系统生成 ...

  6. c语言猜数字游戏用while,【C语言基础】有趣的猜数字游戏。(while循环,if语句,switch语句)...

    要求:猜数字游戏的实现.代码如下:#include #include #include void menu() { printf("***************************** ...

  7. c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...

    1.看程序运行截图吧!! 由于博主本人较笨,就不动画演示了,如果动画的话可能将是一个漫长的过程! 猜数字游戏.png 2.游戏题目 随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字 ...

  8. c#语言猜数字游戏,C#实现猜数字游戏

    本文实例为大家分享了C#实现猜数字游戏具体代码,供大家参考,具体内容如下 给定一个0-100的随机数字猜其大小 题目样式: 电脑产生一个0到100之间的随机数字,并且要求用户来猜,如果用户猜的数字比这 ...

  9. C语言猜数字游戏的进阶设计

    上一篇文章我们已经实现了猜数字游戏的程序设计,但是玩过游戏的我们都知道,这样的游戏界面实在是太过低级,下面我们运用system函数和Sleep函数进行一次小升级. 我们先对即将用到的函数进行简单介绍 ...

最新文章

  1. 激光雷达和V2X技术
  2. ssh实现基于密钥方式登录系统
  3. python3 split()函数
  4. Flutter Text或者RichText不换行的问题
  5. Python函数中的变量和函数返回值
  6. C#递归搜索指定目录下的文件或目录
  7. redis笔记_源码_简单动态字符串SDS
  8. c语言实验指导,C语言实验指导
  9. 跨平台的网络通信中间件:ICE和ACE
  10. linux统计多个文件大小总和
  11. 工作两年和研究生两年(专业硕士)有什么差异?
  12. 用阿里服务器搭建彩虹网代刷平台
  13. Oracle数据库:下载与安装图解
  14. 如何修改iTunes的iPhone备份路径?
  15. 闭环系统的零极点图判定稳定性_零极点与系统稳定关系 拉氏变换的收敛域...
  16. Java/JVM垃圾回收机制和算法总结
  17. 华为有国产芯片的服务器吗,华为、飞腾扛旗,国产服务器芯片有望突破!ARM要替代x86?...
  18. 单片机简易定时闹钟控制c语言代码,简易定时闹钟.doc
  19. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码
  20. 台式机属于微型计算机设备吗,pc机属于什么型计算机

热门文章

  1. NKOI 3747 宠物
  2. Locality-Driven Dynamic GPU Cache Bypassing
  3. 【面经】联想大数据开发面经
  4. HTML的a标签href属性指定相对路径与绝对路径的用法讲解
  5. 使用Kettle进行数据同步(增量)
  6. Unity 画自定义网格
  7. 技术复盘(3)--ElasticSearch
  8. [Git]使用命令行更改用户名和邮箱
  9. 软件评测师备考攻略(已考过)
  10. Dell笔记本按F8进不了安全模式解决办法