自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 指针的传递、偏移、自增自减

通过将指针ptr与偏移值2相加,指针偏移了两个整型大小,指向了数组中的第三个元素,最终输出该元素的值。在上述例子中,我们使用指针ptr指向数组arr的第一个元素,并通过自增操作使指针移动到下一个元素,再通过自减操作使指针回到初始位置。2.指针的偏移:可以通过对指针进行算术运算,实现对指针的偏移或访问不同位置的数据。指针偏移是通过指针的类型大小进行计算的,它指向的是内存中连续存储的下一个元素。指针的传递、指针的偏移以及指针的自增和自减是处理指针操作时常见的情况。// 通过指针修改变量的值。

2023-08-22 17:20:01 435

原创 队列与斐波那契

在C语言中,队列(Queue)是一种常用的数据结构,用来存储元素,并遵循先进先出(First In First Out,FIFO)的原则。在该例子中,我们定义了一个队列结构体,并使用initialize函数初始化队列。enqueue函数用来将元素入队,dequeue函数用来将元素出队。斐波那契数列(Fibonacci)是一个经典的数学问题,它的每个数字是前两个数字之和。在main函数中,我们创建了一个队列,并依次将元素10、20、30入队,并用dequeue函数依次将元素出队,并输出出队元素。

2023-08-08 17:09:00 156

原创 二叉树层次建树

在这个例子中,我们首先定义了一个二叉树节点的结构体。levelOrderTreeConstruction函数实现了层次建树的逻辑,它使用一个队列实现层次遍历的过程,逐个将给定的节点值插入到二叉树中。二叉树层次建树(Level Order Tree Construction)是一种通过遍历给定的节点值序列,构建二叉树的方法。它按照从上到下、从左到右的顺序逐层构建节点,并按照给定的节点值与特定规则将节点插入到二叉树中。以数组{1, 2, 3, 4, 5, 6, 7}为例,它表示要构建的二叉树的节点值序列。

2023-07-31 07:27:24 241

原创 栈与循环队列

与普通队列不同的是,在循环队列中,当队列满时,新的元素可以覆盖队列的起始位置。循环队列有两个关键指针,一个指向队列的起始位置(front),一个指向队列的末尾位置的下一个位置(rear)。常见操作包括入队(enqueue)将元素添加到队列末尾,出队(dequeue)将队列起始位置的元素移除,并且可以判断队列是否为空或已满。enqueue方法将元素添加到队列末尾,dequeue方法将队列起始位置的元素移除并返回它,is_empty方法用于判断队列是否为空,is_full方法判断队列是否已满。

2023-07-29 10:34:37 155

原创 双链表的插入与删除

在插入操作中,我们首先将新节点的prev指针指向前一个节点,next指针指向前一个节点的后继节点。在删除操作中,我们首先判断待删除节点的前一个节点和后一个节点是否存在,然后更新它们的指针,将待删除节点从链表中移除。双链表(Doubly Linked List)是一种链表数据结构,它与单链表相比,在每个节点上都有两个指针,一个指向前一个节点,一个指向后一个节点。在双链表中插入一个节点,需要先找到插入位置的前一个节点,然后通过更新指针的方式将新节点插入到前一个节点和后一个节点之间。

2023-07-28 22:19:22 1806

原创 单链表查找与删除

在上述代码中,首先检查头节点是否就是待删除节点,如果是则将头节点的下一个节点作为新的头节点返回。否则,使用一个循环找到待删除节点的前一个节点,然后将前一个节点的指针指向待删除节点的下一个节点,并跳出循环。要查找单链表中的一个节点,需要从链表的头节点开始,沿着指针依次遍历每个节点,直到找到目标节点或者到达链表的末尾(即指针为null)为止。要删除单链表的中间或尾节点,需要先找到待删除节点的前一个节点,然后将其指针指向待删除节点的下一个节点。要删除单链表的头节点,只需将头节点的下一个节点设为新的头节点。

2023-07-27 22:34:06 467

原创 线性表的顺序存储原理及实现

