自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 修改学生信息管理系统以及查询

printf("平均分: %.1f\n", manager->students[i].average);printf("总分: %.1f\n", manager->students[i].total);printf("姓名: %s\n", manager->students[i].name);printf("学号: %d\n", manager->students[i].id);printf("学号\t姓名\t\t成绩1\t成绩2\t成绩3\t总分\t平均分\n");printf("无法打开文件\n");

2025-08-11 20:59:55 487

原创 学生信息管理系统

printf("数据已保存\n");//显示所有学生信息。printf("学生数量已达到了上限\n");printf("\n学生成绩管理系统\n");printf("6.显示所有学生信息\n");printf("学生删除成功\n");printf("未找到该学号的学生\n");printf("1.添加学生信息\n");

2025-08-11 20:50:31 425

原创 在开发板上画出一个2048棋盘的矩阵

x++)//列-->宽-->x轴。y++) //行-->高-->y轴。//显示屏内存映射的起始地址。//LCD显示屏的宽度。//LCD显示屏的高度。//每个像素点所占的比特位。//int x:屏的X轴(宽度、列)坐标。//int y:屏幕y轴(高度、行)坐标。//int x0:X轴的起始点坐标。//int y0:Y轴的起始点坐标。//计算显示屏所有像素点的总字节数。//画出2048棋盘的矩阵。//int w:矩形宽度。//int h:矩形高度。//打开显示屏的驱动文件。//动态显示屏幕信息。

2025-08-07 20:36:20 554

原创 栈的输入与输出方式

/当队列中的元素的个数大于q->size时,产生溢出。//用于存储数据,整个队列中所有数据都存放在这。//实际记录的是进入队列的元素个数。//用于记录数据进队列时的下标。//用于记录数据出队列时的下标。//记录当前队列的容量。//队列头的元素溢出不存在。//没有进入队列的元素。//向队列中存入数据。//从队列中取出数据。

2025-08-05 19:53:33 382

原创 二叉树遍历代码

【代码】二叉树遍历代码。

2025-08-04 20:47:03 114

原创 二叉树的概念以及二叉树的分类,添加,删除

后序遍历:从根结点出发,则第一次到达结点A,不输出A,继续向左访问,第一次访问结点B,不输出B;到达H,H左子树为空,则返回到H,此时第二次访问H,不输出H;当到达叶子结点H,返回到D,此时已经是第二次到达D,故不输出D,进而向D右子树访问,D右子树不为空,则访问至I,第一次到达I,则输出I;I为叶子结点,则返回到D,D左右子树已经访问完毕,则返回到B,进而到B子树,第一次到达E,故输出E;中序遍历:从根结点出发,则第一次到达结点A,不输出A,继续向左访问,第一次访问结点B,BU不输出B;

2025-08-04 20:39:12 1127

原创 尾插法和倒序输出

/如果此条件成立,说明当前删除节点为首节点。//如果此条件成立,说明当前删除节点为尾节点。// 获取待删除节点前后两个节点的指针。//将待删除节点两边的节点先进性连接。//根据值删除对应节点。

2025-07-31 20:32:10 218

原创 双向链表,对其实现头插入,尾插入以及遍历倒序输出

创建一个独立节点,没有和原链表产生任何关系。//将新节点与其插入位置之后的节点进行连接。1.创建一个节点,并将链表的首节点返回。//当前函数不处理头插和尾插的情况。//获取pos位置的节点指针。//获取链表的尾节点指针。//pos=0时为头插法。

2025-07-31 19:35:57 333

原创 插入的新节点非首节点

对链表进行排序(冒泡排序)修改指定位置的节点数据。插入的新节点非首节点。

2025-07-23 21:04:40 399

原创 单向链表以及补充

函数功能: 获取链表尾节点的指针。在原链表首节点之前插入一个新节点。在原链表首节点之前插入一个新节点。删除整个链表(从前向后删除)函数功能: 输出整个链表。

