E10.【C语言】练习:编写一个猜数字游戏
目录
1.规则
2.准备
3.游戏代码
1.规则
1.程序生成1-100间的随机数
2.用户猜数字
猜对了:游戏结束
猜错了:程序会告知猜大了或猜小了,继续进行游戏,直到猜对
3.游戏可以一直玩除非退出游戏
2.准备
1.框架:循环结构:do while 先循环(游戏进入主界面)后判断(进行或退出)
2.生成随机数:
#include <stdio.h>
#include <stdlib.h>
int main()
{int random = rand() % 101; // 生成1-100之间的随机数(%101,余数是1-100)printf("%d\n", random);return 0;
}
每次运行结果都是一样的
rand函数会返回一个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的大小是依赖编译器上实现的,但是大部分编译器上是32767,因此要配合time函数才能实现真随机数(真正的随机数的是无法预测下一个值是多少的)
rand函数是对一个叫“种子”的基准值进行运算生成的随机数,之所以前面每次运行程序产生的随机数序列是一样的,那是因为rand函数生成随机数的默认种子是1,如果要生成不同的随机数,就要让种子是变化的
-->用srand来设置种子
#include <stdio.h>
#include <stdlib.h>
int main()
{srand(2);int random = rand() % 101; // 生成1-100之间的随机数(%101,余数是1-100)printf("%d\n", random);return 0;
}
数字3发生变化,但是每次运行结果都是一样的
必须让srand()内的数字发生变化,才能实现真随机数
-->时间戳_百度百科,时间戳在不断变化
time 函数就可以获得这个时间(基于系统维护的内部时钟来计算的),返回值的是1970年1月1日0时0分0秒到现在程序运行时间之间的
差值,单位是秒,类型是time_t,本质上其实就是32位或者64位的整型类型(使用前写#include <time.h>)
time函数原型如下:
time_t time (time_t* timer);
这里不需要指针类型,写成time(NULL);(空指针)即可
但写成srand(time(NULL));会有问题
void srand (1 unsigned int seed);
srand的返回值是unsigned int,time的返回值是time_t,这里要强制类型转换
srand((unsigned int)time(NULL));
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{// 设置随机数生成器,设置随机数的起点//设置随机种子time时间戳,将时间转化为数字,srand();填入不同数字,生成的随机数不同srand((unsigned int)time(NULL));int random = rand() % 101; // 生成1-100之间的随机数(%101,余数是1-100)printf("%d\n", random);return 0;
}
3.游戏代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <time.h>
void menu()//主菜单函数
{printf("**********************************************\n");printf("*******************1.PLAY********************\n");printf("*******************2.EXIT*********************\n");printf("**********************************************\n");printf("请选择:\n");
}
void game()//游戏函数
{printf("请猜数:\n");srand((unsigned int)time(NULL));int random = rand() % 101;//写成rand()%100+1也可以//printf("%d\n", random);//作弊模式:)int guess = 0;while (guess != random){scanf("%d", &guess);if (guess > random)printf("猜大了\n");else if (guess < random)printf("猜小了\n");else{printf("猜对了\n");}}
}
int main()
{int tmp = 0;do{menu();//调用菜单函数scanf("%d", &tmp);switch (tmp){case 2:break;default:{printf("输入错误,重新选择!\n");break;}case 1:{game();break;}}} while (tmp != 2);
}
补充:如果要生成a~b间的随机数(a<b)
random = rand() % (a+1);
上方生成的是0~a的随机数
略作修改:(0+a)~(b-a+a)
random=a + rand()%(b-a+1)相关文章:
E10.【C语言】练习:编写一个猜数字游戏
目录 1.规则 2.准备 3.游戏代码 1.规则 1.程序生成1-100间的随机数 2.用户猜数字 猜对了:游戏结束 猜错了:程序会告知猜大了或猜小了,继续进行游戏,直到猜对 3.游戏可以一直玩除非退出游戏 2.准备 1.框架:循…...
RK3568-rk809rtc休眠唤醒
参考链接 https://www.360doc.cn/article/71858349_1119199262.html修改驱动drivers/mfd/rk808.c static void rk817_shutdown_prepare(void) { int ret; …...
【Uniapp-Vue3】pages.json页面路由globalStyle的属性
项目的全局配置在pages.json中。 一、导航栏设置 二、下拉刷新设置 下拉就可以看到设置的样式 三、上拉触底 这个页面中,向下滑动页面到底部就会输出“到底了” 现在将触底距离设置为500 走到半路就会输出“到底了”...
NHANES数据挖掘|特征变量对死亡率预测的研究设计与分析
书接上回,应各位临床或在科室的小伙伴们需求,除了多组学和算法开发外,插播关于临床护理方向的数据挖掘,今天分享两篇NHANES的分析文献。 1、时依中介分析 DOI: 10.1186/s12933-024-02191-5 整体思路 基于 NHANES 数据…...
【Sharding-JDBC学习】概述_shardingsphere-jdbc 和sharding-jdbc
1.概述 1.1.分库分表是什么 小明是一家初创电商平台的开发人员,他负责卖家模块的功能开发,其中涉及了店铺、商品的相关业务,设计如下 数据库: 通过以下SQL能够获取到商品相关的店铺信息、地理区域信息: SELECT p.*…...
用户登录/登出功能,当登录页面在另一域名下
需求: 要求为某网址增加用户登录功能。登录页面是现成的,但是位于另一个域名。当request 没带token ,要求跳转此登录页面,用户登录后会返回token. 此时再跳回原网址。这个过程如何避免发生跨域问题? 最简单的方案 登…...
自动化解决方案:修复devicedisplaystatusmanager.dll丢失
在Windows操作系统中,DLL(动态链接库)文件扮演着至关重要的角色。它们为应用程序提供必要的函数和数据,以确保系统的平稳运行。然而,有时我们可能会遇到DLL文件丢失或损坏的问题,比如DeviceDisplayStatusMa…...
.Net8 Avalonia跨平台UI框架——<vlc:VideoView>控件播放海康监控、摄像机视频(Windows / Linux)
一、UI效果 二、新建用户控件:VideoViewControl.axaml 需引用:VideoLAN.LibVLC.Windows包 Linux平台需安装:VLC 和 LibVLC (sudo apt-get update、sudo apt-get install vlc libvlccore-dev libvlc-dev) .axaml 代码 注…...
网络协议(八):IP 协议
目录 1. IP 协议简介 2. 首部属性 2.1 版本号 2.2 首部长度 2.3 服务类型 2.4 总长度 2.5 > 16位标识 & 3位标志 & 13位片偏移 2.5.1 > 16 位标识 2.5.2 > 3 位标志 2.5.3 > 13 位片偏移 2.6 生存时间(TTL) 2.7 > 8 位协议 2.8 首部校验和…...
深度解析 pytest 参数化与 --count 执行顺序的奥秘
有这样一个业务场景,登录不同地区的账号,重复500遍,以验证登录功能是否正常。 登录的代码如下,其中login_data是一个fixture,用来组织数据: pytest.mark.parametrize("login_data", [cn_test, …...
【traefik】forwadAuth中间件跨namespace请求的问题
前情提要 - fowardAuth鉴权中间件的使用: 【traefik】使用forwardAuth中间件做网关层的全局鉴权 1. 问题 我的 traefik-ingress-controller 所在 namespace: traefik 业务服务所在 namespace: apps 路由与 forwardAuth 中间件配置如下: # 路由 apiV…...
java学习记录16
并发基础 进程与线程 进程 进程(Process)是计算机中正在运行的程序。程序是一种静态的概念,而进程是程序在执行过程中创建的动态实体。每个进程都有自己的内存空间、代码、数据和资源,它也是操作系统进行任务调度和资源分配的基…...
【Lua学习之旅】之单行/多行注释
Lua的注释 单行注释多行注释 单行注释 lua中的单行注释采用两个短横线"--" --这是lua单行注释多行注释 写法一: --[[ 这个lua的多行注释, 很多资料说多行注释不可以嵌套, 根据我的测试,这种写法的多行注释在lua54版…...
[Effective C++]条款45 运用成员函数模板接受所有兼容类型
本文初发于 “天目中云的小站”,同步转载于此。 条款45 : 运用成员函数模板接受所有兼容类型 本条款中我们将会以智能指针为例, 介绍如何通过成员函数模板使一个模板类可以接受所有兼容类型. 我们先来构建一个简单的继承体系 : class Top { ... }; class Middle: p…...
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能
Harry技术添加存储(minio、aliyun oss)、短信sms(aliyun、模拟)、邮件发送等功能 基于SpringBoot3Vue3前后端分离的Java快速开发框架 项目简介:基于 JDK 17、Spring Boot 3、Spring Security 6、JWT、Redis、Mybatis-P…...
【python基础——异常BUG】
什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…...
解决Qt打印中文字符出现乱码
在 Windows 平台上,默认的控制台编码可能不是 UTF-8,这可能会导致中文字符的显示问题。 下面是在 Qt 应用程序中设置中文字体,并确保控制台输出为 UTF-8 编码: 1. Qt 应用程序代码 在 Qt 中,我们可以使用 QApplic…...
第三十八章 Spring之假如让你来写MVC——适配器篇
Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…...
服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.
服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found. 1. 故障现象2. 解决思路3. 故障分析4. 案件回溯5. 解决问题 1. 故障现象 有一台服务器业务报无法连接. 尝试用Ping命令发现无法ping通. 通过控制台查看发现有以下报错: error: ..…...
昵称 校验
1. 基本格式校验 1. 长度限制 • 设置最小和最大字符长度:2-20 个字符(常见范围)。 • 避免昵称过短或过长影响显示和识别。 • 示例: • 2 ≤ 长度 ≤ 20:let minLength 2 let maxLength 20 if nickname.count <…...
新手也能懂的SSRF漏洞实战:用iwebsec靶场复现文件读取与内网探测
从零开始掌握SSRF漏洞:iwebsec靶场实战指南1. 认识SSRF漏洞的本质想象一下,你正在一家高档餐厅点餐,服务员承诺可以帮你从任何地方获取食材——包括隔壁竞争对手的厨房。SSRF(Server-Side Request Forgery)漏洞就像这个…...
告别虚频困扰:用VASP+DynaPhoPy搞定高温材料声子谱的保姆级教程
高温材料声子谱计算实战:从虚频困境到非谐解决方案 引言:虚频问题的根源与突破路径 在计算材料学领域,声子谱分析是理解材料动力学稳定性和热力学性质的核心手段。然而许多研究者都遭遇过这样的困境:对实验合成的材料进行简谐近似…...
适合地产人用的中介房源管理系统
在房产经纪行业,房源管理与客源管理是经纪人日常工作的核心,直接影响业务效率与成交转化。选择一套适配行业需求的中介房源管理系统,能帮助中介团队规范流程、降低运营成本、大幅提升业绩。今天我们以客观视角,详细解析全房源系统…...
VMware ESXi 9.1.0.0集成NVME+网卡驱动版发布|新特性+驱动集成+部署升级+FAQ全指南
一、ESXi 9.1.0.0 正式版核心新特性 VMware ESXi 9.1.0.0(2026 年 5 月发布)是 vSphere 9.1 核心组件,聚焦硬件兼容扩展、性能跃升、安全加固、运维简化四大方向,重点强化 NVMe 存储与网卡生态适配,以下为关键更新&am…...
Unity3D深度纹理实战:手把手教你实现可交互的激光雷达扫描特效(附完整C#/Shader代码)
Unity3D深度纹理实战:手把手教你实现可交互的激光雷达扫描特效(附完整C#/Shader代码)在科幻题材的游戏开发中,激光雷达扫描特效是营造科技感的经典元素。从《赛博朋克2077》的战术目镜到《看门狗》的环境扫描,这种动态…...
【2025】AWVS安装保姆级教程(最新25.1.2可用)
【2025】AWVS安装保姆级教程(最新25.1.2可用) 文章目录 工具下载Host 重定向AWVS安装AWVS查看安装失败原因 工具下载 点击下载即可 下载完的工具后缀格式为.apk,需要将其改为.zip,然后将其解压得到以下工具后续安装使用 Host 重…...
【DeepSeek灰度发布黄金法则】:20年SRE亲授7步零故障上线实战框架
更多请点击: https://intelliparadigm.com 第一章:DeepSeek灰度发布策略全景图 DeepSeek模型服务的灰度发布并非简单的流量切分,而是一套融合可观测性、渐进式验证与多维熔断机制的工程化闭环体系。其核心目标是在保障线上推理稳定性的同时&…...
【2026实测】怎么提高论文原创度?盘点8款主流降AI工具,附结构级优化指南
写文章最怕碰到什么,是辛辛苦苦自己码出来的字,却被标了极高的AI值。目前很多文本审核机制对内容的原创度要求极高,纯手写的初稿也可能因为句式太工整被判定为机器生成的。 为了帮几个快被这事折腾疯了的学弟学妹找条出路,我花了…...
基于Arduino Uno与MQ-2传感器的智能气体检测报警系统DIY全攻略
1. 项目概述与核心思路最近在捣鼓家里的智能安防,琢磨着能不能自己做一个成本可控、反应灵敏的气体检测报警装置。市面上成品烟雾报警器虽然成熟,但要么功能单一,要么价格不菲,而且很难根据自己的需求进行定制化调整,比…...
将deepseek v4 pro集成到codex桌面APP中使用
📕我是廖志伟,一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)、《解密程序员的思维密码——沟通、演讲、思考的实践》作者、清华大学出版社签约作家、Java领域…...
