【C语言】猜数字游戏

本文介绍了C语言中的rand()函数生成伪随机数的基本用法,强调了使用srand()设置随机数种子的重要性,并通过time()函数获取当前时间作为种子,实现在游戏中的随机数生成。
摘要由CSDN通过智能技术生成

目录

1. rand

2. srand

3.time

游戏实现


1. rand

        stdlib.h提供一个生成随机数函数:rand,原型如下:

        int rand (void);

        rand返回伪随机数,范围在0~RANG_MAX,RANG_MAX取决于编译器,一般为32767。

        #include <stdio.h>
        #include <stdlib.h>
        int main(){
         printf("%d\n", rand());
         printf("%d\n", rand());
         printf("%d\n", rand());
         printf("%d\n", rand());
         printf("%d\n", rand());
         return 0;
        }
第一次运行结果
第二次运行结果

       

        运行后不难发现随了个寂寞。因为rand函数生成随机数的默认种子是1。要生成不同的随机数,就要让种子变化。

2. srand

        srand,顾名思义seed+rand,可以设置随机数种子,原型如下:

        void srand (unsigned int seed);

        调用 rand 函数前先调用srand 函数,通过 srand 函数的参数seed来设置rand函数种子,每次生成成的随机数序列随之变化。

        那么接下来的问题就是如何随机种子。

3.time

        时间时刻变化,因此可以用时间作种子。

        time.h提供一个获取时间的函数time,原型如下:

        time_t time (time_t* timer);

        time返回当前程序运行时间与1970年1月1日0时0分0秒的差值,单位为秒。time函数的参数 timer 若是非NULL指针,函数会将这个返回的差值放在timer指向的内存中。仅返回时间戳可以这样写:

        time(NULL);

游戏实现

        

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game(){
	int r = rand() % 100 + 1;//生成1~100之间的随机数
	int guess = 0;
	int count = 5;
	while (count){
		printf("\n你还有%d次机会\n", count);
		printf("请猜数字(≧o≦) ");
		scanf("%d", &guess);
		if (guess < r){
			printf("猜小了/(^o^)\\\n");
		}
		
		else if (guess > r){
			printf("猜大了\\(^o^)/\n");
		}
		else{
			printf("恭喜你,猜对了o(≧▽≦)o\n");
			break;
		}
		count--;
	}
	if (count == 0){
		printf("你失败了,正确值是:%d(*^o^*)\n", r);
	}
}
void menu(){
	printf("***********************\n");
	printf("****** 1. play ********\n");
	printf("****** 0. exit ********\n");
	printf("***********************\n");
}
int main(){
	int input = 0;
	srand((unsigned int)time(NULL));//srand参数是unsigned int类型
	do{                             //使用time函数的返回值设置种子
		menu();
		printf("请选择 (≧o≦):");	
		scanf("%d", &input);
		switch (input){
		case 1:
			game();
			break;
		case 0:
			printf("游戏结束(^_^)\n");
			break;
		default:
			printf("选择错误,重新选择(TAT)\n");
			break;
		}
	} while (input);
	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值