2025-07-23 20:54:45 311

原创 获取链表尾节点的指针以及插入一个新的节点

在原链表的pos位置插入一个新节点。

2025-07-22 20:17:03 177

原创 浅谈链表和代码

简介:在数组中的数据我们称之为元素,而在链表中的数据我们称之为节点。1.1、数据(每一个节点中所存储的信息)删除整个链表(从前到后删除)初始化新节点中的成员变量。

2025-07-22 19:47:42 283

原创 标准文件I/O补充知识

接口由C标注你定义,与操作系统无关,同一代码可在不同平台运行,跨平台性强。5、链接文件(link):用于间接访问另外一个目标文件,相当于Windows快捷方式。2、目录文件(directory):用于存放目录项,是文件系统管理的重要文件类型。3、管道文件(pipe):一种用于进程间通信的特殊文件,也称为命名管道FIFO。6、字符设备文件(character):字符设备在应用层的访问接口。C标准库在应用层,系统·I/O驱动在内核层,硬件开发在硬件层。7、块设备文件(block):块设备在应用层的访问接口。

2025-07-21 19:34:36 530

原创 文件创建所需代码示例

osfile.c 文件。

2025-07-21 19:17:03 162

原创 标准文件I/O和系统文件I/O代码

a+ 以读和追加方式打开文件,如果文件不存在则创建,如果读文件则文件指针指向文件起始位置,如果追加(写)则文件指针指向文件末尾位置。* w+ 以读写方式打开文件,如果文件不存在则创建否则清空,文件指针指向文件起始位置。* w 以写的文件打开文件,如果文件存在则清空否则创建,文件指针指向文件起始位置。* a 以追加方式打开文件,如果文件不存在则创建,文件指针指向文件末尾位置。* r+ 以读写方式打开文件,文件指针指向文件起始位置。* 参数4:待读取文件的FILE指针。

2025-07-19 23:29:01 163

原创 标准文件和系统文件I/O

a+ 以读和追加方式打开文件,如果文件不存在则创建,如果读文件则文件指针指向文件起始位置,如果追加(写)则文件指针指向文件末尾位置。* w+ 以读写方式打开文件,如果文件不存在则创建否则清空,文件指针指向文件起始位置。* w 以写的文件打开文件,如果文件存在则清空否则创建,文件指针指向文件起始位置。* a 以追加方式打开文件,如果文件不存在则创建,文件指针指向文件末尾位置。* r+ 以读写方式打开文件,文件指针指向文件起始位置。接口是由操作系统决定,所以不能跨平台。

2025-07-19 23:21:48 500

原创 共用体(联合体)

练习2:若int占2个字节,char占1个字节,float占4个字节,sizeof(xc)的大小是()3、同样遵循内存对齐规则-->共用体所占内存大小,是成员最大类型的整数倍。3、由于枚举中存放的都是常量,所以定义的枚举变量不可以使用成员运算符。2、可以手动指定枚举常量的值,未指定的会沿用前一个值加1。&(按位与) |(按位或) ^(按位异或)1、&(按位与): 全1为1,否则为0。3、^(按位异或):相同为0,不同为1。2、|(按位或):全0为0,否则为1。4、~(按位取反):0变1, 1变0。

2025-07-17 21:17:53 507

原创 指针数组和数组指针的应用案例

用指针数组存储若干字符串,编写函数找出其中最长的字符串(若有多个,返回第一个)。:用数组指针作为函数参数,求一个M行N列二维数组的所有元素之和。

2025-07-17 20:42:13 370

原创 结构体(二)

/ 如果结构体成员是字符数组,就只能使用strcpy来赋值。// 有typedef时,PERSON是类型名;typedef struct Person // 如果使用了typedef, Person可以省略不写。// 这段代码是让结构体的指针变量有了有效内存指向,与结构体成员变量没有关系。// 最后释放内存时,切记:需要先释放成员的堆内存,最后释放结构体的内存。// 如果定义了一个结构体指针变量,那么通常我们也是先动态开辟内存。

