猜数字小游戏

游戏要求

  1.  电脑自动生成1-100的随机数
  2. 猜数字过程中,根据猜测数据的大小,反馈猜测数据是大了还是小了,猜对便反馈猜对了,有6次机会。

随机数生成

rand();//生成随机数

srand();//初始化随机数的生成器

time();//获取时间戳

rand()

        int rand(void);

        rand()可以生成随机数,但是返回的是伪随机数,范围在0-RAND_MAX(大部分是32767))之间。

        需包含头文件:stdlib.h

        伪随机数不是真正的随机数,rand()函数是对一个“种子”的基准值进行运算生成的随机数,因为默认种子是1,所以每次运行产生的随机数序列一样,是无法产生真正的随机数。

srand()

void srand(unsigned int seed);

        如果要生成不同的随机数就要让种子变化。

        srand()是用来初始化随机数的生成器。在调用rand()前调用srand(),通过srand()的seed参数来设置rand()函数生成随机数时的种子,只要种子变化,每次随机数序列就会变化。

time()

        time_t time (time_t* timer);

        time()函数会返回当前日历时间,返回的时1970-1-1-0-0到程序运行时间之间的差值,单位是秒。类型是time_t类型,32位或者64位的整型类型。要包含头文件:time.h

        time()参数timer如果是非NULL的指针的话,函数会将这个返回的差值放在timer指向的内存中带回去。

        timer是NULL时只会返回这个时间的差值,叫做:时间戳。

        可写成:

    time(NULL);

        生成随机数的代码写成:

srand((unsignes int)time(NULL));//只需调用一次

//需要将time()转换为(unsigned int)类型

rand();

        设置随机数的范围

        0-99之间:

rand() % 100;

        1-100之间:

     rand() % 100 + 1;

        生成a-b的范围:

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

猜数字游戏实现

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void meun() {
	printf("***********************\n");
	printf("******* 1. play *******\n");
	printf("******* 0. exit *******\n");
	printf("***********************\n");
}
void game() {
	//随机生成随机数
	int r = rand() % 100 + 1;
	int guess = 0;
	int count = 6;
	while (count) {
		printf("还有%d次机会,请猜数字->",count);
		scanf("%d", &guess);
		if (guess < r) {
			printf("猜小了!再猜猜\n");
		}
		else if(guess > r){
			printf("猜大了!再猜猜\n");

		}
		else {
			printf("恭喜你!对咯!\n");
			break;
		}
		count--;
	}
	if (count == 0) {
		printf("次数耗尽,失败咯,正确答案是%d",r);
	}

}

int main() {
	int input = 0;
	//srand()设置种子
	//以时间戳为种子,才可令随机数变化,只调用一次
	srand((unsigned int)time(NULL));
	meun();
	do{
		printf("请选择->");
		scanf("%d", &input);
		switch (input) {
		case 0:
			printf("游戏结束\n");
			break;
		case 1:
			printf("准备好咯!猜数字游戏开始!\n");
			game();
			break;
		default:
			printf("输入错误再输一次吧");
			break;
		}
	} while (input);
		
	
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值