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

news2024/12/27 14:05:50

结构体之共用体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))

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IntelliJ Idea常用快捷键详解

文章目录 IntelliJ Idea常用快捷键详解一、引言二、文本编辑与导航1、文本编辑2、代码折叠与展开 三、运行和调试四、代码编辑1、代码补全 五、重构与优化1、重构 六、使用示例代码注释示例代码补全示例 七、总结 IntelliJ Idea常用快捷键详解 一、引言 在Java开发中&#xff…

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用&#xff0c;今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机&#xff08;SVM&#xff09;是一种监督学习算法&#xff0c;广泛用于分类和回归问题。 它的核心思想是通过…

Linux-----进程处理(子进程创建)

【尚硅谷嵌入式Linux应用层开发&#xff0c;linux网络编程&#xff0c;linux进程线程&#xff0c;linux文件io】https://www.bilibili.com/video/BV1DJ4m1M77z?p35&vd_source342079de7c07f82982956aad8662b467 main函数 fork创建进程 fork()参数 /*** brief 创建一个子进…

一种寻路的应用

应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节&#xff1a; 全国的长途车车站的数据的更新&#xff1a; …

2. FPGA基础了解--全局网络

前言 引入扇出的概念介绍FPGA中的全局网络为后续时序优化埋下伏笔 扇出 在FPGA设计中扇出是一个重要的概念&#xff0c;所谓的扇出就是一个控制信号所能控制的数据信号的总个数&#xff0c;比如ctrl信号的扇出就是16 reg ctrl 0; reg [15:0] out 0; always (posedge c…

Excel中一次查询返回多列

使用Excel或wps的时候&#xff0c;有时候需要一次查询返回多列内容&#xff0c;这种情况可以选择多次vlookup或者多次xlookup&#xff0c;但是这种做法费时费力不说&#xff0c;效率还有些低下&#xff0c;特别是要查询的列数过多时。我放了3种查询方法&#xff0c;效果图&…

智能化军事【五】精确制导武器智能化实现

文章目录 前言精确制导武器智能化实现基于深度学习实现的智能化功能基于强化学习实现的智能化功能强化学习深度强化学习 网络模型轻量化网络剪枝&#xff08;通道剪枝&#xff09;技术层剪枝权值量化技术低秩近似技术知识蒸馏技术强化学习联合训练 解决有效训练样本不足或获取困…

解锁高效密码:适当休息,让学习状态满格

一、“肝帝” 的困境 在当今竞争激烈的职场中&#xff0c;“肝帝” 现象屡见不鲜。超长工时仿佛成为了许多行业的 “标配”&#xff0c;从互联网企业的 “996”“007”&#xff0c;到传统制造业的轮班倒、无休无止的加班&#xff0c;员工们的工作时间被不断拉长。清晨&#xff…

asp.net 高校学生勤工俭学系统设计与实现

博主介绍&#xff1a;专注于Java&#xff08;springboot ssm 等开发框架&#xff09; vue .net php python(flask Django) 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设&#xff0c;从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找…

WebRTC服务质量(12)- Pacer机制(04) 向Pacer中插入数据

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…

RTMW:实时多人2D和3D 全人体姿态估计

单位&#xff1a;上海AI实验室 代码&#xff1a;mmpose/tree/main/projects/rtmpose 系列文章目录 RTMO: 面向高性能单阶段的实时多人姿态估计 目录 系列文章目录摘要一、背景二、相关工作2.1 自上而下的方法。2.2 坐标分类。2.3 3D Pose 3 实验方法3.1.1 任务限制3.1.3训练技…

AI智能养站神器-SEO助理原创文章批量生成发布工具

很多站长最头疼的就是网站每天的内容更新&#xff0c;因为不知道写什么&#xff0c;采集被人的文章又会被定义为抄袭&#xff0c;而且现在伪原创已经没有多大的效果了&#xff0c;所以今天给大家分享的就是一款AI智能养战神器-SEO助理原创文章批量生成发布工具。 这款工具支持…

用Python开启人工智能之旅(三)常用的机器学习算法与实现

第三部分&#xff1a;常用的机器学习算法与实现 用Python开启人工智能之旅&#xff08;一&#xff09;Python简介与安装 用Python开启人工智能之旅&#xff08;二&#xff09;Python基础 用Python开启人工智能之旅&#xff08;三&#xff09;常用的机器学习算法与实现 用Pyt…

FD(File Descriptor)泄漏

File Descriptor是Linux下概念&#xff0c;fd 是 int类型非负数&#xff01; 进程打开File&#xff0c;Socket&#xff0c;Pipe后生成一个File Descriptor&#xff0c;它是打开这个系统资源的标识符。 Linux每个进程fd最大1024个&#xff0c;超过之后进程 crash&#xff0c;c…

英语单词拼读小程序开发制作介绍

英语单词拼读小程序开发制作介绍本英语单词拼读小程序系统开发的主要功能有&#xff1a; 1、按年级分类展示每个年级阶段的英语单词信息。 2、点击选择的单词进入单词拼读页面&#xff0c;展示英语单词的拼读音标、中文意思、单词发音、拆分词汇发音、用户通过朗读发音对比。通…

TCP客户端模拟链接websocket服务端发送消息(二)

兄弟们&#xff0c;我来填坑了&#xff0c;o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o o(╥﹏╥)o&#xff0c;前几天写了个tcp模拟websocket客户端的以为完成&#xff0c;后面需要发送消息给服务端&#xff0c;以为简单不就是一个发送消息么&#xff0c;这不是一…

Docker 镜像加速访问方案

在数字化时代&#xff0c;Docker以其轻量级和便捷性成为开发者和运维人员的首选容器技术。然而自2023年5月中旬起&#xff0c;Docker Hub 的访问速度较慢或不稳定&#xff0c;这对依赖Docker Hub拉取镜像的用户来说无疑是一个挑战。本文将提供 Docker Hub 访问的一系列替代方案…

牛客网刷题 ——C语言初阶——BC112小乐乐求和

1.牛客网刷题 ——C语言初阶 牛客网&#xff1a;BC112小乐乐求和 小乐乐最近接触了求和符号Σ&#xff0c;他想计算的结果。但是小乐乐很笨&#xff0c;请你帮助他解答。 输入描述: 输入一个正整数n (1 ≤ n ≤ 109) 输出描述: 输出一个值&#xff0c;为求和结果。 示例1 输…

Eclipse常用快捷键详解

文章目录 Eclipse常用快捷键详解一、引言二、编辑快捷键三、选择和移动快捷键四、行操作快捷键五、搜索和导航快捷键六、调试快捷键七、重构快捷键八、其他快捷键九、使用案例场景一&#xff1a;代码编写代码示例 场景二&#xff1a;代码调试场景三&#xff1a;代码重构代码示例…

clickhouse测试报告

​一、背景 针对当前实施的项目&#xff0c;面临着两个主要挑战&#xff1a;一是需要存储更详细的原始数据和中间数据&#xff0c;二是现有基于MySQL的数据存储解决方案在数据量增长时性能受限&#xff0c;特别是在进行跨年历史数据的即时分析时。为了解决这些问题&#xf…