[c语言】------简单的猜数字游戏

1,目的

 写这个c语言的猜数字游戏,主要是为了加深一些知识点的理解,同时巩固这些知识点。

1.1 生成随机数

生成随机数使用rand(),不需要传入参数,生成的随机数的范围是[0,32767].需要注意的是,生成的随机数是伪随机数,它们按照一个预定义的算法生成,并且在每次程序运行时以相同的顺序重复。因此需要在使用rand之前,使用srand获取一个随机种子,参数是一个unsigned int,解决掉顺序重复的问题。

1.2时间戳

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。使用time函数可以产生时间戳,参数是一个指针,可以使用NULL表示空指针。

1.3rand和srand

在实现猜数字游戏时,不能把srand放在循环里面,如果将srand((unsigned int)time(NULL));放在循环内部,由于循环的迭代速度非常快,可能在同一秒内执行多次。在这种情况下,time(NULL)返回的值可能是相同的,导致随机数发生器被相同的种子值重新初始化。

2,代码

# include<stdio.h>
# include<stdlib.h>
#include<time.h>

void menu()
{
	printf("############################\n");
	printf("####### 1.play  0.exit #####\n");
	printf("############################\n");

}
void play()
{
	int res = rand() % 100 + 1;
	int sum = 0;
	while (1)
	{
		printf("请输入猜的数字;\n");
		scanf("%d", &sum);

		if (sum < res)
		{
			printf("猜小了\n");
		}
		else if (sum > res)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了\n");
			break;
		}

	}
}

int main()
{
	RAND_MAX;
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请输入选项\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			play();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误\n");
			break;
		}
		

	} while (input);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/2201_75443644/article/details/131131532