C语言入门篇——语句篇

news2024/9/21 10:42:16

目录

1、空语句

2、表达式语句

3、复合语句

4、控制语句

4.1、C控制语句:循环

4.1.1、while

4.1.2、while里的break和continue

4.2.1、for

4.2.2、for里的break和continue

4.3.1、do while

4.3.2、do while里的break和continue

5、C控制语句:分支

5.1、if语句

5.2、switch语句

6、C控制语句:goto

5、函数调用语句

5.1函数的定义

5.2函数的调用

5.3函数的递归


C语言的语句可分为一下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

1、空语句

 C最简单的语句就是空语句,它本身只包含一个分号。空语句本身并不执行任何任务,但有时还是有用。它所使用的场合就是语法要求出现一条完整的语句,但并不需要它执行任务。

2、表达式语句

表达式(expression)由运算符和运算对象(运算符操作的对象)组成。简单的表达式是一个单独的运算对象,以此为基础可以建立复杂的表达式。运算对象可以是常量、变量或二者的组合。

C语言表达式的一个最重要的特性的,每个表达式都有一个值。要获得这个值,必须根据运算符优先级规定的顺序来执行操作。

语句:语句是C程序的基本构建块。一条语句相当于一条完整的计算机指令。在C中。大部分语句都以分号结尾。

input = 4        //error

input = 4;       //语句

更确切地说,语句可以改变值或调用函数,虽然一条语句相当于一条完整地指令,但并不是所有地指令都是语句。

3、复合语句

复合语句是用花括号括起来地一条或多条语句,复合语句也叫块。

4、控制语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

这里先介绍一下break语句和continue语句

break语句和continue的作用:用来控制循环结构的,主要作用是停止循环

但break和continue也有着区别:

1、break用于跳出一个循环体或者完全结束一个循环,不仅不可结束其所在的循环,还可结束其外层循环

注意:(1)只能在循环体内和switch语句体内使用break

           (2)任何一种循环,在循环体中遇到break,系统将完全结束循环,开始执行循环之后的代码语句

           (3)当break出现循环体中的switch语句体内时,起作用只是跳出该switch语句体,并不能终止循环体的执行。若想强行终止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件则跳出本层循环体。

2、continue语句的作用是跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定,可以理解为只是中止(跳过)本次循环,接着开始下一次循环。

注意:(1)continue语句并没有使整个循环终止。
          (2)continue 只能在循环语句中使用,即只能在 for、while 和 do…while 语句中使用。

4.1、C控制语句:循环

为什么会出现循环呢?有的时候,当我们访问多个变量的时候,只需要对每个变量进行逐一访问就行,但是当变量数目达到一个非常大的值的时候,访问变量是不是就成为一件非常繁琐的任务,这时候,C语言就设计了循环的语法,方便我们可以执行多个相同情况的工作。而且,循环允许嵌套的,不过一般不会进行三次以上的循环。

循环语句一共有三个关键字:while,for,do while

4.1.1、while

while语法结构:

while(表达式(expression))
 循环语句(statement);

while循环的测试条件执行比较,常用递增运算符执行递增。这里的循环语句可以是以分号结尾的简单语句,也可以是花括号括起来的复合语句。

 expression部分都使用关系表达式。也就是说,expression是值之间的比较,可以使用任何表达式。如果expression为真 (或者更一般地说,非零),执行statement部分一次,然后再次判断 expression。在expression为假(0)之前,循环的判断和执行一直重复进行。 每次循环都被称为一次迭代。while循环有一点非常重要:在构建while循环时,必须让测试表达式的 值有变化,表达式最终要为假。否则,循环就不会终止(可以用break和if终止)

要明确一点:只有在对测试条件求值时,才决定是终止还是继续循环。

while语句是使用入口条件的有条件循环。所谓“有条件”指的是语句部分的执行取决于测试表达式描述的条件。该表达式是一个入口条件,因为必须满足条件才能进入循环体。如果条件一开始就为假,就不会进入循环体。

很多初学者在初次使用while语句的时候可能不小心在后面添加了一个分号,在这种情况下,原本的循环语句只会执行一次,从而导致原有实现的功能无法实现,所以一定要注意while语句后面不能加分号。

while语句小结:

关键字:while

while语句创建了一个循环,重复执行直到测试表达式为假或0。while语 句是一种入口条件循环,也就是说,在执行多次循环之前已决定是否执行循 环。因此,循环有可能不被执行。循环体可以是简单语句,也可以是复合语句。

形式:

