C语言rand函数,srand函数,time函数实现随机数,及猜数字小游戏

怀心之所爱,奔赴山河

前言

最近在复习c的知识,想起之前写过一个猜数字小游戏,所以今天就把自己关于随机数的使用经验分享一下,希望对大家有帮助。

一.rand函数

1.函数的声明如下

可以看到,返回值是int类型,不需要传参,需要调用头文件<stdlib.h>

他会产生一个伪随机数,我们暂将其成为a,a大于等于0且小于等于RADN_MAX

(在大多数编译器下他是32767)。

2.举例

int a=rand()%100;

则a的值是0到99,那我们怎么得到1到100呢?

方法:int a=rand()%100+1;

二srand函数

我们发现,在使用rand()函数时每次运行代码随机值都不变,为什么呢,

我们去搜搜他的相关信息就会发现这一句话

翻译:rand函数返回在0到RAND_MAX范围内的伪随机整数。在调用rand之前,请使用srand函数对伪随机数生成器进行种子初始化。

这里提到了一个名词“种子”,你可以把它理解为创建随机数的基准,不同的种子对应不同的随机数组,默认种子为1,因此我们想实现随机数就要用到不同的种子,那就要用srand函数了

函数定义:

ok可以发现,函数没有返回值,传参类型是unsigned int,头文件是<stdlib.h>

调用它可以为rand设置一个种子,即你传的参数。

3.time函数

为了使种子一直变化我们要引入时间戳了。

时间戳是当前时间与1970年1月1日0时0分0秒的差值,单位是秒,

time函数的声明如下:

time_t   time(time* p);

time_t是32位或64位下的整形

若传入的指针不是空指针则返回值会被存入,若是空指针则函数只返回值,这个值就是时间戳。

综上,我们就可以写出随机数了

srand((unsigned int)time(NULL));
	int a = rand() % 100;

猜数字游戏:

为了让它更像游戏,我们可以给他做个菜单,并用函数封装一下

void menu()
{
	printf("###########################\n");
	printf("########## 开始游戏 ########\n");
	printf("###########################\n");
}

接着创建变量,使用随机数

int count = 10;
	int C = count;
	srand((unsigned int)time(NULL));
	int a = rand() % 100;
int b;

我们规定她输入的数比那个随机数大了,我们就说猜大了

比随机数小就说猜小了

在她成功猜出后告诉他猜了几次猜出来的

在做个小小的惩罚机制,如果超过10次则电脑关机

这里要用到关机指令

system("shutdown -s -t 5");

代码如下

menu();
		printf("你要猜的数大于等于0小于100\n");
		int n;
		while (1)
		{
			scanf("%d", &n);
			if (n == a) {
				count--;
				printf("好好好,用了%d次猜对了\n", C - count);
				count = 5;
				goto again;
			}
			else if (n > a) {
				count--;
				if (!count)
				{
					printf("你的电脑会在5秒后关机\n");
				system("shutdown -s -t 5");
			}
				printf("猜大了,小黑子!就剩%d次了\n", count);
			}
			else
			{
				count--;
				if (!count)
				{
					printf("你的电脑会在5秒后关机\n");
					system("shutdown -s -t 5");
				}

				printf("猜小了,行不行啊小趴菜!就剩%d次了\n", count);

			}
		}

最后,让用户选择是继续玩还是停止

用if else即可

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
void menu()
{
	printf("###########################\n");
	printf("########## 开始游戏 ########\n");
	printf("###########################\n");
}
int main()
{
	int count = 10;
	int C = count;
	srand((unsigned int)time(NULL));
	int a = rand() % 100;
int b;
again:
	printf("玩游戏输入1  不玩输入0\n");
	scanf("%d", &b);
	if (b == 1)
	{
		menu();
		printf("你要猜的数大于等于0小于100\n");
		int n;
		while (1)
		{
			scanf("%d", &n);
			if (n == a) {
				count--;
				printf("好好好,用了%d次猜对了\n", C - count);
				count = 5;
				goto again;
			}
			else if (n > a) {
				count--;
				if (!count)
				{
					printf("你的电脑会在5秒后关机\n");
				system("shutdown -s -t 5");
			}
				printf("猜大了,小黑子!就剩%d次了\n", count);
			}
			else
			{
				count--;
				if (!count)
				{
					printf("你的电脑会在5秒后关机\n");
					system("shutdown -s -t 5");
				}

				printf("猜小了,行不行啊小趴菜!就剩%d次了\n", count);

			}
		}
	}
	else if (b == 0)
	{
		printf("哥哥这莫好玩的的游戏居然不玩,我emo了\n");
		return 0;
	}
	else
		printf("你故意输错是吧,呵男人\n");
	goto again;
}

