【C语言】实现猜数字游戏——随机数

这篇具有很好参考价值的文章主要介绍了【C语言】实现猜数字游戏——随机数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🚩纸上得来终觉浅, 绝知此事要躬行。
🌟主页:June-Frost
🚀专栏:C语言

该篇将对 选择与循环语句 进行运用,实现猜数字游戏

需求:游戏后可以选择再次进行游戏,也可以选择退出。

⭐️ 大概实现思路:
【C语言】实现猜数字游戏——随机数


基本框架:
选择是否玩游戏

循环部分用do while循环来实现。

#include<stdio.h>
void menu()
{
	printf("******************************\n");
	printf("******** 1.play  0.exit ******\n");
	printf("******************************\n");
}

int main()
{

	int input = 0;
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("猜数字游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入非法,请重新输入\n");
		}
	} while (input);
	return 0;
}

游戏部分:

💫生成随机数
rand函数可以生成一个随机数
【C语言】实现猜数字游戏——随机数
该函数可以返回一个伪随机数 0 ~ RAND_MAX
【C语言】实现猜数字游戏——随机数
也是可以返回一个 0 ~ 32767 的一个数字。
若是直接使用会在过程中发现一些问题。
例如:第一次调用:
【C语言】实现猜数字游戏——随机数
第二次调用:
【C语言】实现猜数字游戏——随机数
通过上述例子,可以发现在每次运行中确实是随机的,但是下一次运行的时候,和上次完全一样,说明这样使用时错误的。

所以在调用rand函数之前要调用srand来初始化一个随机数的生成起点。
【C语言】实现猜数字游戏——随机数
srand函数:
【C语言】实现猜数字游戏——随机数
但是如何使用呢?
【C语言】实现猜数字游戏——随机数【C语言】实现猜数字游戏——随机数

可以发现,生成的数值与srand的参数有很大的关系,只要srand的值在变,生成的随机数就在变,所以我们可以给srand传一个在不断变化的值,也就是时间戳。
【C语言】实现猜数字游戏——随机数
time_t是一个宏定义,vs2022 是long long类型。
所以我们这样使用:
第一次运行:
【C语言】实现猜数字游戏——随机数
第二次运行:
【C语言】实现猜数字游戏——随机数
这样就可以成功的生成随机数了。
但是需要注意:srand函数在整个工程调用一次即可,没有必要一生成随机数就初始化起点。


了解了随机数的生成就可以写出游戏部分了

void game()
{
	int num = rand() % 100 + 1;//产生 1~100的数字
	int guess = 0;
	while (1)//猜不对继续猜测
	{
		printf("请猜测数字:>");
		scanf("%d", &guess);
		if (guess > num)
		{
			printf("猜大了\n");
		}
		else if(guess < num)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你猜对了\n");
			break;
		}
	}
}

完整的代码:文章来源地址https://www.toymoban.com/news/detail-454429.html

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
	printf("******************************\n");
	printf("******** 1.play  0.exit ******\n");
	printf("******************************\n");
}

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

int main()
{
	srand((unsigned int)time(NULL));
	int input = 0;
	do
	{
		menu();
		printf("请选择:>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("猜数字游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("输入非法,请重新输入\n");
		}
	} while (input);
	return 0;
}

到了这里,关于【C语言】实现猜数字游戏——随机数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言rand()函数产生随机数详解

    rand函数的原型: rand函数的功能: 用来产生一个随机数 rand函数的界限: stdlib.h头文件中有宏#define RAND_MAX 0x7fff,这表示rand产生一个0-0x7fff的随机数,即最大是32767的一个数 rand函数获取随机数的基础用法为: a是一个整数,返回值为0到a的随机数,包含0,但不包含a。 如果想要

    2024年02月06日
    浏览(43)
  • 你知道C语言中随机数是如何生成的吗~?

    目录 1.你听说过函数rand的吗? 2.引入srand函数~ 3.time函数的使用~ 4.随机数的实现! 5. 如何控制随机数的范围呢~ 6.这时候我们就可以写出一些比较有趣的代码啦~  7.对我们说的一些话~                            不是每个人都能做自己想做的事,成为自己想成为的人。  

    2024年02月22日
    浏览(42)
  • C语言生成随机数【简易抽卡代码为例】

    本文将详细解释如何在C语言中生成随机数,并介绍应用的小技巧 c语言生成一个真正的随机数需要用到三个函数: rand()、srand()和time()。 函数介绍 头文件 : #includestdlib.h 函数声明 : int rand(void) 作用 ; 生成一个伪随机数序列,随机数取值范围是0~RAND_MAX PS - RAND_MAX其实是一个宏

    2024年02月04日
    浏览(49)
  • C语言随机数生成和范围设置详解【超详细教程】

    本文详细介绍了C语言中如何使用rand函数生成随机数以及利用srand函数设置随机数的种子,同时解释了如何控制随机数的范围。适合初学者学习和实践。

    2024年02月05日
    浏览(48)
  • C语言中随机数的生成(rand函数和srand函数)

    CSDN话题挑战赛第2期 参赛话题:学习笔记 学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢? 目录 一.rand函

    2024年02月04日
    浏览(41)
  • C语言随机数的产生(rand、srand、time函数细节讲解)

    先上代码,再详细解释: 我们先来查询下rand函数 网站旧版我放在这儿,可以查询库函数等https://legacy.cplusplus.com/reference/cstring/strcat/ rand函数的头文件是stdlib.h。 rand函数无需传参数,返回类型是一个伪随机的整数范围是0到RAND_MAX。那这个RAND_MAX所对应的值是多少呢?我们同样

    2024年02月08日
    浏览(49)
  • 基于FPGA的LFSR16位伪随机数产生算法实现,可以配置不同的随机数种子和改生成多项式,包含testbench

    目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.完整算法代码文件 vivado2019.2仿真结果如下:           LFSR(线性反馈移位寄存器)提供了一种在微控制器上快速生成非序列数字列表的简单方法。生成伪随机数只需要右移操作和 XOR 操作。LFSR 完全由其多项式

    2024年02月11日
    浏览(42)
  • R语言【base】——.Random.seed(),RNGkind(),RNGversion(),set.seed():随机数生成器

    Package  base  version 4.2.0 .Random.seed是一个整数向量,包含R中生成随机数的随机数生成器(RNG)状态。它可以保存和恢复,但不应该被用户更改。 RNGkind是一个更友好的接口,用于查询或设置正在使用的RNG类型。 RNGversion在早期的R版本中可以用来设置随机生成器(为了再现性)。 set

    2024年02月22日
    浏览(52)
  • Verilog 实现伪随机数生成器(线性反馈移位寄存器)

    参考文献1 不简单的进行移位,而是在移位的基础上加上异或门,如题目所示,这就相当于每进行一次移位,寄存器中的值会发生改变,一直移动,一直改变,就形成了伪随机数。

    2024年02月09日
    浏览(56)
  • iOS MT19937随机数生成,结合AES-CBC加密算法实现。

    按处理顺序说明: 1. 生成随机数序列字符串函数 生成方法MT19937,初始种子seed,利用C++库方法,生成: 2. 对第一部中的随机数序列字符串进行sha256加密,得到64字节的一个数据流函数。  3. AES-CBC加密解密方法 /*     CCCrypt方法提供了CBC 和 ECB 两种AES加密模式,     如果不传

    2024年04月09日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包