while ( expression )

         statement

在expression部分为假或0之前,重复执行statement部分。

while语句后面不能加分号,否则会导致循环体只执行一次

4.1.2、while里的break和continue

if语句在下面将会介绍,这里也许有人看不懂,而且翻阅后面的内容再返回来分析这两段代码。

break在while循环中的作用: 在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 while中的break是用于永久终止循环的。

continue在while循环中的作用就是: continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。

4.2.1、for

一些while循环是不确定循环。所谓不确定循环,指在测试表达式为假之前,预先不知道要执行多少次循环。在创建一个重复执行固定次数的循环中涉及了3个行为:

1.必须初始化计数器;

2.计数器与有限的值作比较;

3.每次循环时递增计数器。

for循环把上述3个行为(初始化、测试和更新)组合在一处。

for语法结构:

for(表达式1; 表达式2; 表达式3)
 循环语句;

关键字for后面的圆括号中有3个表达式,分别用两个分号隔开。第1个表达式为初始化部分,用于初始化循环变量的,只会在for循环开始时执行一次。第 2 个表达式为条件判断部分,是测试条件,在执行循环之前对表达式求值。如果表达式为假,循环结束。第3个表达式为调整部分,执行更新,在每次循环结束时求值。

 对比之前的while循环语句,可以发现while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,例如:初始化部分放在while循环前面,判断条件放在while循环的开头,调整部分放在while循环的里面。当我们检查修i该while循环的条件的时候就会有点麻烦,所以,for循环这种三个条件放在一起的循环更容易让初学者接受和使用,for循环使用的频率是最高的。

for循环里面不能在循环体里面修改循环变量,这是为了防止for循环失去控制,而且,for循环提倡循环控制变量的取值采用“前闭后开区间”写法。

int i = 0;

//前闭后开的写法

for(i=0; i<10; i++) {}

//两边都是闭区间

for(i=0; i<=9; i++) {}

但是for循环也有这许多变种,当我们看到变种的for循环后不要惊讶,for循环缺失表达式的情况下也是成立的。可以省略一个或多个表达式(但是不能省略分号),只要循环中包含能结束循环的语句即可。直接用代码案例来展示:

int main()
{
    //情况1
    for (;;)
    {
        printf("hehe\n");
    }
    //for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问题。

    //情况2
    int i = 0;
    int j = 0;
    //这里打印多少个hehe?
    for (i = 0; i < 10; i++)
    {
        for (j = 0; j < 10; j++)
        {
            printf("hehe\n");
        }
    }

    //情况3
    //int i = 0;
    //int j = 0;
    //如果省略掉初始化部分,这里打印多少个hehe?
    for (; i < 10; i++)
    {
        for (; j < 10; j++)
        {
            printf("hehe\n");
        }
    }

    //情况4-使用多余一个变量控制循环
    int x, y;
    for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
    {
        printf("hehe\n");
    }
    return 0;
}

运行结果我就不截图了,读者可以copy一下代码到自己的编译软件上运行,这样更为直观的认识到for循环的变种。

注意:for循环和while循环一样,如果在for循环语句的后面加上分号,该循环体部分也只会执行一次。初学者也很容易把分号添加上去。

for语句小结:

关键字:for

for语句使用3个表达式控制循环过程,分别用分号隔开。initialize表达式在执行for语句之前只执行一次;然后对test表达式求值,如果表达式为真 (或非零),执行循环一次;接着对update表达式求值,并再次检查test表达 式。for语句是一种入口条件循环,即在执行循环之前就决定了是否执行循 环。因此,for循环可能一次都不执行。statement部分可以是一条简单语句或 复合语句。形式: for ( initialize; test; update ) statement 在test为假或0之前,重复执行statement部分。

for循环后面加分号会使循环体只执行一次

for循环是入口条件循环,即在循环的每次迭代之前检查 测试条件,所以有可能根本不执行循环体中的内容

4.2.2、for里的break和continue

 我们发现在for循环中也可以出现break和continue,它们的意义和在while循环中是一样的。类似的代码出现的运行效果截图是不一样的,是因为for循环的更新部分和while的位置不一样,出现的效果就不一样。

4.3.1、do while

C语言还有出口条件循环(exit-condition loop),即在循环的每次迭代之后检查测试条件,这保证 了至少执行循环体中的内容一次。这种循环被称为 do while循环。

do while语法结构:

do
 循环语句(statement);
while(表达式(expression));