ok,可以自己试试写写,然后把代码发给朋友让他挑战一下

感觉有用的话就点个赞支持一下吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/278676.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图&#xff1f; "图搜图"指的是通过图像搜索的一种方法&#xff0c;用户可以通过上传一张图片&#xff0c;搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字&#xff0c;而是通过比较图片的视…

认识微服务---Spring Cloud

一、服务架构演变 1、单体架构&#xff1a;将业务的所有功能集中在一个项目开发&#xff0c;打包成一个部署。 优点&#xff1a; 架构简单部署成本低 缺点&#xff1a; 耦合度高不利于大型项目开发 2、分布式架构 &#xff1a;根据业务功能对系统进行拆分&#xff0c;每个…

自检服务器,无需服务器、不用编程。

自检服务器&#xff0c;无需服务器、不用编程。 大家好&#xff0c;我是JavaPub. 这几年自媒体原来热&#xff0c;很多人都知道了个人 IP 的重要性。连一个搞中医的朋友都要要做一个自己的网站&#xff0c;而且不想学编程、还不想花 RMB 租云服务。 老读者都知道&#xff0c…

Android : 使用GestureOverlayView进行手势识别—简单应用

示例图&#xff1a; GestureOverlayView介绍&#xff1a; GestureOverlayView 是 Android 开发中用于识别和显示手势的视图组件。它允许用户在屏幕上绘制手势&#xff0c;并且应用程序可以检测和响应这些手势。以下是关于 GestureOverlayView 的主要特点&#xff1a; 手势识别…

OpenHarmony南向之Camera简述

Camera驱动框架 该驱动框架模型内部分为三层&#xff0c;依次为HDI实现层、框架层和设备适配层&#xff1a; HDI实现层&#xff1a;实现OHOS&#xff08;OpenHarmony Operation System&#xff09;相机标准南向接口。框架层&#xff1a;对接HDI实现层的控制、流的转发&#x…

无需翻墙|Stable Diffusion WebUI 安装|AI绘画

前言 最近终于有机会从围墙里往外看&#xff0c;了解到外面的世界已经有了天翻地覆的变化&#xff0c;感叹万千&#xff0c;笔者在本地mac&#xff0c;windows&#xff0c;linux&#xff0c;docker部署了不下20遍后&#xff0c;整理出来的linux极简避坑安装方案&#xff0c;供…

[Angular] 笔记 19:路由参数

油管视频 Route Parameters 路由参数是跟在 url 后面的数字&#xff0c;字符串&#xff0c;或者 数字字符串&#xff0c;例如如下 url 中的 123&#xff0c;此类参数会传给后端&#xff1a; www.facebook.com/profile/123 首先将 pokemon-template-form 组件移到 pokeman-ba…

Unity Meta Quest 一体机开发(十二):【手势追踪】Poke 交互 - 用手指点击由 3D 物体制作的 UI 按钮

文章目录 &#x1f4d5;教程说明&#x1f4d5;给玩家配置 HandPokeInteractor&#x1f4d5;用 3D 物体制作可以被点击的 UI 按钮⭐搭建物体层级⭐给物体添加脚本⭐为脚本变量赋值 &#x1f4d5;模仿官方样例按钮的样式&#x1f4d5;在按钮上添加文字&#x1f4d5;修改按钮图片 …

计算机网络 VLAN

路由器将多个局域网连接起来&#xff0c;而交换机将一个局域网里的设备连接起来。 路由器的端口分配局域网的网段&#xff08;子网网段&#xff09;&#xff0c;局域网的内部设备的ip都在这个网段里&#xff0c;再由交换机将数据派发到目的设备&#xff0c;交换机是按照MAC地址…

