猜数字游戏的实现,包含随机数的使用方法

猜数字游戏

题目内容:
用C语言实现一个猜数字游戏。
进入程序,先打印菜单给出提示,1.玩游戏,0.退出程序。当输入0的时候,退出程序。输入1,则继续,然后随机产生一个数字,输入数字猜这个数字的大小,直到猜中这个数字。当你输入的这个数字小于这个随机数,提示猜小了,当你输入数字大于这个随机数,则提示猜大了。直到猜中这个随机数,输出恭喜你猜中了,并结束程序。
具体实现:

#define _CRT_SECURE_NO_WARNINGS 1
//猜数字游戏的实现
#include <stdio.h>
#include <stdlib.h>
void menu()
{
	printf("*******************************\n");
	printf("********    1 .play    ********\n");
	printf("********    0 .exit    ********\n");
	printf("*******************************\n");
}
void game()
{
	int random_num = rand() % 100 + 1;//产生一个随机数用rand函数
	int input = 0;
	printf("%d", random_num);//为了方便猜,可以将这个随机数打印出来
	while (1)
	{
		printf("请输入你猜的数字:\n");
		scanf("%d", &input);
		if (input > random_num)
		{
			printf("猜大了\n");
		}
		else if (input<random_num)
		{
			printf("猜小了\n");

		}
		else
		{
			printf("恭喜你,猜中了\n");
		}		
	}
}

int main()
{
	int input = 0;
	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);//输出为0,即终止循环

	return 0;
}

进入程序,先给出提示:
输入0,直接结束程序:在这里插入图片描述
输入1,进入程序
并打印出这个随机数在这里插入图片描述
猜数字:
在这里插入图片描述
如果猜的次数多了,会发现产生的随机数,会一直是一个数(我这里就一直是42),这样很容易就猜到了,这样的解决办法如下:
加入以下代码,并使用#include<time.h>的头文件

srand((unsigned)time(NULL));

time_t time(time_t *time);该函数返回自计算机计时的某个时刻起到现在所过去的秒数。
一般是返回自1970年1月1日00:00:00以来,到调用函数的时刻所累积的秒数。
srand((unsigned)time(NULL));
这语句的含义就是以自1970年1月1日00:00:00以来,到调用函数的时刻所累积的秒数作为
产生随机数算法的种子seed。
没有语句会对程序产生什么影响:
如果在程序运行时没有自主设置种子的话,用函数rand产生的随机数序列会是一样的。
而用srand设置随机数种子后,可能产生不同的随机序列

如下:3次的随机数不同:
在这里插入图片描述
这里除了随机数,还有do…while循环,这个循环是不管怎样都会先走一次,走完在判定while中的循环条件,如果满足再走,不满足就结束。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无赖H4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值