从入门到精通,30天带你学会C++【第十天:猜数游戏】
目录
Everyday English
前言
实战1——猜数游戏
综合指标
游玩方法
代码实现
最终代码
试玩时间
必胜策略
具体演示
结尾
Everyday English
All good things come to those who wait.
时间不负有心人
前言
今天是2024年的第一天,新一年,新气象,新起点,在这也祝愿大家:
工作顺利,身体健康。好好学习,天天向上!
实战1——猜数游戏
综合指标
学了10天左右,是不是很想做一款小游戏,那么今天它来了!
猜数游戏是初学者很好的一个实战项目,下面是它的全面分析:
编程难度:★★
有趣程度:★★
游戏难度:★★★
编程时间:推荐5min~12min
游玩方法
首先电脑会在1-100中随机生成一个整数,玩家需在1-100中猜一个数字,分三种情况讨论。
1.玩家猜的数字>目标数字,电脑说:“大了”
2.玩家猜的数字<目标数字,电脑说:“小了”
3.玩家猜的数字=目标数字,电脑说:“恭喜您,猜对啦!”
这时你可能会问:“这么简单的游戏难度为什么是3颗星呢?”
真相只有一个,那就是:
你只有7次猜的机会!
这下你可能就慌了,啊,100个数呢!就7次哪够啊!!!
到底够不够呢,我们稍后揭晓。
代码实现
原神,启动!Bi----------------
搞错了,重来!
代码,启动!这下对了。
首先,电脑需要随机生成一个1-100以内的整数,我们用key来保存这个随机整数:
srand(time(NULL));
int key=rand()%100+1;
大家可能还不知道随机数是怎么用的,我来教大家一下。程序中的第一行是播随机数种子,也称“播种”,每次生成随机数时带上他就好了。
第二行中的rand就是一个随机函数,我们想一想一个数对100取余,结果只可能是:0,1,2......,99。
可我们想要的是1-100,所以我们可以让每项都加一即可。
接着我们来分析一下如何实现玩家能猜7次数,这里需要用到我们的for循环语句:
for(int i=1;i<=7;i++)
{//当猜的数小于key时//当猜的数大于key时//当猜的数等于key时
}
每循环一次,玩家首先要去猜一个数,我们说的三种情况都可以用简单的if语句实现:
for(int i=1;i<=7;i++)
{int x;cin>>x;//当猜的数小于key时if(x<key){cout<<"小了"<<endl;} //当猜的数大于key时if(x>key){cout<<"大了"<<endl;} //当猜的数等于key时if(x==key){cout<<"恭喜您,猜对啦!"<<endl;}
}
最后加上7次内没猜对的提示语,并把代码拼在一起,得到了以下程序:
#include<bits/stdc++.h>
using namespace std;
int main()
{srand(time(NULL));int key=rand()%100+1;for(int i=1;i<=7;i++){int x;cin>>x;//当猜的数小于key时if(x<key){cout<<"小了"<<endl;} //当猜的数大于key时if(x>key){cout<<"大了"<<endl;} //当猜的数等于key时if(x==key){cout<<"恭喜您,猜对啦!"<<endl;return 0; } }cout<<"7次机会已用完,很遗憾,未猜对!"<<endl;
}
最终代码
当然我们还可以优化一下提示语,便得到了最终代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{cout<<"猜数游戏(1-100)"<<endl;srand(time(NULL));int key=rand()%100+1;for(int i=1;i<=7;i++){int x;cout<<"请输入一个数字:";cin>>x;//当猜的数小于key时if(x<key){cout<<"小了"<<endl;} //当猜的数大于key时if(x>key){cout<<"大了"<<endl;} //当猜的数等于key时if(x==key){cout<<"恭喜您,猜对啦!"<<endl;return 0; } }cout<<"7次机会已用完,很遗憾,未猜对!"<<endl;cout<<"正确数字是:"<<key<<endl;return 0;
}
试玩时间
做完程序大家一定要自己玩一玩看看有没有什么错误。

我的运气有亿点点“好”,大家赶紧去试试吧!
必胜策略
悄悄告诉你,这个游戏也有必胜策略哦!
这个策略有个好听的名字叫——二分法
顾名思义,每次猜区间的一半,那我们先计算一下,利用二分法第一次该猜几呢?
对了是50!如果计算机说小了又该猜几呢?
对了是75!(100-50)÷2+50=75!
注意:除不尽的话四舍五入!
具体演示


所以,如果你想有趣一点,加点运气成分的话,
你可以把猜的次数调成6次,或者更少!
结尾
想不到吧,一个小小的猜数游戏都被我们玩得那么细,如果你不介意的话,能否给我点一个小小的赞或者评论支持一下呢?
最后认识一下,我是爱编程的小芒果,一个爱编程的小学生,我们2024年见!
相关文章:
从入门到精通,30天带你学会C++【第十天:猜数游戏】
目录 Everyday English 前言 实战1——猜数游戏 综合指标 游玩方法 代码实现 最终代码 试玩时间 必胜策略 具体演示 结尾 Everyday English All good things come to those who wait. 时间不负有心人 前言 今天是2024年的第一天,新一年,新…...
使用ASP.NET MiniAPI 调试未匹配请求路径
本文将介绍如何在使用ASP.NET MiniAPI时调试未匹配到的请求路径。我们将详细讨论使用MapFallback方法、中间件等工具来解决此类问题。 1. 引言 ASP.NET MiniAPI是一个轻量级的Web API框架,它可以让我们快速地构建和部署RESTful服务。然而,在开发过程中如…...
数据结构: 位图
位图 概念 用一个bit为来标识数据在不在 功能 节省空间快速查找一个数在不在一个集合中排序 去重求两个集合的交集,并集操作系统中的磁盘标记 简单实现 1.设计思想:一个bit位标识一个数据, 使用char(8bit位)集合来模拟 2.预备工作:a.计算这个数在第几个char b.是这个ch…...
Nginx 反向代理负载均衡
Nginx 反向代理负载均衡 普通的负载均衡软件,如 LVS,其实现的功能只是对请求数据包的转发、传递,从负载均衡下的节点服务器来看,接收到的请求还是来自访问负载均衡器的客户端的真实用户;而反向代理就不一样了…...
SAP FIORI 初步了解
1、对网上存在的部分资料进行收集 一套适合 SAP UI5 开发人员循序渐进的学习教程 SAP Fiori 的学习路线指南 如何根据角色批量激活SAP Fiori服务 关于S/4和Fiori,你必须知道的10件事 SAP Fiori开发教程 SAP FIORI教程 面向ABAP开发人员,SAPUI5 Fiori开发…...
chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆的解决办法
chrome浏览器记录不住网站登录状态,退出后再打开就需要重新登陆,比较繁琐。 解决办法: 1、chrome浏览器右上角三个竖的点,然后进入“设置”(Settings),选择“隐私与安全”(Privacy…...
Linux lpd命令教程:打印服务管理技巧全解析(附实例教程和注意事项)
Linux lpd命令介绍 lpd是Linux操作系统中的一个命令,全称为line printer daemon,其主要职责是管理和控制打印任务。lpd可以接收打印任务请求并将这些请求放入打印任务队列中。当打印机空闲时,lpd会自动将任务队列中的打印请求发送给打印机以…...
利用STM32和可控硅控制220V加热电路
利用STM32和可控硅控制220V加热电路 Chapter1 利用STM32和可控硅控制220V加热电路一、错误原理图二、正确原理图 Chapter2 可控硅驱动芯片MOC3081/3061Chapter3 一个MOC3061的可控硅触发电路的分析Chapter4 可控硅的两种触发方式:移相触发和过零触发1、过零触发2、移…...
在高并发场景下,缓存“雪崩”了怎么办
1. 缓存雪崩的常见原因 缓存“雪崩”是指,因为部分缓存节点不可用,而导致整个缓存系统(甚至是整个服务系统)不可用。缓存“雪崩”主要分为以下两种情况: 因缓存不支持 rehash 而导致的缓存“雪崩”缓存支持 rehash 时…...
本地git服务器的使用
Windows上使用: 首先要在windows开发机上生成密钥: 1.安装git,首先去git官网下载git,https://git-scm.com/downloads,下载.exe格式并安装。 2.从程序目录启动“Git Bash” 3.键入命令:ssh-keygen -t rsa -…...
Mybatis Java API - SqlSessionFactoryBuilder
在MyBatis中,用于与数据库进行交互的主要Java接口是SqlSession。通过这个接口,您可以执行命令、获取映射器并管理事务。稍后我们将更详细地讨论SqlSession本身,但首先我们必须学习如何获取SqlSession的实例。SqlSession是由SqlSessionFactory…...
【动态规划】 LCR 099. 最小路径和
LCR 099. 最小路径和 解题思路 采用动态规划的思路每次搜索都是向上或者向左进行搜索dp(grid, i, j) 的值取决于 dp(grid, i - 1, j) 和 dp(grid, i, j - 1) 返回的值。同时(i,j)到(i - 1,j - 1)有两种方法,所以一定存在重叠子问题设置备忘录Memo存储dp过程中所有…...
【51单片机系列】DS18B20温度传感器扩展实验之设计一个智能温控系统
本文是关于DS18B20温度传感器的一个扩展实验。 文章目录 一、相关元件介绍二、实验分析三、proteus原理图设计四、软件设计 本扩展实验实现的功能:利用DS18B20设计一个智能温度控制系统,具有温度上下限值设定。当温度高于上限值时,电机开启&a…...
2023年年度总结,一个小白的CSDN涨粉历程
前言 滚滚长江东逝水,一去不复返。 转眼间已到2024年节点,时间如滚滚长江水向东奔流不息,在长江消失之前,都不会停歇,也不会回头。人亦如此,不管是生活还是学习,都是不断往前走的过程ÿ…...
2023-12-17 LeetCode每日一题(使用最小花费爬楼梯)
2023-12-17每日一题 一、题目编号 746. 使用最小花费爬楼梯二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你…...
《Webpack5 升级》- Vue2.x 组件库 Webpack3 升 5
前言 基于 Vue2.x 的项目和组件库开发于 2019 年 ,那时对 Webpack 版本没有概念,项目和组件库的版本混乱…有的使用 v3,有的使用 v4… 对于现今 2023 年(或 2024 年)的整个生态环境是不够用的,无法使用较新…...
【7K⭐】Pot:一款开源免费支持跨平台划词翻译和OCR的软件
【7K⭐】Pot:一款开源免费支持跨平台划词翻译和OCR的软件 如果你经常需要阅读英文文档或者图片,你可能会遇到以下问题: 浏览器自带的翻译功能翻译效果不佳,无法对照原文,而且不能翻译图片中的文字翻译插件虽然支持多…...
navicat premium历史版本下载及更新navicat premium15 永久(使用)有效期
1、navicat premium介绍 Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 GaussDB 、OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amaz…...
JAVA进化史: JDK8特性及说明
JDK 8(Java Development Kit 8)是Java平台的一个重大版本,于2014年3月发布。该版本引入了许多令人期待的新特性,其中一些改变了Java语言的面貌,提供了更丰富、灵活和现代的编程体验。以下是JDK 8的一些主要特性&#x…...
vue3基础知识一,安装及使用
一、安装vue3 需要安装node,然后在项目所在目录命令行执行以下代码。 npm create vuelatest 回车后需要配置以下内容。 二、安装所需的依赖包并运行 cd到项目目录,执行以下代码安装依赖包 npm i 运行项目 npm run dev 打开浏览器查看结果 ok&#…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...
