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

基于c语言的union、字符串、格式化输入输出

结构体之共用体union

共用体也叫联合体,其关键词为union

与结构体不同的是,共用体所开辟的存储空间仅仅为其中最长类型变量的存储空间而不是全部变量的存储空间,由于同一内存单元在同一时间内只能存放其中一种的数据类型,因此在每一瞬间起作用的成员就是最后一次被赋值的成员,正因为如此,所以共用体不能同时对所有成员初始化,只能对第一个成员进行初始化,除此之外,共用体不能进行比较操作,也不能够作为函数参数。

在结构体与共用体二者之间的套用之中,经过我个人的写题经验发现,在共用体之中不能够使用string变量,不知道是什么原因,一旦定义string变量于其中,就会发现编译出错

共用体常被用来分支情况的描绘

例题链接

教师 or 学生

解题思路

姓名性别职业
班级职称

本题的解题思想就是因为在职业方面进行选择之后会有两个分支

一是班级分支二是职称分支,因班级与职称为二选一的关系,可以在结构体数组里面套用共用体实现

字符串

有时对于字符串的操作会让我们很头疼

 在c的学习当中,我们在用字符型数组时,面对一维的输入输出问题尚且不大

但是面对二维的字符型数组的输入输出就会十分头疼

我们会难以判断什么时候该用getchar();来吸收空格消除影响什么时候不该用

这是c++中的一个类型字符串string就简便了许多

c++STL库中的函数也为相应的字符串的操作提供了巨大的便利

头文件#include <string>或者#include <string.h>或者#include <cstring>均可

现在我们来介绍几个写竞赛题时常用的以及我们在完成学校oj平台是巨好用的函数

1.substr

在对于获得单词的操作时,我们有许多种方法,可以使用手打判断的空串叠加(更为保险),也可以直接使用substr函数进行操作,例如当我们对一个字符串进行双指针操作之后,头指针指向某一单词前的空格,尾指针指向了那个单词的末尾后的空格,我们就可以定义一个空串,结构substr截取的字符串(即为那个单词)

string t = substr(i+1,j-i+1);

即截取完毕,而后我们就可以创立一个字符串数组对于存储的单词们进行下一步操作

常用的substr函数还有删除功能

例如你究竟有几个HMM (25 分)之中对于好妹妹(hmm)进行删除的操作

当然对于所要删除的flag标志出现在字符串末尾时,我们可以用substr直接截取

 很显然name.size()=11,flag.size()=3,得知name.size()-flag.size()是等于8的

所以截取结果从0开始的8位字符为zhuyijin,此类功能为截取操作

当参数只有一个时,为截除前n个字符的操作

 截除name的flag位数,name更新为zhuyijin

总结:

当substr仅仅有两个参数时a.substr(起始下标,终止下标);

可使用substr截取a串中的起始下标至终止下标之间的元素

当substr仅有一个参数时a.substr(n);

可使用substr删除a串中的前n个字符

2.insert

insert又称为插入操作

设字符串s1,s2;

若有两个参数a.insert(所插入下标idx,s2);

即为在s1串下标idx的元素后面插入s2串

若有四个参数a.insert(idx,s2,i,j);

即为在s1串下标为idx的元素后面插入s2串的下标从i到j的所有元素

3.字符串的追加操作

string类型相比于字符数组来说非常方便,不必使用strcat追加,仅仅使用字符串相加就可以

设字符串s1,s2,在s1串后追加s2,使用s1=s1+s2;即可

3.erase

设有字符串s

s.erase(i,j);删除s串当中从下标i至j的所有元素

4.replace

设有字符串s1,s2

s1.replace(m,n,s2,i,j);

在s1串m-n位置替换为s2串的i-j位置的元素

5.find

查找元素,可以查找单个字符或者字符串

设有字符串s1,s2和字符c

s1.find(s2);即为在s1串中寻找s2串第一次出现的位置,需要用一个整型变量接收

s1.find(c);即为在s1串中寻找字符c第一次出现的位置,需要用一个整型变量接收

