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;}elseprintf("你故意输错是吧,呵男人\n");goto again;
}

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【黑产攻防道04】利用pow工作量证明降低黑产的破解效率

上一期我们提到&#xff0c;黑产有三种常见的破解方式&#xff1a; 1.通过识别出验证码图片答案实现批量破解验证&#xff0c;即图片答案识别&#xff1b; 2.在了解通讯流程之后直接携带相关参数发请求&#xff0c;即协议破解&#xff1b; 3.使用各种客户端模拟器来模拟真人…

分享72个Python爬虫源码总有一个是你想要的

分享72个Python爬虫源码总有一个是你想要的 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 链接&#xff1a;https://pan.baidu.com/s/1v2P4l5R6KT2Ul-oe2SF8cw?pwd6666 提取码&#xff1a;6666 项目名称 10 photo websites…

盘点2023 | 校企合作结硕果,产教融合谱新篇

回首2023&#xff0c;电巢科技与众多高校建立了紧密的合作关系&#xff0c;以实习就业为导向&#xff0c;帮助学生打开技术和产业视野&#xff0c;提前做好职业发展规划&#xff0c;按照电子行业的企业用人标准&#xff0c;帮助高校进行“人才前置化”培养&#xff0c;并且持续…

如何使用ArcGIS Pro自动矢量化建筑

相信你在使用ArcGIS Pro的时候已经发现了一个问题&#xff0c;那就是ArcGIS Pro没有ArcScan&#xff0c;在ArcGIS Pro中&#xff0c;Esri确实已经移除了ArcScan&#xff0c;没有了ArcScan我们如何自动矢量化地图&#xff0c;从地图中提取建筑等要素呢&#xff0c;这里为大家介绍…

一文详解Cookie以及Selenium自动获取Cookie

前言 以后数据获取途径以及数据资产绝对会是未来核心要素生产工具和资源之一&#xff0c;每个大模型都离不开更加精细化数据的二次喂养训练。不过现在来看收集大量数据的方法还是有很多途径的&#xff0c;有些垂直领域的专业数据是很难获取得到的&#xff0c;靠人力去搜寻相当…

【滑动窗口】【二分查找】C++算法:和至少为 K 的最短子数组

作者推荐 动态规划 多源路径 字典树 LeetCode2977:转换字符串的最小成本 本题涉及知识点 滑动窗口 有序向量 二分查找 LeetCode862:和至少为 K 的最短子数组 给你一个整数数组 nums 和一个整数 k &#xff0c;找出 nums 中和至少为 k 的 最短非空子数组 &#xff0c;并返回…

安装 PyQt5 保姆级教程

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 博主之前做应用层开发用的一直是 Qt&#xff0c;这次尝试一下在 python 中使用 Pyqt5 模块来开发 UI 界面&#xff0c;这里做一些…

[电磁学]大学物理陈秉乾老师课程笔记

主页有博主其他上万字的精品笔记,都在不断完善ing~ 第一讲 绪论,库仑定律 主要讲解了电磁学中的库伦定律和电场的相关概念&#xff0c;介绍了电荷和电磁相互作用的规律&#xff0c;并讲解了电场强度和电势的概念。 03:14 &#x1f393; 库伦定律&#xff1a;电势能与电荷的关…

通过学习这些技巧,让你的Python代码更加简洁和高效

文章目录 前言列表性能陷阱陷阱一陷阱二 快速合并字典通过有序字典去重最后Python技术资源分享1、Python所有方向的学习路线2、学习软件3、入门学习视频4、实战案例5、清华编程大佬出品《漫画看学Python》6、Python副业兼职与全职路线 前言 今天看到一些关于容器的使用技巧&am…

Transformer各模块结构详解(附图)

前言&#xff1a;基于TRANSFORMER的结构在视觉领域是承上启下的作用。刚接触会比较难&#xff0c;上的话需要对RNN&#xff0c;LSTM&#xff0c;ATTENTION先有初步的了解。下的话需要学习VIT&#xff0c;GPT&#xff0c;DETR等结构先了解TRANSFORMER都是必要的。 参考&#xff…

阿里云2核2G3M轻量应用服务器又降了1块钱?

阿里云和腾讯云怎么了&#xff1f;之前轻量应用服务器2核2G3M配置阿里云降价到63元一年&#xff0c;同款配置的腾讯云轻量应用服务器2核2G3M配置降价为62元一年&#xff0c;现在阿里云这台云服务器又降价了&#xff0c;现在是61元一年&#xff0c;真无语&#xff0c;阿腾云aten…

IP地址SSL证书

IP地址SSL证书是一种专门针对公网IP地址颁发的数字证书。与常规的域名SSL证书类似&#xff0c;其主要目标是提供数据加密和身份验证。以下几点概述了IP地址SSL证书的重要特性及其申请过程&#xff1a; 1. 保护直接IP访问&#xff1a; 当用户直接通过IP地址访问服务时&#xff…