猜数字C语言小游戏

void main()
{
	srand((unsigned int)time(NULL));
	int input;
	do
	{
		printf("##*********************##\n");
		printf("##*****请输入1开始游戏**##\n");
		printf("##*****请输入0退出游戏***##\n");
		printf(">");
		scanf("%d",&input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏!!\n");
			break;
		default :
			printf("输入错误!!!\n");
			break;
		}

	} while (input);
}

这里主要用到了do-while循环,只要while循环的条件不为0,则一直循环下去。因为我们猜数字不可能只玩一局,所以只要不退出游戏(输入0),就一直猜,直到退出游戏为止。

void game()
{
	int ret;
	int guess;
	ret= rand()%100+1;
	while (1)
	{
		printf("猜猜数字:>");
		scanf("%d",&guess);
		if (ret > guess)
		{
			printf("你猜小了\n");
		}
		else if (ret < guess)
		{
			printf("你猜大了\n");
		}
		else 
		{
			printf("恭喜你猜对了\n");
			break;
		}
	}
}

上面是编写的game()函数,应为是猜数字,所以我们用系统里的rand()函数,它执行返回后会随机返回一个数,但是是固定的,是伪随机数,大家可以试着输出rand()函数内容,反复执行程序后从头开始就又会一样。RAND_MAX的16进制是7FFF,换算成十进制也还是很大一个数字,所以为了好猜,选定数字范围是1-100;对随机数除100求余,余数最大也就99,所以+1,才是从1-100。

同理,要想1-30,对随机数除30求余+1就是。为了防止程序重新开始和上次一样。所以我想到一个办法是用时间戳。

时间戳是一组数字,它对应一个时间,而我们的时间是时刻发生变化的,然后这里我们就用到srand();rand也是根据srand()生成随机数的。这里用到的时间函数是time();只要我们运行主程序,它就一直会改变。rand()和srand()函数头文件是"stdlib.h",time()函数头文件是"time.h"。不加会报错。

猜数字也讲究技巧:我们可以用二分法来猜,例如,我们先猜50,如果偏大,就猜25,还是偏大就猜12,一半半的猜会比随便猜更快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值