【猜字谜游戏以及其随机数生成的基础知识(rand函数,srand函数,time函数)】

目录

rand函数

srand函数                      

time函数

应用 

生成随机数

猜数字游戏


rand函数 

1. 作用:rand函数可以⽣成随机数 

2.函数原型:int rand (void);

3. 原理:rand函数是对⼀个叫“种⼦” (初始值) 的基准值进⾏运算⽣成的随机数。

4. 随机数的范围

  •        这个随机数的范围是在0~RAND_MAX之间,
  •        RAND_MAX的值依赖编译器实现的,
  •        但是⼤部分编译器上是32767。

5. 使用要求:rand函数的使用需要包含⼀个头⽂件是:stdlib.h(#include<stdlib.h>)

6. 设置随机数的范围

  •               例如 a.生成0~99的随机数
  •                           rand()%100;
  •                       b.生成1~100的随机数
  •                           rand()%100+1;                                                                   
  •                       c.生成a~b之间的随机数
  •                           a+rand()%(b-a +1);

7.注意事项

  •          其⽣成的随机数并不是真正的随机数而是伪随机数
  •          (即每次运行后的结果都相同),
  •          因为rand函数⽣成随机数的默认种⼦(初始值)是1

                                    

                    例如

#include <stdio.h>

#include <stdlib.h>

int main()

{

      printf("%d\n", rand());

      printf("%d\n", rand());

      return 0;

}


srand函数                      

1. 作用:        ⽤来初始化随机数的⽣成器(设置随机数的种子)

2. 函数原型

                         void srand (unsigned int seed);

3. 使用要求

  •    传入srand的种子参数是无符号整型,若不是就强制转换。
  •    srand函数的使用需要包含⼀个头⽂件是:stdlib.h(#include<stdlib.h>) 

time函数

1. 作用:         time函数可以获取当前日历时间

2.  函数原型:                               

  •                time_t time (time_t* timer);
  •       其中time_t本质是32位或者64位的整型(即long或long long),
  •       timer是参数(此参数可以是空指针,在这种情况下不使用参数)

3.  返回值:    

  •   a.  time函数通常返回当前unix时间戳  (即从1970年1月1日00:00时                                                 (UTC/GMT的午夜)开始 到 目前程序运行的时间之间 所经历的秒数),
  •        函数会将这个返回的差值放在timer指向的内存中带回去。
  •   b. 如果函数无法检索日历时间,则返回值为 -1

4. 使用要求:time函数的使用需要包含头文件 time.h(#include<time.h>)

代码示范 :

#include<stdio.h>

#include<time.h>

int main()

{

    time_t i,j;

    i = time(&j);

    printf("%lld/n", i);

    return 0;

}

应用 

生成随机数

代码示范

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

int main()

{

//使用time函数的返回值(时间戳是变化的)设置为种子,从而改变每次rand函数生成随机数的值

//srand要求参数是无符号整型,而time函数返回的是长整型,所以需要将其强制性转换

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

    printf("%d/n",rand()%100);//打印0~99之间的随机数

    return 0;

}

猜数字游戏

思路讲解:
一.制作菜单

  •      1.开始游戏  
  •       2.退出游戏  
  •       3.选择错误,重新选择(先输入一个数,让玩家选择是否进行游戏)


二.制作游戏时的内容  

  •      1. 系统随机生成一个1~100的数
  •      2. 程序根据玩家输入的数字判断之前生成的数是否相等并给出提示。
  •        ( 猜数次数可以自行设置)

            知识点:生成随机数 ,分支语句和循环语句,函数的调用
                                

代码示范:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void game()
{
	int i,j;
	i = rand() % 100 + 1;
	int cnt = 10;                  //限制猜数的次数,如可猜数10次
	while (cnt)                           
	{
		printf("你还有%d次机会\n",cnt);
		printf("请输入一个数字\n"); 
		scanf("%d", &j);
		if (j > i)
			printf("输大了\n");
		else if (j < i)
			printf("输小了\n");
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
		cnt--;
		if (cnt == 0)
			printf("猜数失败,正确答案是%d\n",i);
	}


}

int main()
{
	int a=0,b;
	srand((unsigned int)time(NULL));

	do
	{
		printf("************************\n");
		printf("******0.don't play******\n"); //选0退出游戏
		printf("*********1.play*********\n"); //选1开始游戏
		printf("************************\n");//选到其他数,就重新选择

    	scanf("%d", &a);
		
			switch (a)
			{
			case 0:
				printf("退出游戏\n");
				break;
			case 1:
				printf("开始游戏\n");
				game();
				break;
			default:
				printf("输入错误,请重新输入\n");
			}	

	}while (a);
		return 0;
}

  • 28
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值