我们通过初始化函数 init() 初始化顺序表,并使用 insert() 函数实现插入元素的操作,使用 removeElement() 函数实现删除元素的操作,使用 print() 函数打印顺序表中的元素。顺序存储方式是将线性表的元素连续地存储在一片连续的内存区域中,通过使用数组实现。顺序存储方式的主要原理是通过数组的索引来定位元素,从而实现对线性表的操作。线性表是一种常见的数据结构,它是由一组相同数据类型的元素按照一定的顺序排列而成的数据集合。线性表可以使用不同的存储方式,其中一种常见的方式是顺序存储。

2023-07-26 21:23:41 225

原创 结构体与结构体指针

在C语言中,结构体(Struct)是一种用户自定义的数据类型,它允许您将不同类型的数据项组合在一起,以便形成一个更复杂的数据结构。而结构体指针则是指向结构体类型的指针,用于操作和访问结构体的成员。通过结构体指针 ptr,我们可以使用箭头运算符 -> 来访问和修改结构体的成员。使用结构体和结构体指针,我们可以更灵活地组织和访问复杂的数据结构。.结构体指针是指向结构体类型的指针变量,通过该指针可以操作和访问结构体的成员。下面我们将分别详细解释结构体和结构体指针,并提供相应的示例代码。

2023-07-25 19:56:14 902

原创 C语言中的时间复杂度与空间复杂度

在上述示例中,printFirstElement() 函数只打印数组中的第一个元素,无论数组的大小是多少,所需的时间都是恒定的。时间复杂度是衡量算法执行时间随输入规模增加而增长的度量。3.对数时间复杂度(O(log n)):算法的执行时间随输入规模的增加而增长,但增长速度相对较慢。1.常数时间复杂度(O(1)):算法的执行时间与输入规模无关,即执行时间恒定。4.常数空间复杂度(O(1)):算法所需的额外空间是固定的,与输入规模无关。2.线性时间复杂度(O(n)):算法的执行时间与输入规模呈线性增长的关系。

2023-07-24 17:11:49 408

原创 函数-递归调用-全局变量

在上面的示例中,addNumbers() 函数接受两个整数参数并返回它们的和。在 main() 函数中,我们调用这些函数来执行相关的操作。上面的示例中,factorial() 函数使用递归调用计算一个数的阶乘。否则,通过调用自身,将问题转化为更小的同类问题,并将结果相乘(递归情况)。.递归是将问题分解成更小的同类问题的过程,并通过调用自身来解决问题的方法。它将一组语句组织在一起,并通过提供输入作为参数,执行特定的操作,并返回结果(如果有必要)。.全局变量是在函数外部定义的变量,可以在程序中的任何位置访问。

2023-07-23 21:59:31 137

原创 gets与puts-str系列-指针本质

通过使用指针,我们可以修改字符数组中的字符,从而修改字符串。在C语言中,gets() 和puts() 函数用于读取和打印字符串。字符数组是一维数组,用于存储和操作字符串的字符序列。在上面的示例中,使用 gets() 函数从用户输入中读取字符串,并将其存储在字符数组 str 中。.gets() 函数用于从标准输入流(键盘)读取一行字符串,并将其存储在指定的字符串数组中。需要注意的是,使用 gets() 函数和直接操作字符串时,请确保输入的字符串不会超出数组的大小,以避免缓冲区溢出的问题。

2023-07-22 23:34:01 211

原创 一维数组--字符数组

当在C语言中使用一维数组(也被称为数组)时,我们可以存储和操作多个相同类型的元素。下面我们将讨论一维数组的基本概念,然后讲解字符数组的特殊情况。在上面的示例中,创建了一个具有大小为20的字符数组name。2.一维数组是连续分配的内存单元集合,每个元素在数组中都有一个唯一的索引来访问它。数组的大小(即元素的数量)在创建数组时指定,且在创建后是固定的。4.字符数组是一种特殊的一维数组,其元素的类型为字符。需要注意的是,当我们使用scanf函数读取字符串时,应确保字符数组有足够的大小来容纳输入字符串。