【Spark精讲】一文讲透SparkSQL物理执行计划

SparkSQL整体计划生成流程 大体分三步&#xff1a; (1)由 SparkSqlParser 中的 AstBuilder执行节点访问&#xff0c;将语法树的各种Context节点转换成对应的 LogicalPlan 节点&#xff0c;从而成为一棵未解析的逻辑算子树(Unresolved LogicalPlan)&#xff0c;此时的逻辑算子树…

k8s之kudeadm

kubeadm来快速的搭建一个k8s的集群&#xff1a; 二进制搭建适合大集群&#xff0c;50台以上主机 kubeadm更适合中小企业的业务集群 master&#xff1a;192.168.233.91 docker kubelet lubeadm kubectl flannel node1:192.168.233.92 docker kubelet lubeadm kubectl flannel…

vscode连接linux服务器

目录 下载vscode&#xff0c;这是微软开源软件&#xff0c;打开后到下载扩展页面 在下载扩展页面下载中文和ssh远程连接扩展 安装后会在左边新生成一个图标点击齿轮 选择第一个 配置连接信息 远程隧道右边刷新&#xff0c;等刷出来hostname的主机后 连接ip出来后&#x…

EasyNTS端口穿透服务新版本发布 0.8.7 增加隧道流量总数记录,可以知晓设备哪个端口耗费流量了

EasyNTS上云平台可通过远程访问内网应用&#xff0c;包含网络桥接、云端运维、视频直播等功能&#xff0c;极大地解决了现场无固定IP、端口不开放、系统权限不开放等问题。平台可提供一站式上云服务&#xff0c;提供直播上云、设备上云、业务上云、运维上云服务&#xff0c;承上…

云计算:OpenStack 配置云主机实例的存储挂载并实现外网互通

目录 一、实验 1. 环境 2.配置存储挂载 3.云主机实例连接外部网络&#xff08;SNAT&#xff09; 4.外部网络连接云主机实例&#xff08;DNAT&#xff09; 二、问题 1.云主机 ping 不通外部网络 2.nova list 查看云主机列表报错 3.nova list 与 virsh list --all有何区…

jvm实战之-常用jvm命令的使用

各命令的使用 JMAP 1、查看内存信息&#xff0c;对象实例数、对象占有大小 jmap -histo 进程号>./log.txt2、查看堆的配置信息和使用情况 jmap - heap 进程号3、将堆的快照信息dump下来&#xff0c;使用java自带的jvisualvm.exe打开分析 jmap -dump:formatb,filedump.h…

安装Windows版本沐神的autocut

参考 下载完autocut以后 1 下载ffmpeg

楼宇智慧能源消耗监测管理系统,楼宇中的能源“管家”

随着人口的增加&#xff0c;楼宇数据呈上涨趋势&#xff0c;但是楼宇智能建设在我国普及性远远不足&#xff0c;相比传统楼宇控制&#xff0c;智能楼宇控制系统对于楼宇内部的用电设备控制&#xff0c;能够更加的节约能源&#xff0c;降低成本。对于现代化楼宇而言&#xff0c;…

SVM(支持向量机)-机器学习

支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种用于分类和回归分析的监督学习算法。它属于机器学习中的一类强大而灵活的模型&#xff0c;广泛应用于模式识别、图像分类、自然语言处理等领域。 基本原理: SVM的基本原理是通过找到能够有效分…

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库&#xff08;直接访问/phpmyadmin 即可&#xff09; 3.修改数据库文件/conf/db.php 里的数据库连接信息&#xff08;请勿使用记事本…

数据结构入门到入土——ArrayList与顺序表

目录 一&#xff0c;线性表 二&#xff0c;顺序表 1.接口实现 三&#xff0c;ArrayList简介 四&#xff0c;ArrayList使用 1.ArrayList的构造 2.ArrayList常见操作 3.ArrayList的遍历 4.ArrayList的扩容机制 五&#xff0c;ArrayLisit的具体使用 杨辉三角 一&#x…