2025-07-16 21:19:11 409

原创 结构类型:结构体、共用体、枚举

4、结构体中的所有成员变量的内存地址连续,但要符合内存对齐规则。3、结构体所占内存大小,一定是成员最大类型所占内存的整数倍。比如:最大类型为double,结构体的大小等于8的整数倍。位域的定义方式:在结构体成员变量后使用 :n(n表示二进制的位数)比如:最大类型为int,结构体的大小等于4的整数倍。在结构体内存对齐时,需要同时满足3、4、5、6这四个规则。1、定义方式不一样, 位域需要再成员变量后加 :n。4、每个成员在内存对齐时,只看其后面一个成员的类型。比如:1、2、3看4, 1、2、3、4看5。

2025-07-16 21:13:14 433

原创 函数指针与指针函数练习讲解

练习1:char *ptr;else请问指针为NULL时指向哪里,分配的空间为0时又指向哪里?代码解析:这段代码主要是调用malloc(0)来尝试分配 0 字节的内存,然后依据返回值来判断分配是否成功。NULL练习2:会出现什么问题?return 0;getmemory分配的内存地址存储在局部变量p中,函数返回后该地址丢失,导致内存无法释放。尝试打印NULL指针,以及free(str)释放。

2025-07-15 19:46:36 1528

原创 预处理阶段

预处理:主要负责以#开头的预处理指令,预处理是在编译之前进行,由预处理器完成,它会对源码进行文本替换、文件包含、条件判断等处理,生成经过预处理的源代码,然后交给编译器进行编译。4、宏的参数在文本替换时不会执行运算;1、宏是在预处理阶段进行文本替换;2、宏没有类型检查,参数类型错误不会报错;3、宏调用没有开销;6、宏难以调试,因为断点无法进入宏里面;编译器只编译源文件(.c .cpp),不会编译头文件(.h)。1、预处理阶段:主要进行宏替换、头文件展开等操作。2、编译阶段: 进行语法判断, 并生成汇编文件。

2025-07-15 19:21:50 405

原创 指针和数组(二)

/ a即代表数组首地址,也代表第0行的首地址,同时也是第一个元素的首地址。// 1、二维数组在进行函数传参时,行参需要使用数组指针。// 2、在操作矩阵数据时,使用数组指针。// 字符串数组,实际就是一个指针数组。// 1、操作多个字符串时。// 2、管理多个堆内存时。

2025-07-14 19:53:10 233

原创 数组和指针

2、指针本身只占用一个地址大小的存储空间(32位系统占4字节,64位系统占8字节),它指向的内存需要单独分配内存。4、对指针使用sizeof,得到的是一个地址的大小(32位系统占4字节,64位系统占8字节)。5、对指针变量进行取址(&)获取到的是指针变量所在内存的地址,其跟指针变量的值是不一样的。7、对数组名进行取址(&)获取的是整个数组的起始地址,但其跟数组起始地址实际上是一样。3、直接给指针赋值字符串,这种情况,字符串的值是不能被更改的。6、指向字符串常量的指针,其指向的内容是不可修改的。

2025-07-14 19:33:51 252

原创 一级指针和移位数组浅谈

函数如果是数组,其直接被弱化为指针。其中一种形式详细解释。欢迎大家指正和探讨。

2025-07-10 20:14:25 352

原创 浅谈函数传参

* 改变了ptr所指向内存的值,可以通过这种方式改变num*//* 改变了ptr的值,所以无法通过这种方式改变num*/// 函数传参:指针传递。

2025-07-09 19:45:09 70

原创 浅谈指针,内存与指针做函数参数

核心代码#if 0int main()return 0;#endif#if 1运行结果a=0;b=7.

2025-07-09 19:39:06 399

原创 C语言可变参数感悟

