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 <…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...