当前位置: 首页 > news >正文

【C++】猜数字小游戏

写一个简单的C++程序,用于实现一个猜数字游戏。

要求:

生成一个1到100之间的随机数,并让玩家猜测这个数是什么。如果玩家的猜测不正确,程序会提示猜测过大或过小,直到玩家猜对为止。

要点:

  1. _CRT_SECURE_NO_WARNINGS 是一个宏定义,用于在Visual Studio中禁用关于不安全函数的警告。这是因为在 <iostream> 和 <ctime> 中使用的某些函数,在更安全的版本(如 _s 前缀的函数)可用,但在这里为了简单起见,使用了旧版本。

  2. #include<ctime> 是为了使用 time 函数,该函数用于获取当前系统时间,以作为随机数生成器的种子。

  3. srand((unsigned int)time(NULL)); 初始化随机数生成器。每次程序运行时,都会使用当前时间作为种子,这样每次生成的随机数序列就不同。

  4. rand() % 100 + 1; 生成一个1到100之间的随机数。

  5. 程序使用 while (1) 创建一个无限循环,玩家每次猜测后,都会根据输入的值与随机数比较,给出相应的提示。

  6. 在读取输入之前,应该检查 cin 的状态,以确保输入有效。如果输入不是一个整数,cin 将进入错误状态,并且之后的输入将不会读取。
  7. 可以增加更多的用户交互,比如提示用户输入他们的猜测。
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
#include<ctime>int main() 
{// 添加随机数种子,利用当前系统时间生成随机数,防止每次随机数都一样srand((unsigned int)time(NULL));// 1. 生成随机数int num = rand() % 100 + 1;//cout << num << endl; // 为了游戏公平性,不应该在这里输出随机数int val = 0;int attempts = 0;cout << "猜一个1到100之间的数字:" << endl;// 2. 玩家进行猜测while (true){cin >> val;// 检查输入流的状态if (cin.fail()) {cin.clear(); // 清除错误标志cin.ignore(numeric_limits<streamsize>::max(), '\n'); // 忽略错误输入cout << "请输入一个有效的数字。" << endl;continue;}attempts++;// 3. 判断玩家的猜测if (val > num) {cout << "猜测过大,请再次尝试:" << endl;}else if (val < num) {cout << "猜测过小,请再次尝试:" << endl;}else{cout << "恭喜你,猜对了!你总共猜测了 " << attempts << " 次。" << endl;break;}}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Hotohiko Sakamoto算法,以及用其计算星期几【算法 15】
  • Vue 中阻止点击事件穿透
  • Arcgis实现面空间位置从东至西从南至北排序
  • Matlab simulink建模与仿真 第十四章(信号输出库)
  • 梯度计算中的一些算子
  • Go语言错误处理详解
  • 【AIGC】Kolors:快手开源的文生图大模型
  • WebGL系列教程九(动画)
  • Mysql SqlServer 分页
  • 【算法】BFS—解开密码锁的最少次数
  • 简单说说MySQL中 SELECT 语句执行流程
  • 优化器与现有网络模型的修改
  • 软件编程随想
  • 内存dump文件分析
  • STM32--基于PWM的呼吸灯实验
  • Angular 2 DI - IoC DI - 1
  • ES6语法详解(一)
  • extjs4学习之配置
  • Java应用性能调优
  • linux学习笔记
  • Linux中的硬链接与软链接
  • mysql外键的使用
  • nginx 负载服务器优化
  • Python爬虫--- 1.3 BS4库的解析器
  • sublime配置文件
  • underscore源码剖析之整体架构
  • vue.js框架原理浅析
  • 大型网站性能监测、分析与优化常见问题QA
  • 基于axios的vue插件,让http请求更简单
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 盘点那些不知名却常用的 Git 操作
  • 正则与JS中的正则
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (0)Nginx 功能特性
  • (2015)JS ES6 必知的十个 特性
  • (LLM) 很笨
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (第61天)多租户架构(CDB/PDB)
  • (二十四)Flask之flask-session组件
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)大道至简,职场上做人做事做管理
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .Net Core 微服务之Consul(三)-KV存储分布式锁
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net Memory Profiler的使用举例
  • .Net 高效开发之不可错过的实用工具
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET框架设计—常被忽视的C#设计技巧
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @RequestBody与@ModelAttribute
  • [\u4e00-\u9fa5] //匹配中文字符