随机数生成问题&&猜数字游戏实现

随机数生成问题&&猜数字游戏实现

1. 随机数生成

  1).首先介绍一个库函数rand,这个函数可以生成随机数.
1
这个重要,还是要自己写一下。
原型: int rand(void);
*rand函数返回一个伪随机数,这个随机数的范围是0-RAND_MAX之间,RAND_MAX的大小是依赖编译器实现的,但是大部分是32767.头文件是:stdlib.h

测试代码:

1
1
1
*运行了三次,发现结果没变化,没有产生自己想要的随机数,肯定不合适.
*rand函数生成的是伪随机数,要通过对一个叫“种子”的基准值进行运算生成随机数.


那么,接下里介绍一个设置种子的函数!srand()
  *原型:void srand(unsigned int seed)
此函数,无返回值,参数是unsigned int seed ,就可以把seed设置成随机变化的就可以了。

1
*那么,怎样设置种子呢?下面介绍时间戳的概念!
*在程序中我们一般是使用程序运行的时间作为种子的,因为时间时刻在变化。


  原型:time_t time(time_t timer);
*time 函数会返回当前的⽇历时间,其实返回的是1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值,单位是秒。返回的类型是time_t类型的,time_t 类型本质上其实就是32位或者64位的整型类型。
*time函数的参数 timer 如果是⾮NULL的指针的话,函数也会将这个返回的差值放在timer指向的内存中带回去.
*如果 timer是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。
time函数的时候需要包含头⽂件:time.h



*关于返回值time_t time的说明!
1

*可以这样尝试着写随机数!

测试代码!

1
1

*设置随机数范围!
*生成0~99的随机数
 rand()%100,这个简单理解除以100的余数范围就是0~99.
*生成100~200的随机数!
 100+rand()%101,rand%101的范围是0~100,+100就是范围就是100 ~ 200.
*生成a~b的随机数!
  a+rand()%(b-a+1);

2.游戏实现

*问题描述:写⼀个猜数字游戏
游戏要求:

  1. 电脑⾃动⽣成1~100的随机数
  2. 玩家猜数字,猜数字的过程中,根据猜测数据的⼤⼩给出⼤了或⼩了的反馈,直到猜对,游戏结束!

*这个简单,直接按照逻辑写!

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

void Game()
{
	//随机数
	int rand_nums = rand() % 100 + 1;
	int guess = 0;
	while (1) {
		printf("请猜数字:>");
		scanf("%d", &guess);
		if (guess < rand_nums) {
			printf("猜小了\n");
		}
		else if (guess > rand_nums) {
			printf("猜大了\n");
		}
		else {
			printf("恭喜你,猜中了!你是一个大聪明!\n");
			//猜中之后就结束
			break;
		}
	}
}
int main()
{
	//设置种子
	srand((unsigned int)(time(NULL)));
	int input = 0;
	do {
		Menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch(input){
		case 1:
			Game();
			break;
		case 0:
			break;
		default:
			printf("输入错误,请重新输入!");
		}

	} while (input);
	return 0;
}

  完结!(已经很晚了…)

  
  
  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值