🌟菜鸟主页:@晨非辰的主页

👀学习专栏:《C语言学习》

💪学习阶段:C语言方向初学者

⏳名言欣赏:"编程的核心是实践,而非空谈"


目录

 1. 游戏1--猜数字

1.1 rand函数

1.2 srand函数

1.3 time函数

1.4 设置随机数范围

 1.5 整合实现猜数字游戏

2. 游戏2--关机程序


 前言:学习掌握了前面的分支循环语句的知识,接下来进行综合运用写一个有趣的代码。


 1. 游戏1--猜数字

--游戏要求:

        --电脑自动生成1~100的随机数;        

        --玩家猜数字的过程中,程序根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束;

-在进行编写游时,根据要求先来补充一点知识——如何产生随机数?

1.1 rand函数

--C语⾔提供了⼀个函数叫 rand,这函数用来做生成随机数,原型如下:

int rand(void);

--当然,并不是完全的随机数,称之为"伪随机数"数值范围在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是在大部分编译器上是32767。

--rand函数包含头文件-<stdlib.h>。

--在测试函数时,多运行几次法发现生成的随机数都是一样的(伪),是因为rand函数是对一个叫“种子”(默认1)的基准值进行运算生成的随机数,则像生成真正的随机数就要改变"种子值"。

--如何解决,请继续往下看!

1.2 srand函数

--C语言还提供了函数叫srand,用来初始化随机数的生成器的,scrand的原型如下:

void srand(unsigned int seed);

--在调用rand函数前,先调用srand函数,通过参数seed设置rand生成随机数的"种子值",改变了种子,"伪随机数"也就真正随机了。

--那也就意味着,要生成随机的seed就有需要随机数,这就很矛盾;为了解决矛盾,引入了time函数。

1.3 time函数

--在程序中一般使用程序运行时间作为种子,因为时间时刻变化。

--在c语言中函数叫time,就可以获得这个时间,time函数原型如下:

1.time_t time(time_t* timer);

 --对于时间函数,会返回当前的日历时间,返回类型time_t。

--如果 timer 是NULL,就只返回这个时间的差值。time函数返回的这个时间差也被叫做:时间戳。

--在使用函数时,包含头文件<time.h>;返回时间戳这样写:

1.time(NULL);//调用time函数返回时间戳,这里没有接收返回值

 --生成随机数代码(srand函数不要频繁调用,一次运行的程序中调用一次;):

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{//使用time函数返回时设置种子//srand类型为unsigned,将time返回时强转srand((unsigned int) time(NULL));printf("%d\n", rand());printf("%d\n", rand());printf("%d\n", rand());return 0;
}

 --这样运行后生成的数值就是随机的了。

1.4 设置随机数范围

--生成a~b间的随机数;

a + rand() % (b-a+1);

 1.5 整合实现猜数字游戏

--最终整合-这里涉及到函数定义和调用,不懂的请移步作者另一篇博客.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>//输出菜单
void menu()
{printf("*****************\n");printf("***  1->play  ***\n");printf("***  0->exit  ***\n");printf("*****************\n");
}//设计游戏主题函数void game()
{//生成随机数int r = rand() % 100 + 1;//输入的数值int num = 0;//设置游戏次数int count = 5;printf("猜数字游戏正式开始\n");while (count)//count == 0后结束{printf("\n你还有%d次机会\n", count);printf("请输入数字:");scanf("%d", &num);if (num < r){printf("猜小了\n");}else if (num > r){printf("猜大了\n");}else{printf("恭喜你,猜对了\n");break;}count--;//次数减一}if (count == 0){printf("你的机会用完了,正确答案是:%d\n", r);}
return 0;
}//整合
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;
}

2. 游戏2--关机程序

int main()
{char input[20] = { 0 };system("shutdown -s -t 60");//关机指令;-s设置,-t设计时间while (1){printf("你的电脑将在一分钟后关机,输入:我是猪,可以取消关机\n");scanf("%s", input);//数组名不用取地址,数组名本身就是地址;if (strcmp(input, "我是猪") == 0){system("shutdown -a");//取消关机指令printf("关机程序已关闭\n");break;}}return 0;
}


 --strcmp 函数是用来比较两个字符串是否相等的。strcmp 函数的原型如下:

int strcmp(const char *s1, const char *s2);

--如果两个字符串相等,就返回 0;要是 s1 按字典序小于 s2,返回一个小于 0 的值;若 s1 按字典序大于 s2,则返回一个大于 0 的值。


结语:本篇文章旨在分享利用所学知识设计简单的趣味游戏,喜欢的朋友,给个三连白~,欢迎评论关注,一起来学习吧!

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

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

相关文章

UE5 UI 控件切换器

文章目录分类作用属性分类 面板 作用 可以根据索引切换要显示哪个子UI&#xff0c;可以拥有多个子物体&#xff0c;但是任何时间只能显示一个 属性 在这里指定要显示的UI的索引

scikit-learn 包

文章目录scikit-learn 包核心功能模块案例其他用法**常用功能详解****(1) 分类任务示例&#xff08;SVM&#xff09;****(2) 回归任务示例&#xff08;线性回归&#xff09;****(3) 聚类任务示例&#xff08;K-Means&#xff09;****(4) 特征工程&#xff08;PCA降维&#xff0…

Excel 将数据导入到SQLServer数据库

一般系统上线前期都会导入期初数据&#xff0c;业务人员一般要求你提供一个Excel模板&#xff0c;业务人员根据要求整理数据。SQLServer管理工具是支持批量导入数据的&#xff0c;所以我们可以使用该工具导入期初。Excel格式 第一行为字段1、连接登入的数据库并且选中你需要导入…

剪枝和N皇后在后端项目中的应用

剪枝算法&#xff08;Pruning Algorithm&#xff09; 生活比喻&#xff1a;就像修剪树枝一样&#xff0c;把那些明显不会结果的枝条提前剪掉&#xff0c;节省养分。 在后端项目中的应用场景&#xff1a; 搜索优化&#xff1a;在商品搜索中&#xff0c;如果某个分类下没有符合条…

cocos 2d游戏中多边形碰撞器会触发多次,怎么解决

子弹打到敌机 一发子弹击中&#xff0c;碰撞回调多次执行 我碰撞组件原本是多边形碰撞组件 PolygonCollider2D&#xff0c;我改成盒碰撞组件BoxCollider2D 就好了 用前端的节流方式。或者loading处理逻辑。我测试过了&#xff0c;是可以 本来就是多次啊,设计上貌似就是这样的…

Kubernetes环境中GPU分配异常问题深度分析与解决方案

Kubernetes环境中GPU分配异常问题深度分析与解决方案 一、问题背景与核心矛盾 在基于Kubernetes的DeepStream应用部署中&#xff0c;GPU资源的独占性分配是保障应用性能的关键。本文将围绕一个典型的GPU分配异常问题展开分析&#xff1a;多个请求GPU的容器本应独占各自的GPU&…

Django与模板

我叫补三补四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步今天来讲一讲视图Django与模板文件工作流程模板引擎&#xff1a;主要参与模板渲染的系统。内容源&#xff1a;输入的数据流。比较常见的有数据库、XML文件和用户请求这样的网络数据。模板&#xff1a…

日本上市IT企业|8月25日将在大连举办赴日it招聘会

株式会社GSD的核心战略伙伴贝斯株式会社&#xff0c;将于2025年8月25日在大连香格里拉大酒店商务会议室隆重举办赴日技术人才专场招聘会。本次招聘会面向全国范围内的优秀IT人才&#xff0c;旨在为贝斯株式会社东京本社长期发展招募优质的系统开发与管理人才。招聘计划&#xf…

低功耗设计双目协同画面实现光学变焦内带AI模型

低功耗设计延长续航&#xff0c;集成储能模块保障阴雨天气下的铁塔路线的安全一、智能感知与识别技术 多光谱融合监控结合可见光、红外热成像、激光补光等技术&#xff0c;实现全天候监测。例如&#xff0c;红外热成像可穿透雨雾监测山火隐患&#xff0c;激光补光技术则解决夜间…

datasophon下dolphinscheduler执行脚本出错

执行hive脚本出错&#xff1a; 错误消息&#xff1a; FAILED: RuntimeException Error loading hooks(hive.exec.post.hooks): java.lang.ClassNotFoundException: org.apache.atlas.hive.hook.HiveHookat java.net.URLClassLoader.findClass(URLClassLoader.java:387)at java.…