s1.rfind(s2);即为在s1串中寻找s2串最后一次出现的位置,需要用一个整型变量接收

s1.rfind(c);即为在s1串中寻找字符c最后一次出现的位置,需要用一个整型变量接收

天梯赛l1级别的一道经典题目可以用到以上知识点供实践

小明打字 (15 分)

格式化输入输出

在使用printf过程之中

在%与格式符直接加上数字n(整数)表示右对齐,数据占n列,若想左对齐则将n改为负值

控制输出位数,在格式符之前加上数字表示输出几位

在使用scanf过程之中

可以使用抑制符*来抑制所读取的数据

例如2022-3-30,我们想要从中得到year,month,day的值

我们可以使用scanf("%4d%*c%2d%*c%2d",&year,&month,&day);轻而易举的完成

注意在使用scanf输入字符串时,不再字符串名前加取地址符&

常用日期计算  

闰年的判断方法

if((year%4==0&&year%100!=0)||(year%400==0))

今天由于天梯赛训练,没有复习太多

相关文章:

基于c语言的union、字符串、格式化输入输出

结构体之共用体union 共用体也叫联合体&#xff0c;其关键词为union 与结构体不同的是&#xff0c;共用体所开辟的存储空间仅仅为其中最长类型变量的存储空间而不是全部变量的存储空间&#xff0c;由于同一内存单元在同一时间内只能存放其中一种的数据类型&#xff0c;因此在每…...

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十)

Spring Cloud 原先整合 Zuul 作为网关组件&#xff0c;Zuul 由 Netflix 公司提供的&#xff0c;现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关&#xff0c;但由于一直没有发布稳定版本&#xff0c;所以 Spring Cloud 等不及了就自己推出一个网关&#xff0c;已…...

活着就好20241227

亲爱的朋友们&#xff0c;大家早上好&#xff01;&#x1f31e; 今天是27号&#xff0c;星期五&#xff0c;2024年12月的第二十七天&#xff0c;同时也是第51周的第五天&#xff0c;农历甲辰[龙]年十一月初二十三日。在这晨光渐浓的美好时刻&#xff0c;愿那温暖而明媚的阳光洒…...

robotframework中的测试套件

一. 简介 本文简单来了解一下&#xff0c;robotframework中的测试套件。 二. robotframework中测试套件 1. 什么是测试套件&#xff1f; 测试套件&#xff08;Test Suite&#xff09; 是一组相关测试用例的集合。每个测试套件通常代表一个特定的功能模块、系统组件或业务流程…...

Echarts连接数据库,实时绘制图表详解

文章目录 Echarts连接数据库&#xff0c;实时绘制图表详解一、引言二、步骤一&#xff1a;环境准备与数据库连接1、环境搭建2、数据库连接 三、步骤二&#xff1a;数据获取与处理1、查询数据库2、数据处理 四、步骤三&#xff1a;ECharts图表配置与渲染1、配置ECharts选项2、动…...

【QED】爱丽丝与混沌的无尽海

文章目录 题目题目描述输入输出格式数据范围测试样例 思路代码复杂度分析时间复杂度空间复杂度 题目 题目链接&#x1f517; 题目描述 如图所示&#xff0c;爱丽丝在一个3x3的迷宫之中&#xff0c;每个方格中标有 1 − 9 1-9 1−9各不相同的数字&#xff0c;爱丽丝可以从一格…...

CHM助手 >> 如何安装CHM助手

1 如何安装CHM助手 下载CHM助手.ezip&#xff0c;下载地址打开EverEdit&#xff0c;选择主菜单“扩展 -> 扩展管理 -> 从本地文件安装扩展”&#xff0c;在弹出的文件浏览窗口中选择插件安装包&#xff0c;如下图所示&#xff1a; &#x1f56e;说明&#xff1a;   …...

硬件设计:LVDS电平标准

