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

7.揭秘C语言输入输出内幕:printf与scanf的深度剖析

揭秘C语言输入输出内幕:printf与scanf的深度剖析

C语言往期系列文章目录

往期回顾:

  1. VS 2022 社区版C语言的安装教程,不要再卡在下载0B/s啦
  2. C语言入门:解锁基础概念,动手实现首个C程序
  3. C语言概念之旅:解锁关键字,字符,字符串的秘密,揭秘语句和注释,程序员的宝藏
  4. C语言基础入门:数据类型、变量声明与创建详解
  5. C操作符详解,深入探索操作符与字符串处理

文章目录

  • 揭秘C语言输入输出内幕:printf与scanf的深度剖析
  • C语言往期系列文章目录
  • 前言
  • 一、printf
    • 1.1 printf基本用法
    • 1.2 占位符
    • 1.3占位符列举
    • 1.4 输出格式
      • 1.4.1 限定宽度
      • 1.4.2 总是显示正负号
      • 1.4.3 限定小数位数
      • 1.4.4 输出部分字符串
  • 二、 scanf
    • 2.2.1 基本用法
    • 2.2.2 scanf的输入原理
    • 2.2.3 scanf返回值
    • 2.2.4 占位符
    • 2.2.5 赋值忽略符
  • 总结


前言

printf和scanf作为C语言标准库中最为基础的输入输出函数,它们的正确使用和深入理解,对于每一个C语言学习者来说都至关重要。本文旨在通过深入浅出的方式,带领读者全面理解并掌握printf和scanf这两个函数的用法。


一、printf

1.1 printf基本用法

首先我们来回忆第一个函数,printf函数。在之前的第一个C语言程序我们就见过这个库函数,这个printf函数,它是干什么的呢?

printf() 的作用是将参数文本输出到屏幕

简单理解,就是你给printf传进去一些信息(这些信息叫参数),把参数输出到屏幕上,它名字里的 f 叫 format,格式化,什么意思呢?
我们说printf是两个单词,其实严格意义上来说,它是按照指定的格式打印数据,格式化数据。

print format - 按照指定的格式打印数据

到目前为止,我们学的最简单的功能就是在屏幕上打印字符串,比如说,printf 一个hello world,你得加一个头文件才能使用这个库函数。

#include <stdio.h>int main()
{//print format - 按照指定的格式打印数据printf("hello world");return 0;
}

但是注意,printf 不会自动在末尾换行。 如果我们想实现换行的功能,就需要在末尾加一个转义字符,\n。
我们可以做一个对比,上边打印完就是打印完了,下边则是会加上一个换行。

#include <stdio.h>int main()
{//print format - 按照指定的格式打印数据printf("hello world\n");return 0;
}

比如说,未来你要是想在哪添加换行,你就在哪加 \n 就行了。

1.2 占位符

printf(),可以在输出文本中指定占位符,所谓“占位符”,就是这个位置可以用其它值代入.

printf("there are 3 apples\n");
printf("there are %d apples\n", 3);
printf("there are %d apples\n", 30);
printf("there are %d apples\n", 10);

占位符,是会被后方的数字替换掉的。常用的占位符,除了%d,我们还用%s,%s表示代入的是一个字符串

printf("%s will come tonight\n", "张三");

前面是我们的输出格式 %s,后面是我们的代入值 —— 张三。输出的文本还可以使用多个占位符。占位符和后面替换的值一定是有顺序的,是一 一对应的。
例如:

#include <stdio.h>
int main()
{printf("%s says it is %d o'clock\n", "lisi", 21);return 0;
}

此时,%s 就会被 lisi 代入,而 %d 就会被21所代入。

1.3占位符列举

printf() 的占位符有许多种类,与C语言的数据类型相对应。下面按照字母顺序,列出常用的占位符,方便查找,具体含义在后面博客介绍。
在这里插入图片描述
在这里插入图片描述
值得注意的是,一般我们打印指针,都是以十六进制的地址形式打印出来的。因为用二进制打印太长了。

1.4 输出格式

printf() 可以定制占位符的输出格式.

1.4.1 限定宽度

printf() 允许限定占位符的最小宽度。比如说,%5d,也就是说最小的宽度是五,如果宽度不够,就会拿空格填充。
举个例子:

printf("%d\n", 123);
printf("%5d",123);

这时候在123之前,会多两个空格。如果超过五位呢?那程序就会如实打印。

