基于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))

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/943205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【全栈开发】----用pymysql库连接MySQL,批量存入

本文基于前面的MySQL基础语句使用&#xff0c;还不会的宝子可以先回去看看&#xff1a; 全栈开发----Mysql基本配置与使用-CSDN博客 仅仅用控制台命令对数据库进行操作&#xff0c;虽然大部分操作都很简单&#xff0c;但对于大量数据的存入&#xff0c;存储数据将会变得很繁琐&…

PyQt实战——使用python提取JSON数据(十)

系类往期文章&#xff1a; PyQt5实战——多脚本集合包&#xff0c;前言与环境配置&#xff08;一&#xff09; PyQt5实战——多脚本集合包&#xff0c;UI以及工程布局&#xff08;二&#xff09; PyQt5实战——多脚本集合包&#xff0c;程序入口QMainWindow&#xff08;三&…

51单片机学习笔记——找不到REG52.H头文件,点亮一个LED

创建工程 将STC型号导入keil并使用 STC可以从官网下载&#xff0c;也可我这的网盘&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bO85DPN3IFaXGhiKSwyOrA?pwd7f4h 提取码&#xff1a;7f4h 打开STC&#xff0c;选择“keil仿真设置”&#xff0c;选择“添加型号和头…

windows和mac共享文件夹访问教程

mac共享文件夹&#xff0c;windows访问&#xff1a; mac上开启文件夹共享&#xff0c;并添加文件夹和用户&#xff0c;然后windows 上 在windows上快捷键 win r 打开运行&#xff0c;按如下格式输入mac设备的IP地址&#xff1a; 就可以访问了&#xff1a; windows共享文件夹…

webauthn介绍及应用

1、webauthn介绍 官网&#xff1a;https://webauthn.io/ 1.1、什么是webauthn&#xff1f; webauthn即Web Authentication&#xff0c;是一个符合W3C标准的Web认证规范。它通过公私钥加密技术&#xff0c;实现无密码认证&#xff0c;用户仅需通过pin码、指纹、面部识别、usb …

iOS AccentColor 和 Color Set

AccentColor 和 Color Set 都是 Xcode 中用于颜色管理的功能&#xff0c;它们适用于不同的开发场景和需求。以下是它们的区别和应用场景分析&#xff1a; 1. AccentColor&#xff08;强调色&#xff09; 1.1 概念&#xff1a; • AccentColor 是在 Xcode 12 中引入的&#xf…

TiDB 的MPP架构概述

MPP架构介绍&#xff1a; 如图&#xff0c;TiDB Server 作为协调者&#xff0c;首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换&#xff0c;让表连接在一个TiFlash上。另外 TiFlash会作为计算节点&#xff0c;每个TiFlash都负责数据交换&#xff0c;表连接…

git回退指定版本/复制提交id

1.使用“git reset --hard 目标版本号”命令将版本回退2.使用“git push -f”提交更改 因为我们回退后的本地库HEAD指向的版本比远程库的要旧&#xff0c;此时如果用“git push”会报错。 改为使用 git push -f 即可完成回退后的提交。

本地部署 LLaMA-Factory

本地部署 LLaMA-Factory 1. 本地部署 LLaMA-Factory2. 下载模型3. 微调模型3-1. 下载数据集3-2. 配置参数3-3. 启动微调3-4. 模型评估3-5. 模型对话 1. 本地部署 LLaMA-Factory 下载代码&#xff0c; git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Facto…

BLE core 内容整理解释

本文内容比较杂散&#xff0c;只是做记录使用&#xff0c;后续会整理的有条理些 link layer 基本介绍 **Link Layer Control&#xff08;链路层控制&#xff09;**是蓝牙低功耗&#xff08;BLE&#xff09;协议栈的核心部分&#xff0c;负责实现设备间可靠、安全、低功耗的数…

HEIC 是什么图片格式?如何把 iPhone 中的 HEIC 转为 JPG?

在 iPhone 拍摄照片时&#xff0c;默认的图片格式为 HEIC。虽然 HEIC 格式具有高压缩比、高画质等优点&#xff0c;但在某些设备或软件上可能存在兼容性问题。因此&#xff0c;将 HEIC 格式转换为更为通用的 JPG 格式就显得很有必要。本教程将介绍如何使用简鹿格式工厂&#xf…

黑马商城项目—服务注册、服务发现

服务注册 我们把item-service注册到Nacos&#xff0c;步骤如下&#xff1a; 1.引入依赖 在item-service的pom.xml中添加依赖&#xff1a; 2.配置Nacos 在item-service的application.yml中添加nacos地址配置: 3.配置服务实例 为了测试一个服务多个实例的情况&#xff0c;我…

如何卸载和升级 Angular-CLI ?

Angular-CLI 是开发人员使用 Angular 的必备工具。然而&#xff0c;随着频繁的更新和新版本的出现&#xff0c;了解如何有效地卸载和升级 Angular-CLI 对开发人员来说至关重要。本指南提供了一个全面的、循序渐进的方法来帮助您顺利过渡到最新版本。 必备条件 确保您的系统上…

有道云笔记批量导出

前言 最近使用有道云笔记遇到打开过慢&#xff0c;导致笔记丢失&#xff0c;需要会员才能找回之前笔记问题。 决定改用思源&#xff0c;程序中的格式比较难于通过复制保留&#xff0c;即使导出成word 或者pdf&#xff0c;需要一个专门工具导出成Markdown格式&#xff0c;批量…

设计模式与游戏完美开发(2)

更多内容可以浏览本人博客&#xff1a;https://azureblog.cn/ &#x1f60a; 该文章主体内容来自《设计模式与游戏完美开发》—蔡升达 第二篇 基础系统 第四章 游戏主要类——外观模式&#xff08;Facade&#xff09; 一、游戏子功能的整合 一个游戏程序常常由内部数个不同的…

学习C++:变量

变量&#xff1a; 作用&#xff1a;给一段指定的内存空间起名&#xff0c;方便操作这段内容 &#xff08;变量存在的意义&#xff1a;方便我们管理内存空间&#xff09; 语法&#xff1a;数据类型 变量名 初始值&#xff1b; 实例&#xff1a;

electron-vite_18 设置系统音量loudness报错

loudness是一款控制系统音量输出的一款 Node.js 库&#xff1b;但是在electron-vite中直接使用编译的时候会报错&#xff1b;这个时候需要单独处理&#xff1b; 错误分析 error Error: spawn E:\xxx\out\main\adjust_get_current_system_volume_vista_plus.exe 查看编译后项目…

Chrome被360导航篡改了怎么改回来?

一、Chrome被360导航篡改了怎么改回来&#xff1f; 查看是否被360主页锁定&#xff0c;地址栏输入chrome://version&#xff0c;看命令行end后面&#xff08;蓝色部分&#xff09;&#xff0c;是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步&#xff1a…

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

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

如何用gpt来分析链接里面的内容(比如分析论文链接)和分析包含多个文件中的一块代码

如何用gpt来分析链接里面的内容&#xff0c;方法如下 这里使用gpt4里面有一个网路的功能 点击搜索框下面这个地球的形状即可启动搜索网页模式 然后即可提出问题在搜索框里&#xff1a;发现正确识别和分析了链接里面的内容 链接如下&#xff1a;https://arxiv.org/pdf/2009.1…