什么是LVDS&#xff1f; LVDS&#xff08;Low-Voltage Differential Signaling&#xff09;是一种高速、低功耗的差分信号传输标准。它通过一对差分信号线&#xff08;通常是两根互补信号线&#xff09;来传输数据&#xff0c;广泛应用于高速数字通信领域。 LVDS 的核心特点 低…...

宝塔-firefox(Docker应用)-构建自己的Web浏览器

安装基础软件 宝塔中安装firefox(Docker应用) 。宝塔中需要先安装docker及docker-composefirefox配置安装 点击firefox应用&#xff0c;选择【安装配置】点击右边绿色按钮&#xff0c;进行安装&#xff0c;这一步等待docker-compose根据你的配置初始化docker应用 等待安装 …...

微信小程序-基于Vant Weapp UI 组件库的Area 省市区选择

Area 省市区选择&#xff0c;省市区选择组件通常与 弹出层 组件配合使用。 areaList 格式 areaList 为对象结构&#xff0c;包含 province_list、city_list、county_list 三个 key。 每项以地区码作为 key&#xff0c;省市区名字作为 value。地区码为 6 位数字&#xff0c;前两…...

宏转录组+HiFi宏基因组:揭示厌氧消化中的碳流和能量转换

厌氧消化是一种重要的工程生物技术&#xff0c;对有机废物的资源回收和可再生能源的生产起着关键作用。然而&#xff0c;由于对未培养的厌氧菌及其适应环境变化的能力了解有限&#xff0c;这限制了该技术的优化和生物气生产的可持续性。今天小编带大家看一篇发表在《Microbiome…...

【VSCode】工作区及设置

【VSCode】工作区及设置 VSCode介绍工作区设置 VSCode介绍 Visual Studio Code&#xff08;简称VSCode&#xff09;是一个由微软开发的免费、开源的代码编辑器&#xff0c;以下是VSCode的一些功能及特性&#xff1a; 编辑器核心&#xff1a; 多文档界面&#xff1a;VSCode允许…...

瀚高数据库

文章目录 瀚高数据库安装瀚高数据库快速入门遇到的问题总结 瀚高数据库 瀚高数据库&#xff08;HanGaoDB&#xff09;是一款在分布式存储、高并发处理和高可用性方面表现优异的数据库&#xff0c;特别适用于大数据、高吞吐量、高并发的应用场景。它结合了传统 SQL 数据库和分布…...

xterm遇到的问题及解决方案

xterm遇到的问题及解决方案 /r插入终端导致的之后插入的数据覆盖了改行头部的数据 问题说明 如图所示&#xff0c;当在一行输入的候&#xff0c;输入的l插入到了改行的头部。 查看ws返回数据 可见ws返回的信息存在\r字符&#xff0c;在xterm.js中\r是回车字符的意思&…...

嵌入式单片机温湿度模块控制与实现

温湿度模块的使用 温湿度模块的特点 温湿度模块的原理通信的开始(打电话) 通信的过程(交流中)...

表达式语句、复合语句和空语句

欢迎拜访&#xff1a;雾里看山-CSDN博客 本篇主题&#xff1a;表达式语句、复合语句和空语句 发布时间&#xff1a;2024.12.26 隶属专栏&#xff1a;C语言 目录 1. 表达式语句定义作用常见类型赋值语句函数调用语句 2. 复合语句定义作用变量作用域 3. 空语句定义作用 1. 表达式…...

Dilateformer实战:使用Dilateformer实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…...

Kubernetes 镜像拉取策略全解析:如何根据需求选择最佳配置?

在Kubernetes集群里&#xff0c;拉取容器镜像是一个非常关键的步骤。这些镜像包含了应用程序及其所有需要的依赖项&#xff0c;Kubernetes通过拉取这些镜像来启动Pod中的容器。为了提升集群的稳定性、速度和安全性&#xff0c;Kubernetes提供了几种不同的镜像拉取策略。这篇文章…...

上海AI中心记录