printf("%5d\n", 1234567);

上面示例中, %5d 表示这个占位符的宽度至少为5位。如果不满5位,对应的值的前面会添加空格。输出的值默认是右对齐,即输出内容前面会有空格。
如果希望改成左对齐,在输出内容后面添加空格,可以在占位符的 % 的后面插入⼀个 - 号。

printf("%-5d",123);

浮点数的限定宽度
对于浮点数,这个限定符会限制所有数字的最小显示宽度。
例子:

	printf("%f\n", 123.45);printf("%12f\n", 123.45);

%12f 表示输出的浮点数最少要占据12位。由于小数的默认显示精度是小数点后6位,所以 123.45 输出结果的头部会添加2个空格。

1.4.2 总是显示正负号

默认情况下, printf() 不对正数显示+号,只对负号显示 - 号。如果想让正数也输出 + 号,可以在占位符的 % 后面加⼀个 + 。

	printf("%+d\n", 12);printf("%+d\n", -12);

常规情况下,‘+’是都不打印的,只要加一个+号就可以一直打印符号了。

1.4.3 限定小数位数

当我们输出小数时,有时希望限定小数的位数,比如并不希望每次打印小数的时候,都打印很多个0.
比如:希望小数点后面只保留两位,占位符可以写成 %.2f 。

printf("%.2f\n", 123.45);
printf("%f\n", 123.45);
printf("%.3f\n", 123.45);

那如果本来小数点后六位,而限定位数7位或者更多呢?
这种写法我们就可以与限定宽度占位符,结合使用。

printf("%6.2f\n", 0.5);

6就代表我们至少输出六位,小数保持两位。
当然还有另外一种写法,最小宽度和小数位数这两个限定值,都可以用 * 代替,通过 printf() 的参数传入。
例如:

#include <stdio.h>
int main()
{printf("%*.*f\n", 6, 2, 0.5);return 0;
}

% * . * f 的两个星号通过 printf() 的两个参数 6 和 2 传入。

1.4.4 输出部分字符串

%s 占位符用来输出字符串,默认是全部输出。
如果我们只想输出开头的部分,可以用 %.[m]s 指定输出的长度,其中 [m] 代表一个数字,表示所要输出的长度。
例如:

#include <stdio.h>
int main()
{printf("%.5s\n", "hello world");return 0;
}

占位符 %.5s 表示只输出字符串“hello world”的前5个字符,即“hello”

二、 scanf

当我们有了变量,我们需要给变量输入值就可以使用 scanf 函数,如果需要将变量的值输出在屏幕上的时候可以使用 prinf 函数,下面看⼀个例子:

	int score = 0;//输入一个值printf("请输入成绩:");scanf("%d", &score);//输出printf("成绩是:%d", score);

这时候我们会发现报错了。
在这里插入图片描述
这时候我们只要在代码的最上方加入

#define _CRT_SECURE_NO_WARNINGS 1

就能解决报错。

2.2.1 基本用法

刚刚我们也使用了scanf,那C语言输入输出的逻辑是什么呢?
这里我就绘制了一张图,中间是我们的程序,里面有一个变量score,当我们在这个地方调用scanf的时候。第一步:库函数printf打印“请输入成绩”,第二步:你的键盘敲了一个100,这个100就传到这个变量里面去,第三步:printf把信息打印到屏幕上。
在这里插入图片描述
我们来追究一下用法:
scanf() 函数用于读取用户的键盘输入。程序运行到这个语句时,会停下来,等待用户从键盘输入。用户输入数据、按下回车键后, scanf() 就会处理用户的输入,将其存入变量。它的原型定义在头文件 stdio.h 。
我们来演示一下这个程序,注意,当我们程序执行到这一步的时候,回车还没敲下,说明还没存到变量里面。键盘上输入回车之后才存进去。
在这里插入图片描述
scanf,它的第一个参数是一个格式字符串,里面会放置占位符(与 printf() 的占位符基本一致),告诉编译器如何解读用户的输入,需要提取的数据是什么类型。这是因为C语言的数据都是有类型的, scanf() 必须提前知道用户输入的数据类型,才能处理数据。它的其余参数就是存放用户输入的变量,格式字符串里面有多少个占位符,就有多少个变量。

int a = 0;
int b = 0;
float f1 = 0.0;
float f2 = 0.0;
scanf("%d%d%f%f", &a, &b, &f1, &f2);
printf("%d %d %f %f\n", a, b, f1, f2);