在C语言中,可变参函数是指参数数量不固定的函数,比如printf\scanf。*4.va list:声明参数列表变量的类型,用于访问可变参列表。*1、包含头文件 #include <stdio.h>*7.va end:清理释放参数列表相关资源。*返回类型 函数名(固定函数,.....)//初始化,且定位到第一个可变参数。*2.定义函数:固定参数在前,可变参在后。*5.va start:初始化参数列表。*6.va arg:获取可变参数。//声明参数列表变量。*3.至少有一个固定参数。

2025-07-08 20:25:58 248

原创 C语言函数的声明

在C语言中,函数是一段具有特定功能的独立代码块,它可以接收输入参数、执行相关操作并返回结果。返回类型 函数名(形参列表) { //函数体 } 只有函数定义而没有函数声明可能会编译警告或出错(函数声明可以忽略不写) 函数定义一般写在源文件中 .c.cpp。

2025-07-08 20:19:42 765

原创 形参和实参

函数定义时指定的参数,形参是用来接收数据的,函数定义时,系统不会为形参申请内存,只有当。主要用于存储实际参数,并且当函数返回时,系统会自动。实参与形参在内存中占据不同的内存空间,(建议实参和形参名称是一样的)类型,此时程序不报错,因为符合自动类型转换的规。类型,此时将满足强制类型转换的条件,需要手动转。语句返回的数据类型一致,如果不一致,以函数定时。,实参只是将自身的值传递给形参,而不是实参本。定义一个函数,求两个数中的最大数。定义一个函数,求两个数中的最大数。,只不过当我们的函数返回类型是。

2025-02-20 19:50:20 541

原创 【无标题】数组的应用——综合案例

数组中的所有元素都必须是同类型的。从第一个字符开始逐个检查字符串中的每一个字符。语言中无字符串变量,字符串是以字符数组形式存放的。必须是字符数组,的长度必须足够大,以便于能够容纳被链接的字符串。用连续若干个空格算一个、一行开头的空格不计的方法决定单词数目;输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。由基本类型的数据按一定规则构成的数据称为构造类型数据。注意数组的定义形式和数组元素的引用形式的本质区别。注意:返回字符串中包含的字符的实际个数,不含。可以是字符数组,也可以是字符串常量。

2025-02-18 19:50:23 1110

原创 二维数组的遍历

字符数组的语法就是我们前面所学的一维数组和二维数组的语法,只不过数组的数据类型是。如果提供的字符个数与数组长度相同,可以省略数组长度,系统会自动确定元素个数,适。创建一个二维数组,经过论证,二维数据组必须指定列的大小,行的大小可以省略。字符型的数组,字符数组往往是用来存储字符串数据的。数组初始化的时候,没有完全初始化值的时候,空出来的地方使用。支持两种赋值形式,一种是字符,一种是数值,如果是数值表示。此时属于未初始化,元素的值是不确定的(随机值),大概率是。如果定义时,不初始化,元素值不确定。

2025-02-17 19:23:58 655

原创 二维数组的感悟

二维数组本质上是一个行列式的组合,也就是说二维数组由行和列两部分组成。二维数组可被视为一个特殊的一维数组,相当于二维数组又是一个一维数组,只不过它的元素是一。注意:使用数组元素的下标应在已定义数组的大小范围内;语言中,二维数组在计算机的存储顺序是按行进行的,即第一维的。(也就是说数组的元素的类型可以是数组类型)可对部分元素赋初值,其余未赋值部分自动填充。错误,这种写法,会编译标错,不能省略列数。若对全部元素赋初值,自定义数组时可以省略第。错误,这种写法,会编译标错,不能省略列数。正确,未初始化的元素使用。

2025-02-15 21:36:51 462

原创 数组的感悟以及应用

数组的类型说明符由数组中的元素来决定,类型说明符也就是数据类型,元素是什么类型,数。数组可以部分初始化,也就是可以给数组中前几个元素初始化,未被初始化的元素系统将自动。数组可以部分初始化,也就是可以给数组中前几个元素初始化,未被初始化的元素系统将自动。每次排序假定第一个元素是最大或者最小的,用第一个元素的后面的元素一一与第一个元素。比较,遇到较大或者较小的和第一个元素交换,访问完数组的最后一个元素,就排好了一个。数组中的数据被称之为数组的元素(数组中的每一个匿名的变量空间),是同构的。

2025-02-14 19:46:42 1010

原创 【无标题】if语句的嵌套

后括号内的表达式可以是任意类型的表达式,但是表达式的值尽量是整型、字符型、后面的常量表达式的值必须不相同,否则出现矛盾。实现多分支选择结构(多分支也被称作多路分支)若表达式的值与某个常量表达式的值相等时,执行此。需求:按照考试成绩的等级输出百分制分数段。要求:根据学生的成绩,对学生进行分级,表达式的结果建议是 字符 或者 整型。表达式的结果建议是 字符 或者 整型。:不借助于执行顺序,做更精准的判断。:按照考试成绩的等级输出百分制分数段。:借助于执行顺序,减少判断的条件。创建一个变量,用来存放输入的成绩。

2025-02-14 19:22:28 969

原创 循环结构感悟

无限循环:其实就是死循环,程序设计中尽量避免无限循环,如果非要使用,那么这个循环一。特点:先执行,后判断,不管条件是否满足,循环体语句至少执行一次。,我们需要赋初值,循环变量可以是单个,也可以是列表,多个循环。,用来限制循环的次数,循环条件支持关系表达式、逻辑表达式,举。特点:先执行,后判断,不管条件是否满足,至少执行一次。特点:先判断,后执行,如果条件不满足,一次都不执行。先判断,后执行,循环题语句有可能一次都不执行。计算完之后,再循环体的末行,对循环条件进行更新,

2025-02-13 23:48:19 1284

原创 分支结构感悟

0 非0 非0 0 0 非0。0 非0 0 0 非0 非0。条件判断的结果是逻辑值(布尔类型值,也就是说分支语句的条件可以使用关系表达式和逻辑表达。注意:对于单语句的双分支,我们可以使用三目(三元)运算符的写法简化。),则执行表达式后面的语句,执行完该语句后继续执行。),则执行表达式后面的语句,执行完该语句后继续执行。

