关机程序与猜数字游戏

前言:在具备一定的C语言基础后,我们可以进行一些简单的应用。


1.关机程序

功能:程序运行起来后,电脑会进入一分钟倒计时关机状态,如果在一分钟内输入:我是狗,就取消关机,否则电脑将会自动在一分钟后关机。

1.1goto语句

1.2 循环语句

2.猜数字游戏

要求:1. 电脑⾃动⽣成1~100的随机数

2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束
思路:

1.首先我们要考虑如何生成随机数

在C语言中提供了一个函数 rand,其可以生成一个随机数,函数原型为:
               int rand (viod);
rand函数会返回一个 伪随机数,伪随机数不是一个真正的随机数,而是通过某种算法生成的随机数。真正的随机数是不可预测的,而 rand 函数是对一个名为“种子”的基准值进行运算而生成的随机数,而rand函数生成随机数的默认种子为1。这就意味着,由于该函数无法自动变换种子,所以无法每次生成不同的随机数。
注:rand函数所返回的随机值取值范围为 0 - RAND_MAX 之间,这个RAND_MAX的大小是由编译器决定的,但是大部分编译器上是32767。
rand函数的使用要包含头文件 <stdlib.h>。

2.接下来我们需要让种子的值发生变化

那么在C语言中又提供了一个函数 srand ,用来初始化随机数的生成器,用来就是初始化种子的值,其函数原型为:
            viod srand (unsigned int seed);

所以程序在调用rand函数前,先调用srand函数,使得种子变化,最后让生成的随机值变化。

那么我们只有保证srand的种子是随机的,rand生成的随机数才是随机的。

那么如何使得种子是随机的呢?我们当然不能再次使用rand 函数了,不然就会形成一个随机数需要另一个随机数来生成的矛盾现象了。

所以我们需要借助其他的方法。

3.借助时间来作为种子变化

由于时间是时刻在发生变化的,所以在程序中,我们一般使用程序运行的时间作为种子。

而在C语言中提供了一个 time 函数,就是获取这个时间的,其函数原型为:

                   time_t  time ( time_t*  timer);

我们在这里不需要使用参数,所以直接传NULL就行,这样的话,函数会返回一个时间的差值,这个差值就是 1970年1月1日0时0分0秒(计算机的起始时间)到现在程序运行的时间之间的差值,单位为秒,这个差值被称为 时间戳
注:该函数的返回值类型为 time_t (time_t 类型本质是32位或者64位的整型类型)。
time 函数的使用需要包含头文件 <time.h>。

4.随机数范围的限定

由于rand函数生成随机数的范围大部分为0~32767,所以我们就可以用随机数%100,这样就可以取得1~99 之间的数字,那么在 +1 就实现了 1~100 的范围限定了。 

5.代码的实现

至此,如何生成随机数的思路已经理清楚了,那么这个代码的核心已经解决,接下来就是完善这个代码了。

首先搭建一个基本的框架,使用自定义函数为游戏的运行和菜单的打印形成独立的函数,后面完善。

使用do...while 循环使得至少进入一次循环体内。

还可以加上猜数字的次数限制,如果5次猜不出来,就算失败。
这就只需要在自定义函数 game()内进行改动。

以上就是对于C语言的一些简单应用的分享,感谢大家的点赞和支持,欢迎大家交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值