注意,scanf的格式可以不加空格,但是输入得加空格(那能不能加回车呢?)
通过代码验证可以发现,两个数据之间可以加入空格,也可以加入回车,输入的效果是一样。
在这里插入图片描述
当然,输入的时候不要随便加换行。这样在大批量的输入数据的时候,容易混乱,但可不可以呢?是可以的。
上面示例中,格式字符串 %d%d%f%f ,表示用户输入的前两个是整数,后两个是浮点数,比如 1-20 3.4 -4.0e3 。这四个值依次放入 i 、 j 、 x 、 y 四个变量。scanf() 处理数值占位符时 ,会自动过滤空白字符,包括空格、制表符、换行符等。
所以,用户输入的数据之间,有一个或多个空格不影响 scanf() 解读数据。另外,用户使用回车键,将输入分成几行,也不影响解读。

2.2.2 scanf的输入原理

scanf() 处理用户输入的原理是,用户的输入先放入缓存,等到按下回车键后,按照占位符对缓存进行解读。解读用户输入时,会从上一次解读遗留的第一个字符开始,直到读完缓存,或者遇到第一个不符合条件的字符为止

#include <stdio.h>
int main()
{int x;float y;// 用户输入 " -13.45e12# 0"scanf("%d", &x);scanf("%f", &y);printf("%d\n", x);printf("%f\n", y);return 0;
}

在这里插入图片描述
程序运行,第一个scanf开始读取,这时候scanf读到小数点就截止了。.45e12这是科学计数法的表现形式,那为什么是4499999……,这跟浮点数的存储有关,我们现在只需要知道浮点数的存储在内存中是无法精确存储的。所以读到#号的时候就停止了。
这里额外说明C语言中科学计数法是如何表示的:

1.5e3-->1.5*10^3
1500

这是个指数形式的表示方法,我们用字母e或者E来表示以10为底的指数,例如:1.5e3就是等于1.5*10^3. 但要注意在e或者E前必须要有数字,以及后面必须要为整数,不能写成12e3.2。

2.2.3 scanf返回值

scanf() 的返回值是一个整数,表示成功读取的变量个数。如果没有读取任何项,或者匹配失败,则返回 0 。如果在成功读取任何数据之前,发生了读取错误或者遇到读取到文件结尾,则返回常量EOF。

int main()
{int a = 0;int b = 0;float f = 0.0;int r = scanf("%d %d %f", &a, &b, &f);printf("a = %d\n", a);printf("b = %d\n", b);printf("f = %f\n", f);printf("r = %d\n", r);return 0;
}

当我们成功读取了3个变量,这时候r就等于3.
在这里插入图片描述
一般来说,我们对程序按一次ctrl + z就停止,在vs上我们需要连续的按三次,这是VS的bug,可以看到我们停止了,然后r的返回值是2.
EOF是什么呢?

EOF 它本质是缩写,end of file 文件的结束标志。

在这里插入图片描述

转到定义,它是负1.只要让scanf都不读取,直接错误,这样scanf就会返回负1.

在这里插入图片描述

2.2.4 占位符

在这里插入图片描述

特别说明,除了 %c 以外,都会自动忽略起首的空白字符。 %c 不忽略空白字符,总是返回当前第一个字符,无论该字符是否为空格。

int main()
{char ch = 0;scanf("%c", &ch);printf("%c", ch);printf("xxxx\n");return 0;
}

如图所示:

在这里插入图片描述

如果要强制跳过字符前的空白字符,可以写成 scanf(" %c", &ch) ,即 %c 前加上⼀个空格,表示零个或多个空白字符。

scanf(" %c", &ch);

如图所示:
在这里插入图片描述

下面要特别说⼀下占位符 %s ,它其实不能简单地等同于字符串。它的规则是,从当前第一个非空白字符开始读起,直到遇到空白字符(即空格、换行符、制表符等)为止。
在这里插入图片描述

因为 %s 不会包含空白字符,所以无法用来读取多个单词,除非多个 %s ⼀起使用。这也意味着,scanf() 不适合读取可能包含空格的字符串,比如书名或歌曲名。另外, scanf() 遇到 %s 占位符,会在字符串变量末尾存储⼀个空字符 \0 。也就是在刚才的例子中,读取完abc之后,存到数组里面了,这时候末尾会加一个\0。

在这里插入图片描述