1、js事件循环 调用栈&#xff08;Call Stack&#xff09;&#xff1a; JavaScript 是单线程的&#xff0c;所有的代码执行都是在调用栈中进行的。当函数被调用时&#xff0c;进入栈中&#xff1b;执行完毕后&#xff0c;从栈中弹出。 任务队列&#xff08;Task Queue&#xff…...

oscp学习之路,Kioptix Level2靶场通关教程

oscp学习之路&#xff0c;Kioptix Level2靶场通关教程 靶场下载&#xff1a;Kioptrix Level 2.zip 链接: https://pan.baidu.com/s/1gxVRhrzLW1oI_MhcfWPn0w?pwd1111 提取码: 1111 搭建好靶场之后输入ip a看一下攻击机的IP。 确定好本机IP后&#xff0c;使用nmap扫描网段&…...

基于SpringBoot的蜗牛兼职网的设计与实现

一、项目背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对蜗牛兼职网方面的要求也在不断提高&#xff0c;需要兼职工作的人数更是不断增加&#xff0c;使得蜗牛兼职网的开发成为必需而且紧迫的事情。蜗牛…...

C++软件设计模式之装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;是C软件设计模式中的一种结构型设计模式&#xff0c;主要用于解决在不改变现有对象结构的情况下动态地给对象添加新功能的问题。通过使用装饰器模式&#xff0c;可以在运行时为对象添加新的行为&#xff0c;而不需要修改其…...

Spring Boot项目接收前端参数的11种方式

大家好&#xff0c;我是袁庭新。在前后端项目交互中&#xff0c;前端传递的数据可以通过HTTP请求发送到后端&#xff0c; 后端在Spring Boot中如何接收各种复杂的前端数据呢&#xff1f;这篇文章总结了11种在Spring Boot中接收前端数据的方式。 1 搭建项目 1.通过Spring Init…...

通过GRE协议组建VPN网络

GRE&#xff08;Generic Routing Encapsulation&#xff0c;通用路由封装协议&#xff09;协议是一种简单而有效的封装协议&#xff0c;它在网络中的广泛应用&#xff0c;比如在构建VPN网络。   GRE是一种封装协议&#xff0c;它允许网络层协议&#xff08;如IP&#xff09;的…...

you-get使用cookies下载B站视频

B站视频更换BV号以后&#xff0c;使用you-get不能下载了。 首先更新你的you-get pip install --upgrade you-get 更新完成后再次使用you-get -u 命令会显示使用cookies才能下载更多清晰度的视频 使用Edge浏览器&#xff0c;添加插件 Cookie-Editor 点击上图的导出按钮&am…...

使用Excel制作通达信自定义“序列数据“

序列数据的视频教程演示 Excel制作通达信自定义序列数据 1.序列数据的制作方法&#xff1a;删掉没有用的数据&#xff08;行与列&#xff09;和股代码格式处理&#xff0c;是和外部数据的制作方法是相同&#xff0c;自己上面看历史博文。只需要判断一下&#xff0c;股代码跟随的…...

基于 Nginx 的网站服务器与 LNMP 平台搭建指南

一,Nginx概述 (一)Nginx的作用 Nginx在网络服务器架构中扮演着多面的角色。其初始设定专注于静态网络数据的处理,能高效地为用户提供诸如HTML,CSS,JavaScript等静态资源。当面对动态数据时,借助php - fpm模块,Nginx能够解析php源代码,实现动态页面的生成与展示。在处理…...

OpenCV计算机视觉 03 椒盐噪声的添加与常见的平滑处理方式(均值、方框、高斯、中值)

上一篇文章&#xff1a;OpenCV计算机视觉 02 图片修改 图像运算 边缘填充 阈值处理 添加椒盐噪声 def add_peppersalt_noise(image, n10000):result image.copy()h, w image.shape[:2] # 获取图片的高和宽for i in range(n): # 生成n个椒盐噪声x np.random.randint(…...

WPF自定义窗口 输入验证不生效

WPF自定义窗口 输入验证不生效 WPF ValidationRule 不生效 WPF ValidationRule 不生效 解决方案&#xff1a;在WindowStyle的Template中添加AdornerDecorator标签。 <Style x:Key"WindowStyle1" TargetType"{x:Type Window}"><Setter Property&…...