2023-07-20 22:59:25 228

原创 scanf循环读取与多种数据类型混合读取

在上面的示例中,使用do-while循环来重复读取用户输入的数字。当在C语言中使用scanf函数进行循环读取或混合读取多种数据类型时,我们可以利用循环和条件语句来实现。在上述示例中,使用scanf函数从标准输入读取用户的姓名(字符串)、年龄(整数)和身高(浮点数)。当需要同时读取和打印多种数据类型时,我们可以根据需要使用适当的格式控制符,并通过传递相应变量的地址给scanf和printf函数来实现。使用循环来读取多个数据可以通过循环语句(例如while、do-while、for)来重复调用scanf函数。

2023-07-19 11:43:43 760

原创 scanf读取的标准输入原理

以上代码中,我们先定义了一个函数sum来计算两个数的和。在main函数中,我们声明了两个整数变量a和b,然后通过函数调用sum(a, b)计算它们的和并将结果赋值给result变量。当在C语言中使用函数时,需要先进行函数的定义,然后可以通过函数调用来执行函数体中的代码。在函数调用时,需要指定函数名和传递给函数的参数列表。函数可以返回一个值,可以将此值分配给变量。希望这个例子能够帮助您理解C语言中函数的调用和使用。在函数定义中,需要指定函数的返回类型、函数名和参数列表。函数体中包含需要执行的代码。

2023-07-18 10:43:51 106 1

原创 五、函数的基础--3.函数的调用和使用

在这个示例中,我们定义了一个名为multiply的函数,它接收两个整数参数 a和 b,并返回它们的乘积。在main函数中,我们调用了multiply函数,将变量x和y作为参数传递给它,并将返回的结果保存在product变量中,然后使用printf函数打印结果。在这个示例中,我们定义了一个名为add的函数,它接收两个整数参数 a和 b,并返回它们的和。在main函数中,我们调用了add函数,将参数3和5传递给它,并将返回的结果保存在result变量中,然后使用printf函数打印结果。

2023-07-17 19:59:01 94 1

原创 五、函数的基础--2.函数的参数与返回值

在上述示例中,我们定义了一个名为max的函数,它接收两个整数参数a和b,并返回其中较大的值。在main函数中,我们声明了两个整数变量x和y,然后通过调用max函数,传递这两个变量作为参数,并将返回值赋给变量result。2.返回值的类型由函数定义时指定,它可以是整数、浮点数、字符、指针、结构体等。2.参数允许将数据从函数的调用者传递到函数内部,函数在执行时可以使用这些参数来完成特定任务。通过函数的参数和返回值,我们可以在程序中传递数据和获取结果,从而使代码更加模块化和可复用。

2023-07-15 21:17:37 182 1

原创 五、函数的基础--1.函数的定义与声明

函数声明是在程序中告知编译器有一个函数存在,它包含了函数的名称、返回类型以及参数列表。函数声明通常放在头文件中,让其他部分的代码可以引用该函数而无需了解函数的具体实现细节。函数定义是对函数进行具体实现的地方,它包含函数的返回类型、函数名、参数列表和函数体。函数定义提供了函数的实际代码逻辑,通过调用函数名来执行其中的代码块。函数的定义和声明的目的是将程序中的功能模块化,使得代码更加可读、易于维护和重用。在C语言中,函数是一组执行特定任务的代码块。函数的定义和声明是函数在程序中使用的两个重要方面。

2023-07-15 21:14:03 231 1

原创 四、控制语句--2.循环语句

这些循环语句在C语言中被广泛用于实现重复执行的功能,通过条件控制可以实现不同类型的循环操作。请注意,在使用循环语句时,要避免出现死循环,即循环条件无法为假而导致循环无法终止。do-while循环首先执行一次循环体,然后根据给定的条件重复执行,只有当条件为真时才继续执行。for循环在给定的初始化语句、循环条件和循环后操作表达式的控制下重复执行一段代码块。while循环根据给定的条件重复执行特定的代码块,只有当条件为真时才执行。break语句用于在循环中提前终止循环,即使循环条件仍然为真。