scanf() 将字符串读入字符数组时,不会检测字符串是否超过了数组长度。所以,储存字符串时,很可能会超过数组的边界,导致预想不到的结果。如图所示,数组的长度才五,这里一口气存了九个字符进去。

所以为了防止这种情况,使用 %s 占位符时,应该指定读入字符串的最长长度,即写成 %[m]s ,其中的 [m] 是一个整数,表示读取字符串的最大长度,后面的字符将被丢弃。

int main()
{char arr[5] = { 0 };scanf("%4s", arr);printf("%s\n", arr);return 0;
}

为什么只写4个呢?因为字符串末尾还要放一个\0。

2.2.5 赋值忽略符

日常生活中,假设我们需要记录日期,我们就会用年月日三个变量来记录,这时候我们就会输入 1990/5/12这样的形式,来记录我们的日期。
但是有时,用户的输入可能不符合预定的格式。我们想让用户按 “年 - 月 - 日”这样的形式输入,就必须在年月日当中加上-,要不然就读取错误。在这里插入图片描述
为了避免这种情况, scanf() 提供了⼀个赋值忽略符(assignment suppression character)* 。 只要把 * 加在任何占位符的百分号后面,该占位符就不会返回值,解析后将被丢弃。

#include <stdio.h>
int main()
{int year = 0;int month = 0;int day = 0;scanf("%d%*c%d%*c%d", &year, &month, &day);printf("%d %d %d\n", year, month, day);return 0;
}

这样无论用户的输入格式中间是什么,我们总能准确的读取对应的数据,然后将年月日正常输出到屏幕上。

总结

我们深入了解了printf和scanf这两个C语言标准库函数的基本用法和高级特性。printf函数能够按照指定的格式输出各种类型的数据,而scanf函数则能够读取用户输入的数据并进行类型转换。这两个函数共同构成了C语言编程中输入输出功能的核心。下期我们将从分支结构开始讲起。

相关文章:

7.揭秘C语言输入输出内幕:printf与scanf的深度剖析

揭秘C语言输入输出内幕&#xff1a;printf与scanf的深度剖析 C语言往期系列文章目录 往期回顾&#xff1a; VS 2022 社区版C语言的安装教程&#xff0c;不要再卡在下载0B/s啦C语言入门&#xff1a;解锁基础概念&#xff0c;动手实现首个C程序C语言概念之旅&#xff1a;解锁关…...

数据分析-系统认识数据分析

目录 数据分析的全貌 观测 实验 应用 数据分析的全貌 观测 实验 应用...

蓝桥杯介绍

赛事背景与历程 自2009年举办以来&#xff0c;蓝桥杯已经连续举行了多届&#xff0c;成为国内领先的信息技术赛事。2022年&#xff0c;蓝桥杯被教育部确定为2022—2025学年面向中小学生的全国性竞赛活动&#xff0c;并入选国家级A类学科竞赛。 参赛对象与组别 蓝桥杯的参赛对…...

鸿蒙加载网络图片并转换成PixelMap

鸿蒙加载网络图片并转换成PixelMap 参考文档 基于API12. 有一些图片功能需要使用 PixelMap 类型的参数&#xff0c;但是使用Image组件之类的时候无法获取到 PixelMap 类型数据。 因此只能是把图片下载下来然后加在并转换一下。 实现方式 一下封装了一个函数。使用的 rcp 模…...

hive搭建

1.准备环境 三台节点主机已安装hadoopmysql数据库 2.环境 2.1修改三台节点上hadoop的core-site.xml <!-- 配置 HDFS 允许代理任何主机和组 --> <property><name>hadoop.proxyuser.hadoop.hosts</name><value>*</value> </property&…...

51c扩散模型~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/11541675 #Diffusion Forcing 无限生成视频&#xff0c;还能规划决策&#xff0c;扩散强制整合下一token预测与全序列扩散 当前&#xff0c;采用下一 token 预测范式的自回归大型语言模型已经风靡全球&#xff0c;同时互联…...

从零开始深度学习:全连接层、损失函数与梯度下降的详尽指南

引言 在深度学习的领域&#xff0c;全连接层、损失函数与梯度下降是三块重要的基石。如果你正在踏上深度学习的旅程&#xff0c;理解它们是迈向成功的第一步。这篇文章将从概念到代码、从基础到进阶&#xff0c;详细剖析这三个主题&#xff0c;帮助你从小白成长为能够解决实际…...