statement可以是一条简单语句或复合语句。注意,do while循环以分号结尾。 do while循环在执行完循环体后才执行测试条件,所以至少执行循环体 一次;而for循环或while循环都是在执行循环体之前先执行测试条件。do while循环适用于那些至少要迭代一次的循环。

do while语句小结

关键字:do while

一般注解: do while 语句创建一个循环,在 expression 为假或 0 之前重复执行循环体中的内容。do while语句是一种出口条件循环,即在执行完循环体后才根 据测试条件决定是否再次执行循环。因此,该循环至少必须执行一次。

statement部分可是一条简单语句或复合语句。

形式: do

                statement

            while ( expression );

在test为假或0之前,重复执行statement部分。

do while语句后面一定要加分号,不然程序将会报错

4.3.2、do while里的break和continue

 

 通过代码和运行效果图直接检验break语句和continue语句是最直观的。

5、C控制语句:分支

分支结构(if和switch),让程序根据测试条件相应的行为。

5.1、if语句

if语句的语法结构:

if(表达式)
    语句;

if(表达式)
    语句1;
else
    语句2;

//多分支    
if(表达式1)
    语句1;
else if(表达式2)
    语句2;
else
    语句3

如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真

 简单的if语句可以让程序选择执行一条语句,或者跳过这条语句。即使if语句由复合语句构成,整个if语句仍被视为一条语句。C还提供了if else形式,可以在两条语句之间作选择。如果要在if和else之间执行多条语句,必须用花括号把这些语句括起来成为一个块。

如果一个程序中有许多if和else,编译器如何知道哪个if对应哪个else?下面提供一个测试案例更直观的认识if else匹配的规则

int main(void)
{
	int number= 20;
	
	if (number > 6)
		if (number < 12)
			printf("number false\n");
	else
		printf("number true\n");

	return 0;
}

何时打印number true?当number小于或等于6时,还是number大于12时?换言之,else与第1个if还是第2个if匹配?答案是,else与第2个if匹配。当number为5的时候不响应;当number为10的时候相应number fasle;当number为20的时候响应number true。

规则是,如果没有花括号,else与离他最近的if匹配,除非最近的if被花括号括起来

 注意:要缩进“语句”,“语句”可以是一条简单语句或复合语句

注意:if语句后面不能有分号,如果不小心多加了分号在if语句后面,那无论判断是否为真都会执行if后面跟着的语句,初学者常常做出这种画蛇添足的行为,要克制住自己写分号的欲望。

if语句允许多层嵌套的写法,有时,选择一个特定选项后又引出其他选择,这种情况可以使用另一种嵌套 if。if else语句作为一条单独的语句,不必使用花括号。外层if也是一条单独的语句,也不必使用花括号。但是,当语句太长时,使用花括号能提高代码的可读性,而且还可防止今后在if循环中添加其他语句时 忘记加花括号。

if语句小结:

关键字:if、else

一般注解: 下面各形式中,statement可以是一条简单语句或复合语句。表达式为真 说明其值是非零值。

形式1: if (expression)

                        statement

如果expression为真,则执行statement部分。

形式2: if (expression)

                        statement1

             else

                        statement2

如果expression为真,执行statement1部分;否则,执行statement2部分。

形式3: if (expression1)

                        statement1

              else if (expression2)

                        statement2

              else

                        statement3

如果expression1为真,执行statement1部分;如果expression2为真,执行 statement2部分;否则,执行statement3部分。

5.2、switch语句

switch语句用到的关键字有:switch、case和default

使用条件运算符和 if else 语句很容易编写二选一的程序。然而,有时程序需要在多个选项中进行选择。可以用if else if...else来完成。但是,大多数情况下使用switch语句更方便。

要对紧跟在关键字 switch 后圆括号中的表达式求值。

switch的语法结构:

switch ( 整型表达式)
{
    case 常量1:
        语句 <--可选
    case 常量2:
        语句 <--可选
    default : <--可选
        语句 <--可选
}

我们常见到的switch语句中的case后面都有一个break,这里的break又是有什么作用呢?

如果只希望处理某个带标签的语句,就必须在switch语句中使用break语句。break语句的实际效果是把语句列表划分为不同的分支部分。另外,C语言的case一般都指定一个值,不能使用一个范围。switch在圆括号中的测试表达式的值应该是一个整数值(包括char类型)。case标签必须是整数类型(包括char类型)的常量或整型常量表达式 (表达式中只包含整型常量)。不能用变量作为case标签。

假设case后面没有break会发生什么情况呢?会发生穿刺现象。用代码案例来展示是最好的:

