C语言猜数字游戏

目录:

一.打印一个菜单

二.生成随机数

三.猜数字(猜1~100中的一个随机数)

四.详细过程

一.打印一个菜单

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

二.生成随机数

这里引出rand函数,rand函数是专门用来生成随机数的,

其返回的是0~RAND_MAX(32767)之间的一个随机数。

但是我们发现光用rand函数,每一次调试后打开都是一样的数字,这样游戏就不能长期玩了。

这时就需要用到srand函数,来设置随机数生成起点

srand(0);

用了srand函数后又发现,你如果想要随机数,就得放进去一个随机数,不然都是一样的数字。C语言猜数字游戏_第1张图片
这不是搞笑吗?
这时又想到了“时间戳
C语言中time函数会传来时间戳

srand((unsigned int)time(NULL));//NULL就是0,是空指针


用了时间戳后,又发现,
如果两次按的比较快,发现数字太相近了

但是srand函数只需要调用一次就行了,而我们猜数字游戏用到了循环,所以,放进main函数就行,数字就不会相近了。

记得我们要生成的1~100的随机数

int ret=rand()%100+1;

三.猜数字

	while (1)
	{
		printf("猜数字:\n");
		scanf("%d", &num);
		if (num < ret)
		{
			printf("猜小了\n\n");
		}
		else if (num == ret)
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
		else if (num > ret)
		{
			printf("猜大了\n\n");
		}
	}
}

四.详细过程

#include
#include
#include

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


void game()
{
	//1.生成随机数

	//2.猜数字
	while (1)
	{
		printf("猜数字:\n");
		scanf("%d", &num);
		if (num < ret)
		{
			printf("猜小了\n\n");
		}
		else if (num == ret)
		{
			printf("恭喜你,猜对了!\n");
			break;
		}
		else if (num > ret)
		{
			printf("猜大了\n\n");
		}
	}
}



int main()
{//打印一个菜单
	int input = 0;
	srand((unsigned int)time(NULL));
	printf("来玩猜数字游戏吧!\n");
	do
	{
		menu();
		printf("请选择:\n");
		scanf("%d", &input);
		switch(input)
		{
		case 1:
			game();//game 函数中是猜数字的整个逻辑
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,请重新选择\n");
			break;
		}
	} while (input);
	return 0;
}

你可能感兴趣的:(c语言)