【MySQL】 SQL优化讲解

一、优化前的思考 在定位到慢查询后&#xff0c;面试官常问如何优化或分析慢查询的SQL语句。若存在聚合查询、多表查询&#xff0c;可尝试优化SQL语句结构&#xff0c;如多表查询可新增临时表&#xff1b;若表数据量过大&#xff0c;可添加索引&#xff0c;但添加索引后仍慢则…...

05.HTTPS的实现原理-HTTPS的握手流程(TLS1.2)

05.HTTPS的实现原理-HTTPS的握手流程&#xff08;TLS1.2&#xff09; 简介1. TLS握手过程概述2. TLS握手过程细化3. 主密钥&#xff08;对称密钥&#xff09;生成过程4. 密码规范变更 简介 主要讲述了混合加密流程完成后&#xff0c;客户端和服务器如何共同获得相同的对称密钥…...

Java获取自身被调用点

1. 场景 打印日志的时候&#xff0c;需要获取是在哪个地方被调用了&#xff0c;把调用点的信息一并打印出来。 2. 获取自身被调用点的方法 可以通过获取线程的调用栈&#xff0c;遍历后找到调用点。 3. 代码实现 import java.text.SimpleDateFormat; import java.util.Dat…...

有序之美:C++ Set的哲学与诗意

文章目录 前言一.C set 的概念1.1 set 的定义1.2 set 的特点二. set 的构造方法2.1 常见构造函数2.1.1 示例&#xff1a;不同构造方法 2.2 相关文档 三.set 的常用操作3.1 插入操作详解3.1.1 使用 insert() 插入元素3.1.2 使用 emplace() 插入元素3.1.3 插入区间元素 3.2 查找操…...

22. 仿LISP运算

题目描述 LISP语言唯一的语法就是括号要配对 形如(OP P1 P2 ...)&#xff0c;括号内元素由单个空格分割。其中第一个元素OP为操作符&#xff0c;后续元素均为其参数&#xff0c;参数个数取决于操作符类型。注意:参数P1,P2也有可能是另外一个嵌套的(OP P1 P2...)&#xff0c;当前…...

大模型应用技术系列(三): 深入理解大模型应用中的Cache:GPTCache

前言 无论在什么技术栈中,缓存都是比较重要的一部分。在大模型技术栈中,缓存存在于技术栈中的不同层次。本文将主要聚焦于技术栈中应用层和底层基座之间中间件层的缓存(个人定位),以开源项目GPTCache(LLM的语义缓存)为例,深入讲解这部分缓存的结构和关键实现。 完整技术…...

MATLAB语言的网络编程

标题&#xff1a;MATLAB中的网络编程&#xff1a;深入探索与实践 一、引言 在现代科学和工程领域中&#xff0c;网络编程已经成为了数据处理、信号分析、模型构建等众多任务中不可或缺的一环。MATLAB作为一款强大的数学计算软件&#xff0c;不仅提供了丰富的数值计算功能&…...

边缘计算收益稳定

要使自己的PCDN&#xff08;Personal Content Delivery Network&#xff0c;个人内容分发网络&#xff09;收益更稳定&#xff0c;可以从以下几个方面进行努力&#xff1a; 一、选择合适的PCDN平台 平台稳定性&#xff1a;选择技术成熟、稳定性高的PCDN平台&#xff0c;确保内…...

计算机网络 (7)物理层下面的传输媒体

一、定义与位置 物理层是计算机网络体系结构的最低层&#xff0c;它位于传输媒体&#xff08;传输介质&#xff09;之上&#xff0c;主要作用是为数据链路层提供一个原始比特流的物理连接。这里的“比特流”是指数据以一个个0或1的二进制代码形式表示。物理层并不是特指某种传输…...

【GoPL】1.2 命令行参数