如果我们进行判断的值与我们写的所有的case标签的值都不匹配怎么办?程序不会报错,也不会异常终止,因为在C语言中这种情况不是错误。但是很多程序功能都需要对这种情况做出不忽略的处理,C语言就提供default这个关键字来处理这种情况。

default 子句可以放在任何一个case标签可以出现的位置,当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。每个switch语句中只能出现一条default子句。

switch语句小结:

关键字:switch,case,defalut

程序根据expression的值跳转至相应的case标签处。然后,执行剩下的所有语句,除非执行到break语句进行重定向。expression和case标签都必须是 整数值(包括char类型),标签必须是常量或完全由常量组成的表达式。如 果没有case标签与expression的值匹配,控制则转至标有default的语句(如果有的话);否则,将转至执行紧跟在switch语句后面的语句。 形式:

switch ( expression )

{

        case label1 :

                 statement1//使用break跳出switch

        case label2 :

                statement2

        default :

                statement3

}

可以有多个标签语句,default语句可选。

当每个ceas标签后不加break,会发生穿刺现象

default子语句可以放在任意一个case标签可以出现的位置,当switch语句中有default子语句时,当出现与所有case标签不匹配的情况,将执行default子语句后面的语句

6、C控制语句:goto

C语言提供了可以滥用的goto语句和标记跳转的标号。从理论上goto语句是没有必要的,实践中没有goto语句也可以写出我们需要的程序代码。但是在终止程序在多层嵌套的结构处理中,goto语句的作用就体现出来了,能一次跳出两层或多层循环。break语句只能从最内层循环退出到上一层的循环。

goto语句有两个部分:goto和标签名。标签的命名遵循变量命名规则

goto  标签(label);

标签(label): 执行语句(statement)

goto语句真正适合的场景如下:

for(...)
    for(...)
    {
        for(...)
        {
            if(disaster)
                goto error;
        }
    }
    …
error:
 if(disaster)
         // 处理错误情况

 goto语句小结:

goto语句使程序控制跳转至相应标签语句。冒号用于分隔标签和标签语 句。标签名遵循变量命名规则。标签语句可以出现在goto的前面或后面。

形式:

goto label ;

label : statement

5、函数调用语句

5.1函数的定义

一般来说,执行源程序就是执行主函数main,其他函数只能被主函数所调用,而其他函数之间也可以相互调用。

标准库函数分为:I/O函数,字符串,字符处理函数,数学函数,接口函数,时间转换和操作函数,动态地址分配函数,目录函数,过程控制函数,字符屏幕和图形功能函数。

函数的定义:

  1. 定义无参函数
  2. 定义有参函数
  3. 定义空函数
(1)定义无参函数:
类型名  函数名()

{    函数体    }

类型名  函数名(void)

{    函数体    }

(2)定义有参函数
类型名 函数名(形式参数表列)
{    函数体    }

(3)定义空函数
类型名 函数名()
{    }

5.2函数的调用

1.函数调用时的参数传递

函数间通过参数来传递数据,即通过主调函数中的实际参数(实参)向被调用函数中的形式参数(形参)进行传递。

实参向形参传递数据的方式:实参将值单向传递给形参,形参的变化不影响实参值。

#include<stdio.h>

void swap(int a, int b)
{
	int t;
	if (a < b)
	{
		t = a;
		a = b;
		b = t;		//a中放大值,b中放小值
	}
	printf("a=%d b=%d\n", a, b);
}

int main()
{
	int a, b;

	scanf("%d%d", &a, &b);		//键盘输入

	swap(a, b);		//函数调用
	printf("a=%d b=%d\n", a, b);
	return 0;
}

  • 总结:
  • 形参在函数中是变量名,在函数调用时,形参被临时分配相应的内存,调用结束后,形参单元被释放,而实参单元保留并维持原值。
  • 实参是表达式,负责向对应的形参标识的内存单元传递数据,实参向形参的数据传递是“值传递”。
  • 实参与形参必须个数相同
  • 对应的形参和实参的类型必须一致

2.函数的返回值

(1)函数的返回值通过函数中的return语句获得。如果需要从调用函数带回一个函数值(供主函数使用),被调函数中需包含return语句。

(2)在定义函数时要指定函数值的类型

(3)函数类型决定返回值的类型。

3.函数的嵌套

定义函数时不能定义另一个函数,但是可以进行嵌套调用函数。

5.3函数的递归

1.递归概念:

函数的递归调用是指:一个函数在他的函数体内直接或间接地调用它自身。分为:直接递归(函数直接调用自身)和间接递归(函数通过其他函数调用自身)。可分为“回溯”和“递推”两个阶段。

2.递归函数的一般形式:

反值类型   递归函数名(参数说明表)
{
    if(递归终止条件)
    返回值=递归终止值;
    else
    返回值=递归调用(...)的表达式;
    return 返回值;
}

 3.递归案例——求n的阶乘

#include<stdio.h>

int fac(int n)		//定义函数
{
	int f;
	if (n < 0)
		printf("数据错误\n");
	else if (n == 0 || n == 1)
		f = 1;
	else
		f = n* fac(n - 1);			//n!=n*(n-1)
	return f;			//返回主函数
}

int main()
{
	int n, y;
	printf("请输入n的值:");
	scanf("%d", &n);
	
    y = fac(n);		//这里n为实参
	printf("%d! = %d\n", n, y);
	return 0;
}

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

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

相关文章

Flink 实时数仓 (一) --------- 数据采集层

目录 一、数仓分层介绍二、实时需求概览三、统计架构分析四、日志数据采集1. 模拟日志生成器的使用2. 日志采集模块-本地测试3. 日志采集模块-打包单机部署 五、业务数据库数据采集1. MySQL 的准备2. 环境搭建3. 代码实现 六、Nginx 安装七、Maxwell 安装八、Canal 安装 一、数…

STM32 平衡小车之电机驱动

TB6612FNG简介 单片机引脚的电流一般只有几十个毫安&#xff0c;无法驱动电机&#xff0c;因此一般是通过单片机控制电机驱动芯片进而控制电机。TB6612是比较常用的电机驱动芯片之一。 TB6612FNG可以同时控制两个电机&#xff0c;工作电流1.2A&#xff0c;最大电流3.2A。 VM电…

通信方式基础知识

文章目录 前言一、分类方式1、串行通信和并行通信2、同步通信和异步通信3、单工、半双工、全双工通信 前言 南京的梧桐树可以鲨掉我的程度 一、分类方式 1、串行通信和并行通信 串行通信&#xff1a;按位顺序&#xff0c;占用引脚资源较少&#xff0c;速度较慢 并行通信&…

移除链表元素(链表篇)

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 思路&#xff1a; ①直接使用原来的链表来进行删除操作。 ②设置一个虚拟头结点在进行删除操作 ①直接使用原来的链表…

【数据结构】- (带头结点)循环双向链表 - 详细实现思路及代码

目录 一、概述 二、循环双向链表 三、循环双向链表实现步骤  &#x1f4cc;3.1 C语言定义循环双向链表结点  &#x1f4cc;3.2 循环双向链表初始化  &#x1f4cc;3.3 循环双向链表插入数据  &#x1f4cc;3.4 循环双向链表删除数据  &#x1f4cc;3.5 循环双向链表查找数…

【python中的多线程了解一下?】

基本说明 线程&#xff08;Thread&#xff09;是操作系统进行调度的最小单位&#xff0c;是进程中的一个独立执行单元。线程与进程相比&#xff0c;具有更轻量级、更高效率、更易调度、共享资源等优点。 在传统的单核CPU中&#xff0c;操作系统通过时间片轮转算法将CPU的时间…

各种通讯总线的学习记要

一、在B站板道题看到一个比较好完视频&#xff08;爱上半导体&#xff09; 我觉得将232和485之前先将串口通信&#xff0c;因为它们都是串口通讯的变种。 串口通讯&#xff1a; 串口通讯我们约定好帧格式和波特率&#xff0c;通讯正常起始位为低开始&#xff0c;8位数据位&a…

【ABAQUS文档阅读笔记】关于体单元、壳单元、梁单元 、truss单元的总体认识

我的主页&#xff1a; 技术邻&#xff1a;小铭的ABAQUS学习的技术邻主页博客园 : HF_SO4的主页哔哩哔哩&#xff1a;小铭的ABAQUS学习的个人空间csdn&#xff1a;qgm1702 博客园文章链接&#xff1a; 学习笔记&#xff0c;from abaqus document “getting start with ABAQUS…

【代码随想录】刷题Day4

1.交换链表 24. 两两交换链表中的节点 前后指针实现 1.没有元素或者只有一个元素无意义 2.给出一个前驱prev&#xff0c;以及用来交换的两个节点cur和next 3.我当时是这么想的&#xff0c;如果两个指针一起动&#xff0c;那么就要用cur和next同时判断结束&#xff0c;也许这个…

