猜数字游戏的C语言代码

猜数字游戏的基本流程:

1.系统随机产生0~100的随机整数,然后我们来猜是哪个数字

2.如果猜错了,会提示是猜大了还是猜小了

3.猜完一轮后,如果没玩过瘾,可以选择是否继续进行下一轮

     

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



void manu()//打印菜单
{
	printf("*****************************\n");
	printf("********  1.play  ***********\n");
	printf("********  2.exit  ***********\n");
	printf("*****************************\n");
}
void game()//游戏
{
	/*首先是要知道如何产生随机的数字,需要用到三种函数。rand函数,srand函数,
time函数。这些函数需要头文件。
	rand函数产生的是伪随机数,rand函数是对一个叫“种子”的基准值进行运算生成的
随机数,默认的种子是 1。只要改变种子,就可以产生真正的随机数。
	这时候就需要引入srand函数,srand是用来初始化随机数的生成器的。其原型为: 
void srand(unsigned int seed);要改变seed就需要引入time函数。
time函数的基本形式为:time_t time(time_t* timer);time函数会返回当前的
日历时间,其实返回的是1970年1月1日0时9分0秒到现在程序运行时间之间的差值。返回
的类型是time_t,其本质上其实是32位或者64位的整型类型。如果timer是NULL(NULL是
空指针的意思,本质是0),就只会返回这个时间的差值。
time函数返回的这个时间差也叫做:时间戳。*/

	int r = 0;
	r = rand() % 101;//产生随机数,接下来的程序进行猜想
	while (1)
	{
		int guess = 0;
		scanf("%d", &guess);
		if (r < guess)
			printf("猜大了,请重新选择\n");
		else if (r > guess)
			printf("猜小了,请重新选择\n");
			
		else
		{
			printf("猜对了,随机数为%d\n", guess);
			break;//若猜对了,跳出循环
		}
		
	}
	
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//生成随机数之前需要调用srand来设置随机数的生成起点,srand只需要调用一次就可以了。
	do
	{
		manu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
		{
			printf("游戏开始,请猜数字:>");
			game();//玩游戏的函数
			break;//玩完一把后,再重新选择是否继续游戏
		}
		case 0:
		
			printf("退出游戏\n");
			break;
		default:
		
			printf("输入错误,请重新选择\n");
			break;
		
			
		}
		
	} while (input);//如果输入0,则代表整个游戏结束
	



		return 0;
}

第二种游戏规则,就是有次数限制,超过这几次,则游戏失败。

代码如下:需要引入一个变量,count

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



void manu()//打印菜单
{
	printf("*****************************\n");
	printf("********  1.play  ***********\n");
	printf("********  2.exit  ***********\n");
	printf("*****************************\n");
}
void game()//游戏
{
	/*首先是要知道如何产生随机的数字,需要用到三种函数。rand函数,srand函数,time函数。这些函数需要头文件。
	rand函数产生的是伪随机数,rand函数是对一个叫“种子”的基准值进行运算生成的随机数,默认的种子是 1。只要改变种子,就可以产生真正的随机数。
	这时候就需要引入srand函数,srand是用来初始化随机数的生成器的。其原型为: void srand(unsigned int seed);要改变seed就需要引入time函数。
	time函数的基本形式为:time_t time(time_t* timer);time函数会返回当前的日历时间,其实返回的是1970年1月1日0时9分0秒到现在程序运行时间之间的
	差值。返回的类型是time_t,其本质上其实是32位或者64位的整型类型。如果timer是NULL(NULL是空指针的意思,本质是0),就只会返回这个时间的差值。
	time函数返回的这个时间差也叫做:时间戳。*/
	int r = 0;
	r = rand() % 101;//产生随机数,接下来的程序进行猜想
	int count = 5;
	while (count)
	{
		int guess = 0;
		scanf("%d", &guess);
		if (r < guess)
		{
			printf("猜大了,请重新选择,你还有%d次机会\n",count-1);
			count--;
		}
		else if (r > guess)
		{
			printf("猜小了,请重新选择,你还有%d次机会\n",count-1);
			count--;
		}
		else
		{
			printf("猜对了,随机数为%d\n", guess);
			break;//若猜对了,跳出循环
		}
		
	}
	if (count == 0)
		printf("机会用完,游戏失败\n");
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//生成随机数之前需要调用srand来设置随机数的生成起点,srand只需要调用一次就可以了。
	do
	{
		manu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
		{
			printf("游戏开始,请猜数字:>");
			game();//玩游戏的函数
			break;//玩完一把后,再重新选择是否继续游戏
		}
		case 0:
		
			printf("退出游戏\n");
			break;
		default:
		
			printf("输入错误,请重新选择\n");
			break;
		
			
		}
		
	} while (input);//如果输入0,则代表整个游戏结束
	



		return 0;
}

补充解析:

因为要产生0~100的随机数,而rand产生的随机数是0~32767,所以要%101,取余数,余数就是0~100之间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值