2023-07-14 10:11:00 66 1

原创 四、控制语句--1.条件语句

这些条件语句在C语言中被广泛用于根据不同的条件执行不同的代码,使程序具有更灵活的控制流程。它根据表达式的值与各个case标签进行匹配,匹配成功则执行对应的代码块,如果没有匹配的case标签,可以执行default代码块中的语句(可选)。if-else if-else语句允许根据多个条件执行不同的代码块。if语句根据给定的条件判断是否执行特定的代码块。C语言中的条件语句用于根据条件的真假执行不同的代码块。if-else语句在给定的条件为真时执行if代码块中的语句,否则执行else代码块中的语句。

2023-07-14 10:08:28 74 1

原创 三、运算符与表达式--5.位运算符

这些位运算符可用于对整数类型的数据进行位级操作,实现特定的功能。右移运算符将一个数的二进制位向右移动指定的位数,移出的位将被丢弃。按位异或运算符对两个操作数的每个对应位执行逻辑异或操作,生成一个新的值。按位或运算符对两个操作数的每个对应位执行逻辑或操作,生成一个新的值。按位与运算符对两个操作数的每个对应位执行逻辑与操作,生成一个新的值。按位取反运算符对操作数的每个位进行取反操作,生成一个新的值。任何位上的1会变为0,而0会变为1。左移运算符将一个数的二进制位向左移动指定的位数,移出的位将被丢弃,右侧补零。

2023-07-13 22:26:33 70 1

原创 三、运算符与表达式--4.条件运算符

如果 num 不是偶数(即条件表达式的值为假),则整个表达式的值为字符串常量 “Odd”。如果 a 的值大于 b,那么条件表达式 (a > b) 的值为真,所以整个条件运算符表达式的值为 a 的值;如果 a 的值不大于 b,则条件表达式的值为假,整个条件运算符表达式的值为 b 的值。如果条件表达式的值为真,那么整个条件运算符表达式的值为表达式1的值;如果条件表达式的值为假,整个表达式的值为表达式2的值。在C语言中,条件运算符(也称为三元运算符)是一种特殊的运算符,用于根据某个条件的真假返回不同的值。

2023-07-13 22:14:33 254 1

原创 三、运算符与表达式--3.逻辑运算符

当使用C语言进行逻辑判断和布尔运算时,我们可以使用逻辑运算符。逻辑运算符用于将多个条件组合在一起,并生成最终的逻辑结果。

2023-07-11 15:26:09 66

原创 三、运算符与表达式--2.关系运算符

