[C语言]——分支和循环(4)
目录
一.随机数生成
1.rand
2.srand
3.time
4.设置随机数的范围
猜数字游戏实现
一.随机数生成
要想完成猜数字游戏,⾸先得产⽣随机数,那怎么产生随机数呢?
1.rand
C语言提供了⼀个函数叫 rand,这函数是可以生成随机数的,函数原型如下所示:
int rand (void);
rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。
rand函数的使用需要包含⼀个头文件是:stdlib.h
那我们就测试⼀下rand函数,这⾥多调⽤⼏次,产⽣5个随机数:
#include <stdio.h>
#include <stdlib.h>
int main()
{printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());return 0;
}

int=rand(2)
int=rand(3)
int=rand(4)
......
2.srand
C语言中又提供了⼀个函数叫 srand,用来初始化随机数的生成器的,srand的原型如下:
void srand (unsigned int seed)
3.time
time_t time (time_t* timer); //VS2022 上time_t类型的说明
#ifndef _CRT_NO_TIME_T#ifdef _USE_32BIT_TIME_Ttypedef __time32_t time_t;#elsetypedef __time64_t time_t;#endif
#endiftypedef long __time32_t;
typedef __int64 __time64_t time(NULL);//调⽤time函数返回时间戳,这⾥没有接收返回值 #include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{//使⽤time函数的返回值设置种⼦//因为srand的参数是unsigned int类型,我们将time函数的返回值强制类型转换srand((unsigned int)time(NULL)); //放主函数只执行一次printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());return 0;
} 
(注:截图只是当时程序运行的结果,你的运行结果不⼀定和这个⼀样)
4.设置随机数的范围
rand() %100;//余数的范围是0~99 rand()%100+1;//%100的余数是0~99,0~99的数字+1,范围是1~100 100 + rand()%(200-100+1)//余数的范围是0~100,加100后就是100~200 a + rand()%(b-a+1) 二.猜数字游戏实现
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game()
{int r = rand()%100+1;int guess= 0;while(1){printf("请猜数字>:");scanf("%d", &guess);if(guess < r){printf("猜⼩了\n");}else if(guess > r){printf("猜⼤了\n");}else{printf("恭喜你,猜对了\n");break;}}
}
void menu()
{printf("***********************\n");printf("****** 1. play ******\n");printf("****** 0. exit ******\n");printf("***********************\n");
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch(input){case 1:game();break;case 0:printf("游戏结束\n");break;default:printf("选择错误,重新选择\n");break;}}while(input);return 0;
} #include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game()
{int r = rand() % 100 + 1;int guess = 0;int count = 5;while (count) //=0跳出循环{printf("\n你还有%d次机会\n", count);printf("请猜数字>:");scanf("%d", &guess);if (guess < r){printf("猜⼩了\n");}else if (guess > r){printf("猜⼤了\n");}else{printf("恭喜你,猜对了\n");break;}count--;}if (count == 0){printf("你失败了,正确值是:%d\n", r);}
}
void menu()
{printf("***********************\n");printf("****** 1. play ******\n");printf("****** 0. exit ******\n");printf("***********************\n");
}
int main()
{int input = 0;srand((unsigned int)time(NULL));do{menu();printf("请选择:>");scanf("%d", &input);switch (input){case 1:game();break;case 0:printf("游戏结束\n");break;default:printf("选择错误,重新选择\n");break;}} while (input);return 0;
} 相关文章:
[C语言]——分支和循环(4)
目录 一.随机数生成 1.rand 2.srand 3.time 4.设置随机数的范围 猜数字游戏实现 写⼀个猜数字游戏 游戏要求: (1)电脑自动生成1~100的随机数 (2)玩家猜数字,猜数字的过程中,根据猜测数据的⼤…...
【LeetCode】392. 判断子序列(简单)——代码随想录算法训练营Day54
题目链接:392. 判断子序列 题目描述 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"…...
1. Typescript入门
TS 基础 Typescript 在线编译平台 基础类型 boolean、number 和 string 类型 boolean let isHandsome: boolean true赋值与定义的不一致,会报错,静态类型语言的优势就体现出来了,可以帮助我们提前发现代码中的错误。 let isHandsome: …...
【Git】merge时报错:refusing to merge unrelated histories
文章目录 一、问题二、解决办法1、将feature分支的东西追加到master分支中2、将feature里的东西直接覆盖到master分支中 一、问题 今天将feature分支合并到master时报错:refusing to merge unrelated histories(拒绝合并无关历史) 报错原因&…...
树状数组+离散化求逆序对超详细讲解!
树状数组离散化求逆序对 用一个数组 w [ ] w[] w[]来记录遍历到当前数时,每个数出现的次数 由于只关心每个数前边有多少个数比他大,遍历到 i i i时,求大于 a [ i ] a[i] a[i]的数有多少个,就是对 [ a [ i ] , n ] [a[i], n] [a[i…...
《解密云计算:企业之选》
前言 在当今数字化时代,企业面临着巨大的数据处理压力和信息化需求,传统的IT架构已经无法满足日益增长的业务需求。在这样的背景下,越来越多的企业开始转向云计算,以实现灵活、高效和可扩展的IT资源管理和利用。 云计算 云计算是…...
地址分词 | EXCEL批量进行地址分词,标准化为十一级地址
一 需求 物流需要对用户输入地址进行检查,受用户录入习惯地址可能存在多种问题。 地址标准化是基于地址引擎和地址大数据模型,自动将地址信息标准化为省、市、区市县、街镇、小区、楼栋、单元、楼层、房屋、房间等元素,补充层级缺失数据、构建…...
KubeSphere平台安装系列之二【Linux单节点部署KubeSphere】(2/3)
**《KubeSphere平台安装系列》** 【Kubernetes上安装KubeSphere(亲测–实操完整版)】(1/3) 【Linux单节点部署KubeSphere】(2/3) 【Linux多节点部署KubeSphere】(3/3) **《KubeS…...
网络安全: Kali Linux 使用 docker-compose 部署 openvas
目录 一、实验 1.环境 2.Kali Linux 安装docker与docker-compose 3.Kali Linux 使用docker-compose方式部署 openvas 4. KaliLinux 使用openvas 二、问题 1. 信息安全漏洞库 2.信息安全漏洞共享平台 3.Windows 更新指南与查询 4.CVE 查询 5.docker-compose 如何修改o…...
【学习考试心得】在誉天学习考试RHCE9.0的体验
作为华中第一位参加RHCE9.0线上考试的考生,很荣幸能来写这个心得,和大家分享一下线上的考试的一些体验。 一、学习体验 首先在红帽课程的学习中,跟着杨峰老师的脚步,整个学习过程中都非常有意思。杨峰老师充满磁性的声音和小王老师…...
Flip Clock(not good)
最近体验了一下iOS的翻页时钟app,很想自己做一个,但是效果不好 public class main {public static void main(String[] args) {//psvmnew MyFrame();} }import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; im…...
目标检测——摩托车头盔检测数据集
一、简介 首先,摩托车作为一种交通工具,具有高速、开放和稳定性差的特点,其事故发生率高,伤亡率排在机动车辆损伤的首位。因此,摩托车乘员头盔对于保护驾乘人员头部安全至关重要。在驾乘突发状况、人体受冲击时&#…...
Windows 安装 Xinference
Windows 安装 Xinference 0. 引言1. 创建虚拟环境2. 安装 pytorch3. 安装 llama_cpp_python4. 安装 chatglm-cpp5. 安装 Xinference6. 设置 model 路径7. 启动 Xinference8. 查看 Cluster Information 0. 引言 Xorbits Inference(Xinference)是一个性能…...
静态时序分析:SDC约束命令set_case_analysis详解
相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 目录 指定值 指定端口/引脚列表 简单使用 set_case_analysis命令用于对电路进行特定模式的设定,例如对于一个工作在正常模式下的芯片,…...
C++ · 代码笔记4 ·继承与派生
目录 前言010继承与派生简单例程020多级继承030使用using关键词更改访问权限040隐藏050派生类与基类成员函数同名时不构成重载060使用多级继承展示成员变量在内存中的分布情况071派生类在函数头调用基类构造函数072构造函数调用顺序080构造函数与析构函数的调用顺序091多重继承…...
解决uni-app中使用webview键盘弹起遮挡input输入框问题
这个平平无奇的回答,可能是全网最靠谱的解决方案。 这里我用的是vue3 setup .vue文件的方式 <view> <web-view :fullscreen"false" :webview-styles"{top: statusBarHeight40,height:height,progress: {color: green,height:1px } }"…...
Java注解介绍
Java注解 注解介绍元注解RetentionTargetDocumentedInherited接口类测试结果 注解介绍 Java注解(Annotation)是一种元数据(Metadata)的形式,它可以被添加到Java代码中的类、方法、变量、参数等元素上,以提…...
万字详解,Java实现低配版线程池
文章目录 1.什么是线程池2.线程池的优势3.原理4.代码编写4.1 阻塞队列4.2 ThreadPool线程池4.3 Worker工作线程4.4 代码测试 5. 拒绝策略5.1 抽象Reject接口5.2 BlockingQueue新增tryPut方法5.3 修改ThreadPool的execute方法5.4 ThreadPool线程池构造函数修改5.5 拒绝策略实现1…...
挂耳式蓝牙耳机哪家的好用?购买耳机前必须了解的几大要点
随着健康意识的提升,越来越多的人开始热衷于运动。运动不仅能够增强体质,对于我们这些忙碌的上班族而言,它也是一种极佳的减压方式。经过一天的辛勤工作,能够在户外跑步,让汗水带走压力,实在是一种享受。在…...
CSS文本属性
CSS文本属性 1.文本颜色2.文本间距3. 文本修饰4 .文本缩进5.文本对齐_水平6.行高7. vertical-align 1.文本颜色 属性名:color作用:控制文字的颜色。可选值: 颜色名rgb或rgbaHEX或HEXA (十六进制)HSL或HSLA 开发中常用…...
从《新概念英语》Lesson 10 看技术圈:为什么我们总在“脚刹”和“手刹”之间争论不休?
技术社区的“脚刹与手刹之争”:当工具辩论吞噬创新精神 深夜的GitHub评论区闪烁着刺眼的蓝光,几十条消息在React与Vue的对比帖下快速滚动。有人贴出最新的性能基准测试图表,另一位立即反驳测试条件不公允。第三位参与者突然插入:&…...
3步彻底告别激活烦恼:KMS_VL_ALL_AIO智能激活方案实战指南
3步彻底告别激活烦恼:KMS_VL_ALL_AIO智能激活方案实战指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否还在为Windows和Office的激活问题而烦恼?每次重装系统都…...
Dify医疗环境零信任配置全图解:从患者ID加密到API网关mTLS双向认证,含12个生产级YAML模板
第一章:Dify医疗安全配置的合规基线与威胁建模在医疗AI应用落地过程中,Dify平台的安全配置必须严格遵循《GB/T 35273—2020 信息安全技术 个人信息安全规范》《HIPAA Security Rule》及《医疗器械软件注册审查指导原则》等多维合规要求。合规基线并非静态…...
Mac新手必看:用Homebrew一键搞定Netcat安装,顺便聊聊这个‘瑞士军刀’能干啥
Mac新手玩转Netcat:从Homebrew安装到实战应用全指南 第一次听说Netcat时,我正盯着终端发呆,琢磨着怎么快速测试某个服务器端口是否开放。同事轻描淡写地说了句:"用nc啊,网络瑞士军刀"。后来才发现࿰…...
NVIDIA白嫖攻略:3分钟拿到H100算力,6个大模型随便用!
最近很多朋友都在问我,NVIDIA那个免费的H100算力到底能不能用?怎么申请?会不会很快就没用了?这篇文章手把手教你搞定!📝 写在前面 最近AI圈最大的瓜,就是英伟达居然把价值3万美元一张的H100显卡…...
从ESMM到MMoE:当推荐系统多目标‘闹矛盾’时,Google的‘多门控专家’怎么当和事佬?
从ESMM到MMoE:多任务学习模型如何化解推荐系统的目标冲突 推荐系统发展到今天,早已不再是简单的点击率预测工具。当我们需要同时优化点击率、转化率、观看时长、互动率等多个指标时,单任务学习模型就显得力不从心了。这就像让一个厨师同时做川…...
python passlib
# 聊聊 Python 里的密码管理工具:Passlib 在 Python 项目里处理用户密码,是件需要格外小心的事。密码不能明文存储,得加密,但加密的方式又有很多种,选错了或者用错了,都可能留下安全隐患。这些年࿰…...
2025届学术党必备的五大AI辅助论文神器实测分析
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下,人工智能生成内容越来越普及,好多用户面临着内容会被AI检测工…...
C/C++面试八股文精讲:从指针到网络编程的实战要点
1. 指针:C/C的灵魂操作 指针是C/C最核心也最让初学者头疼的概念。我当年第一次接触指针时,完全不明白这个"地址"到底有什么用。直到后来做图像处理项目时,需要直接操作内存中的像素数据,才真正体会到指针的强大。 指针变…...
Qt6实战:手把手教你打造一个带阴影和毛玻璃效果的自定义标题栏(附完整源码)
Qt6现代化UI实战:打造高颜值自定义标题栏的完整指南 在桌面应用开发中,标题栏作为用户与窗口交互的第一触点,其视觉体验直接影响产品的专业度。传统系统默认标题栏往往风格陈旧,与现代化设计语言格格不入。本文将带你从零实现一个…...