2025-02-11 20:41:12 1020

原创 Linux基础篇感悟

说明:该指令是从文件系统的数据库中查找,确定是新创建的文件没有在数据库中建立索引,:复制文件或者文件夹(注意:文件夹需要递归复制,这里的复制其实就是拷贝。(管道):将前一个指令执行的结果作为后一个指令执行的条件(了解)追加式写入,就是在原本文件内容末追加内容(保留原本的内容):搜索文件内容,在文件中查找指定的字符序列(字符串):删除文件或者文件夹(注意:文件夹需要递归删除):显示指定路径(默认当前路径)下的文件或者目录。:显示所有(包含隐藏文件或目录)文件或目录。:返回上一次操作的工作目录(类似于上一步)

2025-02-10 20:42:16 563

原创 C语句和数据的输入输出

x 用于基本整型 int %xl 用于长整型 long。

2025-02-10 19:18:11 1294

原创 【无标题】浅谈循环结构和算法

特点:各操作是按先后顺序执行的,是最简单的一种结构,这个结构是默认的。特点:根据是否满足给定条件而从两组或者多组操作中选择一种进行执行。确定性:算法中的每一条指令必须有确切的含义,不能产生歧义。广义的说,为解决一个问题而采取的方法和有限的步骤,就称为。广义的说,为解决一个问题而采取的方法和有限的步骤,就称为。有穷性:包含有限的操作步骤,不能无限制的执行下去。可行性:算法中的每一条指令必须是切实可执行的。条件是否成立,如果仍成立,再执行。框所指定的操作后,必然接着执行。是否成立,如果成立,再执行。

2025-02-09 21:23:39 312

空空如也

空空如也

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

TA关注的人

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