这些关系运算符的示例可以用于条件语句(如if语句、while循环等)中,根据比较结果决定程序的执行路径。当然,我很乐意为您详细讲解C语言中的关系运算符,并提供示例代码来说明它们的用法。5.大于等于运算符(>=):用于检查左侧的值是否大于或等于右侧的值。6.小于等于运算符():用于检查左侧的值是否大于右侧的值。4.小于运算符(

2023-07-11 15:11:25 75

原创 三、运算符与表达式--1.算术运算符

需要注意的是,除法运算符在对整数进行除法时执行整数除法,只返回整数部分的结果,忽略小数部分。这些算术运算符可以用于整数类型(例如int、long等)和浮点数类型(例如float、double等)的操作。此外,算术运算符还有一些组合形式,例如 +=(加并赋值)、-=(减并赋值)、*=(乘并赋值)、/=(除并赋值)等,用于将运算结果赋值给操作数。算术运算符遵循一定的优先级规则,可以使用括号(())来改变运算的优先级,以满足需要。4.除法运算符(/):用于将第一个数除以第二个数,得到商。

2023-07-11 12:33:19 66

原创 二、变量和常量--3.常量的定义与使用

通过使用常量,可以提高程序的可读性和维护性,并减少代码中的魔法数字。在定义常量时,请使用有意义的名称并选择适当的数据类型,以便在程序中使用时能够清晰地传达其意图。在C语言中,常量是指程序中固定不变的值。与变量不同,常量的值在程序执行期间是不可更改的。在C语言中,我们可以使用关键字const来定义常量。上述代码使用了两个常量WIDTH和LENGTH,并将它们的值相乘,计算得到矩形的面积,并将结果输出到控制台。注意,在定义常量时,使用const关键字指定其为常量,并使用合适的数据类型来存储常量的值。

2023-07-09 12:16:13 377 1

原创 二、变量和常量--2.变量的赋值和使用

通过赋值操作和使用变量,你可以传递数据、进行计算和操作以及实现程序的逻辑。变量的赋值和使用是C语言编程中的基本操作,帮助你处理和操作数据。当你定义和声明一个变量之后,你可以使用赋值操作符(=)给它赋值,并在程序中使用该变量。赋值操作使用赋值运算符(=),将右边的值赋给左边的变量。在这个例子中,变量area的值是通过将length和width相乘的结果得到的。在程序中,一旦你给一个变量赋了值,你就可以在其他地方使用该变量的值。在这个例子中,变量x的值通过使用+=和*=运算符进行了修改。

2023-07-09 12:12:51 586 1

原创 二、变量和常量--1.变量的定义和声明

变量的定义和声明是C语言编程的基础,它们为我们创建和管理数据提供了必要的机制。5.局部变量:局部变量是在函数内部声明的变量,它们的作用域限于声明它们的函数块内部。需要注意的是,C语言是区分大小写的,所以 myVariable 和 myvariable 是不同的变量名称。变量的声明是指在程序中告知编译器变量的存在,并指定变量的类型和名称,通常在函数外部或全局作用域中进行。变量的定义是指在程序中创建一个新的变量,并为其分配内存空间。变量的作用域指的是变量在程序中有效存在的范围。

2023-07-09 12:10:33 312 1

原创 一、数据类型--3.指针类型

指针在C语言中具有重要的作用,它允许我们直接操作内存并访问数据。需要注意的是,操作指针时应谨慎,确保指针指向有效的内存地址,避免出现悬空指针和内存泄漏等问题。在C语言中,指针是一种用于存储内存地址的变量类型。指针提供了一种强大的机制,允许我们直接访问和操作内存中的数据。指针变量存储的是内存地址,它指向某个特定类型的数据。可以使用指针来操作数组元素,通过指针访问数组的效率更高。C语言中的空指针表示指针不指向任何有效的内存地址。指针支持加法、减法等算术运算,用于在指针之间进行位置的计算。

2023-07-04 11:12:18 96

原创 一、数据类型--2.数组类型

在C语言中,数组是一种用于存储多个相同类型元素的连续内存空间。数组提供了一种有效的方法来处理大量相似数据,以及在程序中组织和访问这些数据。数组的长度表示数组中元素的个数。可以使用 sizeof 运算符来获取数组的字节大小,并通过除以单个元素的字节大小来计算数组的元素个数。在C语言中,数组的声明包括元素类型和数组名,并使用方括号 [] 指定数组的大小(元素个数)。// 剩余元素将被初始化为0。数组的元素可以通过索引访问,索引从 0 开始,并依次递增。C语言也支持多维数组,这是由数组中嵌套的数组构成的。

2023-07-04 11:01:50 232

原创 一、数据类型--1.基本数据类型

C语言是一种通用的、面向过程的编程语言,它提供了一套基本的数据类型,用于表示不同类型的数据以及对其进行操作和处理。了解C语言的基本数据类型是编程的基础,它们是构建程序的基本组件之一。在C语言中,有几种基本数据类型,用于存储不同种类的数据。下面是C语言中的基本数据类型及其解释:1.整型 (int):用于表示整数值。它可以存储包括正数、负数和零在内的整数。根据平台的位数不同,int类型通常被实现为 2 或 4 个字节。例如,int x = 10;定义了一个名为 x 的整型变量,并将其赋值为10。

2023-07-02 09:33:32 153 1

原创 Visual Studio 2022版scanf函数报错解决方法

visual studio中 scanf 报错的解决方法

2023-05-15 13:22:36 302 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除