C#基础学习--异常

目录 什么是异常 try语句 异常类 catch子句 catch子句段 finally块 为异常寻找处理程序 更进一步搜索 一般法则 抛出异常 不带异常对象的抛出 什么是异常 异常是程序运行时错误&#xff0c;它违反了系统约束或应用程序约束&#xff0c;或出现了在正常操作时未预料的情…

Windows环境下JDK内置迭代器的简介

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;今天讨论一下Windows环境下JDK内置迭代器。 相信大家已经注意到&#xff0c;为了让广大程序员能够更加方便地操作聚合对象&#xff0c;在Java、C#等编程语言中都提供了内置迭代器。 如果对这种迭代器还不了…

在JetsonNano上安装PREEMPT-RT实时核+IghEtherCAT主站的详细步骤

特别说明&#xff1a;由于本人空闲时间有限&#xff0c;此博客中所有内容均是从本人的个人笔记中摘抄出来&#xff0c;命令行大多以图片形式展示&#xff0c;不能提供复制粘贴功能敬请体谅。此外&#xff0c;第一部分关于在 Jetson Nano 上安装PREEMPT-RT 实时核的步骤比较详细…

企业工商四要素核验 API:有效应对商业欺诈和恶意交易的利器

引言 企业工商四要素核验是一种用于验证企业基本信息的方法&#xff0c;主要包括企业名称、社会统一信用代码、法人名称、法人身份证四个要素。这些要素是企业注册时必须提供的信息&#xff0c;通过对这些信息的验证&#xff0c;可以确定企业的真实性和合法性&#xff0c;通常…

【力扣-21】合并两个有序链表

&#x1f58a;作者 : Djx_hmbb &#x1f4d8;专栏 : 数据结构 &#x1f606;今日分享 : 英文文章里 : TL;DR 或者 tl;dr。 网上英文解释有两种&#xff0c;一种是Too long;Don’t read&#xff0c;另一种是Too long;Didn’t read。意思是&#xff1a;“文章太长了&#xff0c;读…

Stable Diffusion MacBookAir 手把手安装教程,以及checkpoint安装、Lora安装、civitai介绍。

目标&#xff1a; 本地部署Stable Diffusion 安装步骤&#xff1a; 安装git Git - Downloadshttps://git-scm.com/downloads安装python 3.10.6 Python Releases for macOS | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downl…

再捐1亿元种树治沙:蚂蚁集团持续七年支持内蒙古生态治理

今天&#xff08;4月22日&#xff09;是“世界地球日”&#xff0c;内蒙古自治区林草局与蚂蚁集团启动战略合作&#xff1a;由蚂蚁集团在三年内再捐资1亿元&#xff0c;通过公益项目“蚂蚁森林”支持浑善达克沙地的生态治理。这1亿元将用于当地林草生态的修复保护、沙化土地的治…

助力电力行业数字化,BI 大有可为

各地密集上马的电力工程为上下游产业链发展带去了更多市场机遇&#xff0c;“三零”“三省”办电服务的推广让企业获得了看得见、摸得着的实惠&#xff0c;电力行业正在以自身高质量发展新成效助力经济稳增长&#xff0c;为扎实推进中国式现代化建设注入强劲动能。 电力行业是…

Spring Cloud Gateway Actuator API SpEL表达式注入命令执行(CVE-2022-22947)

Spring Cloud Gateway Actuator API SpEL表达式注入命令执行&#xff08;CVE-2022-22947&#xff09; 0x00 前言 Spring Cloud Gateway是Spring中的一个API网关。其3.1.0及3.0.6版本&#xff08;包含&#xff09;以前存在一处SpEL表达式注入漏洞&#xff0c;当攻击者可以访问…

plt.title()函数中文无法显示问题

文章目录 问题描述解决办法plt.title()函数参数说明 问题描述 由于画图时plt.title()默认是显示英文&#xff0c;如果我们设置标题为中文&#xff0c;会无法显示&#xff0c;如图&#xff1a; plt.title(训练损失) plt.plot(np.arange(len(losses)), losses, -o, colorred) p…

快速学会 IDEA 中 Git 的使用与 GitHub 仓库创建、连接、发布

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录 一、Git &#x1f334;1.Git 工作流程2.Git 安装3.常用命令4.分支 二、远程仓库 GitHub &#x1f335;1.注册使用2.配置 SSH 公钥3.在 IDEA 中配置3.IDEA to GitHub4.创建分支5.commit 到仓库6.从远程仓库中抓…