Liebherr利勃海尔 EDI 需求分析

Liebherr 使用 EDI 技术来提高业务流程的效率、降低错误率、加快数据交换速度&#xff0c;并优化与供应商、客户和其他合作伙伴之间的业务沟通。通过 EDI&#xff0c;Liebherr 实现了与全球交易伙伴的自动化数据交换&#xff0c;提升了供应链管理和订单处理的透明度。 Liebher…...

java小练习

小练1.用while语句计算11/2!1/3!1/4!...1/20!的和 public class test_11_17_2 {public static void main(String[] args) {double sum 0;double item 1;int n 20;int i 1;while(i<n){sum item;i i1;item item*(1.0/i);}System.out.println(sum);} } 小练2.计算88888…...

go语言中的占位符有哪些

在Go语言中&#xff0c;占位符主要用于格式化字符串输出&#xff0c;特别是在使用fmt包中的Printf系列函数时。以下是Go语言中常用的占位符&#xff1a; %v&#xff1a;代表值的默认格式&#xff0c;对于字符串是直接输出&#xff0c;对于整型是十进制形式。%v&#xff1a;扩展…...

基于Windows安装opus python库

项目中需要用到一些opus格式的编解码功能&#xff0c;找到网上有opus的开源库。网址&#xff1a;Opus Codec 想着人生苦短&#xff0c;没想到遇上了错误&#xff01;在这里记录一下过程 过程 安装python库 pip3 install opuslib验证 >>> import opuslib Tracebac…...

【设计模式】行为型模式(五):解释器模式、访问者模式、依赖注入

《设计模式之行为型模式》系列&#xff0c;共包含以下文章&#xff1a; 行为型模式&#xff08;一&#xff09;&#xff1a;模板方法模式、观察者模式行为型模式&#xff08;二&#xff09;&#xff1a;策略模式、命令模式行为型模式&#xff08;三&#xff09;&#xff1a;责…...

使用nossl模式连接MySQL数据库详解

使用nossl模式连接MySQL数据库详解 摘要一、引言二、nossl模式概述2.1 SSL与nossl模式的区别2.2 选择nossl模式的场景三、在nossl模式下连接MySQL数据库3.1 准备工作3.2 C++代码示例3.3 代码详解3.3.1 初始化MySQL连接对象3.3.2 连接到MySQL数据库3.3.3 执行查询操作3.3.4 处理…...

【MySQL】ubantu 系统 MySQL的安装与免密码登录的配置

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;MySQL初阶探索&#xff1a;构建数据库基础 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f4da;mysql的安装&#x1f4d5;MySQL的登录&#x1f30f;MySQL配置免密码登录 &#x1f4da;mysql的…...

高级 SQL 技巧讲解

​ 大家好&#xff0c;我是程序员小羊&#xff01; 前言&#xff1a; SQL&#xff08;结构化查询语言&#xff09;是管理和操作数据库的核心工具。从基本的查询语句到复杂的数据处理&#xff0c;掌握高级 SQL 技巧不仅能显著提高数据分析的效率&#xff0c;还能解决业务中的复…...

浅论AI大模型在电商行业的发展未来

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;AI大模型在电商行业中扮演着越来越重要的角色。本文旨在探讨AI大模型如何赋能电商行业&#xff0c;包括提升销售效率、优化用户体验、增强供应链管理等方面。通过分析AI大模型在电商领域的应用案例和技术进展…...

【python笔记03】《类》

文章目录 面向对象基本概念对象的概念类的概念 类的定义类的创建&#xff08;实例的模板&#xff09;类的实例化--获取对象对象方法中的self关键字面试题请描述什么是对象&#xff0c;什么是类。请观阅读如下代码&#xff0c;判断是否能正常运行&#xff0c;如果不能正常运行&a…...

Flutter 应用在真机上调试的流程

在真机上调试 Flutter 应用的方法有很多&#xff0c;可以使用 USB 数据线连接设备到电脑进行调试&#xff0c;也可以通过无线方式进行 Flutter 真机调试。 1. 有线调试 设备准备 启用开发者模式&#xff1a; Android&#xff1a;进入 设置 > 关于手机&#xff0c;连续点击…...

以太坊基础知识结构详解

以太坊的历史和发展 初创阶段 2013年&#xff1a;Vitalik Buterin 发表了以太坊白皮书&#xff0c;提出了一个通用的区块链平台&#xff0c;不仅支持比特币的货币功能&#xff0c;还能支持更复杂的智能合约。2014年&#xff1a;以太坊项目启动&#xff0c;进行了首次ICO&…...

