大一C语言入门新手项目--猜数字


前言

猜数字基本规则:
计算机给出一随机数,玩家输入猜测的数,程序给出偏大或偏小,玩家根据这一提示修改数字,在一定的次数内猜出数字。

本文代码可以在https://gitee.com/fhvyxyci/guessing-numbers/tree/master/
获得,喜欢的话顺手点个star。


一、随机数原理介绍

c语言<stdio.h>库中提供rand()函数,可以根据种子生成伪随机数。但由于默认的种子始终为1,这会导致每次重启游戏后产生的数字相同。第一次运行
第二次运行
要解决这个问题,我们可以使用srand函数更改种子以及<time.h>中的time函数提供始终变化的种子。

int a=(unsigned int)time(NULL);

这行代码可以将当前时间的时间戳赋给a变量,而时间戳是一个每时每刻都在变化的数,因此可以保证每次生成的种子都不一样。

(注意:time()返回的类型是time_t类型的,time_t 类型本质上其实就是32位或者64位的整型类型,因此可以将他强制转换为unsigned int 类型)

srand((unsigned int)time(NULL));

这样,就可以保证每次生成的数字的随机性了。

二、限定随机数的大小范围

很显然,在这样的一个游戏中,不对数字范围作出限制是绝对行不通的(rand返回的随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是⼤部分编译器上是32767)

我们可以通过取余的方式来限定随机数的范围

rand() % 100;//余数的范围是0~99

这样,我们就获得了范围在0-99的随机数,而如果你对这个范围不满意,你还可以按照这个公式修改你的随机数范围
如果要生成a~b的随机数

a + rand()%(b-a+1)

游戏开始菜单

基础菜单
关于do while:先进行一次循环体再进行条件的判断,而如果玩家输入的是0,循环停止,游戏退出。
同时为了程序的健壮性,应该考虑玩家输入的不符合条件的情况。
菜单示范

game主函数

思路:
game函数思路
按照这个流程,我们可以做出game函数
game函数

在这个game函数的基础之上,我们还可以增加难度,比如限定猜数字的次数。
限定次数的game函数

感谢您的阅读!
本博客源码可以在https://gitee.com/fhvyxyci/guessing-numbers/tree/master/
获得,喜欢的话顺手点个star吧!

  • 32
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值