【Elasticsearch】安全地删除快照仓库、快照

《Elasticsearch 集群》系列&#xff0c;共包含以下文章&#xff1a; 1️⃣ 冷热集群架构2️⃣ 合适的锅炒合适的菜&#xff1a;性能与成本平衡原理公式解析3️⃣ ILM&#xff08;Index Lifecycle Management&#xff09;策略详解4️⃣ Elasticsearch 跨机房部署5️⃣ 快照与恢…

nodejs的npm

1. 什么是 npm&#xff1f; npm&#xff08;Node Package Manager&#xff09; 是 Node.js 的默认包管理工具&#xff0c;用于&#xff1a; 安装和管理依赖&#xff08;第三方库、框架等&#xff09;。运行项目脚本&#xff08;如启动服务、测试、构建等&#xff09;。发布和共…

外网访问内部私有局域网方案,解决运营商只分配内网IP不给公网IP问题

相信不少网友和我一样&#xff0c;为了实现远程控制、NAS访问、组建私有云、摄像头监控之类的需求&#xff0c;把光猫改成了桥接模式&#xff0c;并用自己的路由器拨号、进行端口了映射。本人之前一直用着没啥问题&#xff0c;不过&#xff0c;最近突然出现了无法访问的情况&am…

大模型——上下文工程 (Context Engineering) – 现代 AI 系统的架构基础

上下文工程 (Context Engineering) – 现代 AI 系统的架构基础 最近,AI大神 Andrej Karpathy 在YC的一个演讲《Software in the era of AI 》带火了一个新的概念 Context Engineering,上下文工程,LangChain也于7月2号在官网博客发表以《Context Engineering》为题目的文章(h…

PostgreSQL RelationBuildTupleDesc 分解

/** RelationBuildTupleDesc** Form the relations tuple descriptor from information in* the pg_attribute, pg_attrdef & pg_constraint system catalogs.*///从pg_attribute,pg_attrdef和pg_constraint 获取字段信息以填充relation->rd_att static void //用到的…

在 Alpine Linux 中创建虚拟机时 Cgroup 挂在失败的现象

现象&#xff1a;在 Alpine Linux 中部署 LXD或者incus 服务后&#xff0c;创建 容器或者虚拟机时提示 实例启动失败、退出代码为1&#xff1a;查询启动日志后&#xff0c;发现是 cgroup 挂载失败导致了 container 拉起失败。原因分析&#xff1a;从启动日志上看&#xff0c;是…

让UV管理一切!!!

一、遇到的问题 自己在做AI开发的时候&#xff0c;先用的conda来管理虚拟环境&#xff0c;然后使用pip freeze > reqiurments来打包相关依赖。 优点&#xff0c;conda环境可以让不同的项目有单独的虚拟环境&#xff0c;不会干扰每个项目&#xff0c;还可以多个项目共享一个…

Jmeter使用 - 2

5 参数化 5.1 自定义变量 线程组 --> 配置元件 --> 用户定义的变量 可以自定义变量&#xff0c;通过 ${变量名} 使用 5.2 随机函数 随机数函数 # 生产六位数的随机数字 ${__Random(100000,999999,)} # 生成随机时间: 时间格式yyyy-MM-dd,开始时间,结束时间,设置时区…

部署 Zabbix 企业级分布式监控

目录 一、监控系统的功能概述 1、监控的定义 2、监控的五个层次 &#xff08;1&#xff09;基础设施监控 &#xff08;2&#xff09;系统层监控 &#xff08;3&#xff09;应用层监控 &#xff08;4&#xff09;业务监控 &#xff08;5&#xff09;端用户体验监控 二、…

Silly Tavern 教程②:首次启动与基础设置

本文介绍 Silly Tavern 首次启动后的基础设置&#xff0c;包括语言切换与 AI 后端连接&#xff0c;重点推荐 无需付费即可使用的免费或低成本方案&#xff0c;涵盖 Groq、AI Horde、Gemini 和 OpenRouter。 一、启动 Silly Tavern 并访问界面 完成安装后&#xff0c;执行以下命…