安全见闻(完整版)

目录 安全见闻1 编程语言和程序 编程语言 函数式编程语言&#xff1a; 数据科学和机器学习领域&#xff1a; Web 全栈开发&#xff1a; 移动开发&#xff1a; 嵌入式系统开发&#xff1a; 其他&#xff1a; 编程语言的方向&#xff1a; 软件程序 操作系统 硬件设备…...

LeetCode100之反转链表(206)--Java

1.问题描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表 示例1 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例2 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1] 示例3 输入&#xff1a;head [] 输…...

牛客周赛第一题2024/11/17日

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 时间限制&#xff1a;C/C/Rust/Pascal 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C/Rust/Pascal 256 M&#xff0c;其他语言512 M 64bit IO Format: %lld 题目描述 小红这天来到了三…...

麒麟Server下安装东方通TongLINK/Q

环境 系统&#xff1a;麒麟Server SP3 2403 应用&#xff1a;TLQ8.1(Install_TLQ_Standard_Linux2.6.32_x86_64_8.1.17.0.tar.gz) 安装Server 将文件解压到/usr/local/tlq。 cd /opt/tlq/ mkdir /usr/local/tlq/ tar -zxvf Install_TLQ_Standard_Linux2.6.32_x86_64_8.1.1…...

BERT的中文问答系统33

我们在现有的代码基础上增加网络搜索的功能。我们使用 requests 和 BeautifulSoup 来从百度搜索结果中提取信息。以下是完整的代码&#xff0c;包括项目结构、README.md 文件以及所有必要的代码。 项目结构 xihe241117/ ├── data/ │ └── train_data.jsonl ├── lo…...

Ubuntu下的Eigen库的安装及基本使用教程

一、Eigen库介绍 简介 Eigen [1]目前最新的版本是3.4&#xff0c;除了C标准库以外&#xff0c;不需要任何其他的依赖包。Eigen使用的CMake建立配置文件和单元测试&#xff0c;并自动安装。如果使用Eigen库&#xff0c;只需包特定模块的的头文件即可。 基本功能 Eigen适用范…...

【spring 】Spring Cloud Gateway 的Filter学习

介绍和使用场景 Spring Cloud Gateway 是一个基于 Spring Framework 5 和 Project Reactor 的 API 网关&#xff0c;它旨在为微服务架构提供一种简单而有效的方式来处理请求路由、过滤、限流等功能。在 Spring Cloud Gateway 中&#xff0c;Filter 扮演着非常重要的角色&#…...

每秒交易数(Transactions Per Second:TPS)详细拆解

每秒交易数&#xff08;TPS&#xff09;是指计算机网络每秒可以处理的交易数量。TPS是衡量不同区块链和其他计算机系统速度的关键指标。然而&#xff0c;TPS并不是用来衡量区块链速度的唯一指标。许多人认为&#xff0c;虽然TPS很重要&#xff0c;但最终性实际上是一个更重要的…...

【初阶数据结构与算法】链表刷题之链表分割、相交链表、环形链表1、环形链表I、环形链表II

文章目录 一、链表分割二、相交链表三、环形链表I四、环形链表|| 一、链表分割 题目链接&#xff1a;https://www.nowcoder.com/practice/0e27e0b064de4eacac178676ef9c9d70 我们来看看链表分割的题目描述和它给出的函数&#xff1a;    这个题虽然是以C形式来做&#xff0…...

【STL】set,multiset,map,multimap的介绍以及使用

关联式容器 在C的STL中包含序列式容器和关联式容器 1.关联式容器&#xff1a;它里面存储的是元素本身&#xff0c;其底层是线性序列的数据结构&#xff0c;比如&#xff1a;vector&#xff0c;list&#xff0c;deque&#xff0c;forward_list(C11)等 2.关联式容器里面储存的…...

新能源二手车交易量有望破百万,二手车市场回暖了吗?

这些年&#xff0c;伴随着新能源汽车市场的高速发展&#xff0c;各种新能源车的二手车也在逐渐增加&#xff0c;不过之前的二手车市场相对比较冷清&#xff0c;就在最近一则新闻传出新能源二手车交易量有望破百万&#xff0c;二手车市场这是回暖了吗&#xff1f; 一、新能源二手…...