1.2 命令行参数 24-12-26 大部分程序处理输入&#xff0c;然后产生一些输出&#xff0c;这大概有点像计算的定义 但是程序怎么操作输入的数据&#xff1f;(用参数来操作)输入可能来自文件、网络连接、用户的键盘输入、命令行参数(不同的编程范式) os包提供函数和其他值来处理…...

高精度问题

目录 算法实现基础 高精度加法AB 测试链接 源代码 代码重点 高精度减法A-B 测试链接 源代码 代码重点 高精度乘法A*b和A*B 测试链接 源代码 代码重点 高精度除法A/b和A/B 测试链接 源代码 代码重点 高精度求和差积商余 算法实现基础 本算法调用STL…...

【无线通信】蜂窝系统——干扰与系统容量

干扰是蜂窝无线系统性能的主要限制因素。干扰来源包括同一小区中的其他移动终端、邻近小区正在进行的通话、其他基站在同一频段内的工作信号&#xff0c;或者任何不属于蜂窝系统的设备偶然向蜂窝频段泄漏信号。语音信道中的干扰会导致串音&#xff0c;使得用户在通话时听到背景…...

深入探索仓颉编程语言:函数与结构类型的终极指南

引言 仓颉编程语言是一种现代化、语法精炼的编程语言&#xff0c;其设计目标是提供高度的灵活性与高性能的执行效率。函数与结构类型是仓颉语言的两大基础模块&#xff0c;也是开发者需要掌握的核心。本文将详细讲解仓颉语言中函数和结构类型的特性&#xff0c;辅以代码实例和…...

010-spring-后置处理器(重要)

org.mybatis.spring.mapper.MapperScannerConfigurer...

SQL实现新年倒计时功能

马上就到 2025 年了&#xff0c;给大家分享一个使用 SQL 实现的新年倒计时功能。 以下是 PostgreSQL 语法&#xff1a; DO $$ DECLAREdiff INTERVAL; BEGINRAISE NOTICE 2025新年倒计时开始&#xff1a;;LOOP-- 计算当前时间距离2025年的时间间隔diff age(timestamp 2025-01…...

list模拟实现

目录 节点结构 构造函数 insert erase push_back push_front pop_front pop_back 拷贝构造 析构函数 赋值重载 正向迭代器实现 clear 反向迭代器实现 测试list 附完整代码 参照数据结构篇: 带头双向循环链表 节点结构 namespace dck {template <class T&g…...

JVM【Java虚拟机】基础知识(五)

1. 双亲委派机制 由于Java虚拟机中有多个类加载器&#xff0c;双亲委派机制的核心是解决一个类到底由谁加载的问题。 &#x1f4a1;双亲委派机制有什么用&#xff1f; 1.保证类加载的安全性 通过双亲委派机制避免恶意代码替换JDK中的核心类库&#xff0c;比如java.lang.Str…...

阿尔萨斯(JVisualVM)JVM监控工具

文章目录 前言阿尔萨斯(JVisualVM)JVM监控工具1. 阿尔萨斯的功能2. JVisualVM启动3. 使用 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff…...

Vue BPMN Modeler流程图

1、参考地址 git clone https://github.com/evanyangg/vue-bpmn-modeler.git 2、安装bpmn.js npm install bpmn-js --save 3、使用bpmn.js <template><div class"containers"><div class"canvas" ref"canvas"></div&g…...

python通过正则匹配SQL

pattern r"(?:[^;]|(?:\\.|[^])*);" sql_list [match.group().strip() for match in re.finditer(pattern, execute_sql) if match.group().strip()]for sql in sql_list:print(sql)(?:[^;]|(?:\\.|[^])*); 匹配 连续的非分号内容 或 单引号包裹的字符串&#…...

设置首选网络类型以及调用Android框架层的隐藏API

在Android SDK中提供的framework.jar是阉割版本的&#xff0c;比如有些类标记为hide&#xff0c;这些类不会被打包到这个jar中&#xff0c;而有些只是类中的某个方法或或属性被标记为hide&#xff0c;则这些类或属性会被打包到framework.jar&#xff0c;但是我们无法调用&#…...