自定义博客皮肤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)
  • 收藏
  • 关注

原创 嵌入式HAL—RTC 对应的日历代码

if (rtc_is_leap_year(calendar.year) && (temp1 == 1) ) /* 当年是不是闰年/2月份 *///不足1小时 且不足1分钟的情况 /* 秒钟 */

2025-04-09 11:04:37 979

原创 数据结构-基础学习01

线性结构是简单而且常用的数据结构 ,而线性表则是一种典型的线性结构。存储数据,最简单,最有效的方法是把它们存储在一个线性表中。一个线性表是n个元素的有限序列。每个元素在不同的情况下有不同的含义,可以是整数,也可以是字符。是具有相同数据类型的 n 个数据元素的有限序列***就是把线性表中的所有元素按照其逻辑顺序依次存储到指定位置开始的一块连续的存储区域。线性表中的第1个元素的存储位置就是指定的存储位置,第i个元素的存储位置紧接第i-1个元素的存储位置的后面。

2025-02-10 09:03:58 378

原创 数据结构—使用带头双向循坏链表实现一个学生管理系统

然后实现初始化等功能具体请看源代码。创建学生结构体和循环链表的基本形式。

2025-01-18 17:41:31 308

原创 数据结构—使用顺序表实现学生管理系统

printf("请输入修改的值:学号姓名性别成绩:");printf("5:删除(指定人)\n6:修改信息\n");printf("1:系统初始化\n2:遍历学生数据\n");printf("请输入你要查找的学生学号:");printf("3:插入(尾插)\n4:查找\n");printf("7:销毁数据\n8:退出系统\n");printf("请输入你要删除的学生学号");printf("请输入你要修改的学生学号");printf("表中没有数据\n");printf("表中没有数据\n");

2025-01-18 17:33:02 884

原创 C语言-31 文件操作

把所有的设备都当作了文件。

2024-12-27 17:00:06 562

原创 C语言30-动态分配内存

1、 在程序编译或运行过程中,按事先规定大小分配内存空间的分配方式。int a [10]2、 必须事先知道所需空间的大小。3、 分配在栈区或全局变量区,一般以数组的形式。4、 按计划分配1、在程序运行过程中,根据需要大小由程序员自由分配所需空间。2、按需分配。3、分配在堆区,一般使用特定的函数进行分配。动态分配的函数malloc 函数头文件 stdlib.h函数原型: void * malloc(unsigned int size);返回值: 分配成功 => 分配空间的起始地址分配失败 => NULL注意:

2024-12-27 16:59:19 589

原创 C语言29-全局变量和局部变量

定义:在函数内部定义,或者复合语句中定义的变量作用范围:在函数中定义的变量,在函数中有效在复合语句中定义的,在复合语句中有效生命周期:在函数调用之前,局部变量不占用空间,调用函数的时候,才为局部变量分配空间,函数调用结束了,局部变量就释放了。在复合语句中定义的亦是如此 (

2024-12-27 16:58:08 876

原创 C语言28-变量和分区

预处理宏定义展开、头文件展开、条件编译,这里并不会检查语法编译检查语法,将预处理后文件编译生成汇编文件汇编将汇编文件生成目标文件(二进制文件)链接将目标文件链接为可执行程序一个C语言代码源文件需要经过如图*,**才能变 成可以被计算机执行的文件.物理内存:实实在在存在的存储设备 (硬件)虚拟内存:操作系统虚拟出来的内存操作系统会在物理内存和虚拟内存之间做映射,在32位系统下 ,每个进程的寻址范围是4G,当然写应用程序的时候,我们看到的是虚拟内存。

2024-12-27 16:56:58 183

原创 C语言27-宏和typedef

宏在C语言中使用。

2024-12-27 16:56:03 864

原创 C语言26-共用体和枚举

(1)枚举是C语言中的一种构造数据类型,它可以让数据更简洁,更易读,对于只有几个有限的特定数据,可以使用枚举.(2)枚举对应英文(enumeration,简写enum(3)枚举是一组常量的集合,包含一组有限的特定的数据(4)枚举enum 枚举名称 { 值1 ,值2,值3 .......}(5)枚举成员的类型枚举的成员默认情况下都是整数类型,通常是int类型。这意味着每个枚举成员都会被赋予一个整数值,并且这些整数值从0开始递增。

2024-12-27 16:54:27 1048

原创 C语言25-结构体

**C语言提供了****struct关键字****,允许自定义复合数据类型,将不同类型的值组合在一起,这种类型称为****结构体类型****。struct stu class[7] = { {1,"Tom",18,"男"},{2,"Jack",28,"女"} };//定义的同时即赋值。- **结构体****(struct)****可以理解为用户自定义的****特殊的复合的“数据类型”****2.不同结构体变量的成员是独立的,互不影响,一个结构体变量的成员更改,不影响另外一个。

2024-12-27 16:53:31 1100

原创 C语言:24-指针

数组指针 一定是指针 【指针数组 一定是数组普通指针: int*p=10;

2024-12-27 16:48:32 956

原创 C语言指针23-**指针和数组——专题**

(p+i) 或 *(a+i) 是 p+i 或 a+i所指向的数组元素的值,即a[i]的值。printf("b[1][2] 对应的地址/指针为:%p\n",p+1*3+2;printf("b[1][2] 对应的值为:%d\n",*(p+1*3+2));printf("b[1][2] 对应的值为:%d\n",(p[1*3+2]);二维数组arr,可视为三个一维数组: a[0]、a[1]、a[2];a[i]的数据值:a[i] 、*(p+i)、*(a+i)a[i]的地址: &a[i]、p+i 、a+i;

2024-12-27 16:46:36 742

原创 用C语言写出一个学生信息管理系统

printf(" 学号:%s 姓名:%s 语文:%.2lf数学 %.2lf 英语: %.2lf", student[i].id, student[i].name,student[i].china, student[i].maths,student[i].english);printf("学生:%s 平均分:%.2lf 名次:%d\n ",student[a].name,sum[m]/3,m+1);printf("学号:%s 姓名:%s\n",student[i].id,student[i].name);

2024-12-27 16:24:30 2033

原创 用C语言写一个学生管理系统

printf("\t\t\t* 1.添加 \t\t\t\t*\n");printf("\t\t\t* 2.显示 \t\t\t\t*\n");printf("\t\t\t* 3.查询 \t\t\t\t*\n");printf("\t\t\t* 4.修改 \t\t\t\t*\n");printf("\t\t\t* 5.删除 \t\t\t\t*\n");printf("\t\t\t* 6.退出 \t\t\t\t*\n");printf("\t\t\t* 7.清屏 \t\t\t\t*\n");

2024-12-26 21:20:47 658

原创 c语言22-指针2

/p本质上也是一个变量,他也需要一个指针去存储它的地址 这个指针叫 &p。//例如:char型指针,步长为1 int型指针步长为4 double型指针步长为8。//2、利用指针遍历 二维数组本质上也是个链表是连续排列的 需要知道在内存怎样存储的;//ppa存储的是p的地址。

2024-12-21 14:48:45 1023

原创 C语言21-指针

计算机中程序的运行都是在内存中进行的,变量也是内存中分配的空间,且不同类型的变量占用不同大小的空间。注意:1. 指针变量的名字是 p ,不是* p *p 取的是根据p所存储的变量地址 找到该变量的值;*&a和* p的作用是一样的,它们都等价于变量a。这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址 (较小的地址)。- 如果是*p 则表示*p的值不能改 但是可以修改 p 所指向的变量地址。- 如果是p 则表示p的值不能改,但是可以用*p 来改变对应变量地址的值。

2024-12-21 14:46:48 798

原创 c语言20-数组5

printf("你输入的是:%d %c %d\n", num1, op, num2);printf("你输入的是:%d %c %d\n", num1, op, num2);//字符串处理以'\0'作为结束符,后面的 l l 不会输出。printf("请输入一个数字、一个符号、再一个数字:");printf("请输入一个数字、一个符号、再一个数字:");

2024-12-21 14:45:42 444

原创 C语言19-数组4

/由于 atoi 函数不进行错误处理,并且在遇到非数字字符时会停止转换,所以在更健壮的代码中,可能会选择使用 strtol 或 //sscanf 等函数来代替 atoi,这些函数提供了更多的错误检查和处理能力。// 输出: num4 = 123,因为"123abc"中"abc"部分被忽略了。// 输出: num3 = 0,因为"abc"无法转换为整数。printf("字符串的长度:%lld\n", strlen(str));//1、strlen()获取字符串的长度,不包括"\0"字符。

2024-12-21 14:45:00 384

原创 C语言15-数组3

数组nation的前5个元素为: 'C', 'h','i','n','a' ,第6个元素为‘\0’,后4个元素也自动设定为空字符。//但字符串”hello“的实际长长只有5 ,不包含(结尾的 ‘\0’),后面空出来的45个位置,都会被初始化为 '\0'//显示以'\0'为最后一个字符元素结束 char str[]={'h','e','l','l','o','\0'};//对于 定义 3: 赋给的元素个数等于该数组的长度,则不会添加 ‘\0’,但字符串还有要求,这种写法是错误的。

2024-12-21 14:44:20 321

原创 C语言-17:数组2

例1:定义一个int型的一维数组,包含10个元素,然后求出数组中的最大值,最小值,总和,平均值,并输出来。//一个元素所占的字节数4。(1)在编程竞赛中,有10位评委为参赛的选手打分,分数分别为:5,4,6,8,9,0,1,2,7,3。

2024-12-21 14:43:25 804

原创 c语言-16:数组

/等同于 int arr[]={10,20,30,40,50}//数组arr的长度,将根据大括号里面的值的数量,确定为3。需求:声明长度为10的int类型数组,给数组元素依次赋值为 0,1,2,3,4,5,6,7,8,9并遍历数组中所有的元素。- 其下标从0开始,因此5个元素分别为arr[0] arr[1] arr[2] arr[3] arr[4]//等同于 int arr[5]={10,20,30,0,0};{ //输出数组元素 //printf("%d\n", arr[i]);

2024-12-21 14:40:36 1041

原创 c语言-15:多文件编程

为了避免同一个文件被include多次, 如果一个头文件被引用两次,编译器会处理两次头文件的内容,这将产生错误。“ ” 表示系统先在 “” 指定的路径(没写路径代表当前路径,查找当前的工程文件)查找头文件,如果找不到,再按系统指定的目录检索。#endif //把这些 写在新创建的头文件中 然后声明变量 和声明函数 即可;//把这些 写在新创建的头文件中 然后声明变量 和声明函数 即可;●在创建的对应 的头文件 xxx.c 中实现 xxx.h声明的函数。< > 表示直接按系统指定的目录检索。

2024-12-21 14:37:34 317

原创 C语言14-函数变量

全局变量的生命周期是永久的,除非手动删除;局部变量的生命周期短:函数调用后,局部变量自动释放销毁 (函数执行完毕,自动释放)在所有函数外部定义的变量称为全局变量(Global Variable),调用函数时在函数内的值 如果主函数没有定义 全局变量有定义 则取全局变量。定义在函数内部的变量称为局部变量 (Local Variable)注意:全局变量,使用前如果没有初始化,它会默认初始化为0。(作用范围)仅限于函数内部, 离开该函数后是无效的。全局变量:在函数外定义的变量;全局变量 不赋值 默认为0;

2024-12-21 14:36:05 240

原创 C语言13-函数

1、函数名左边的关键字 void 是函数的返回值,void代表函数没有返回值,int代表函数的返回值为整型。这是由编译系统提供的,用户不必自己亲自定义这些函数,可直接使用它们,例如printf()输出函数等。注意:在函数的定义不能嵌套,即不能在一个函数体里定义另外一个函数,所有的函数必须是平行的。(4)定义一个函数,打印乘法口诀表,口诀表的行数和列数,用户输入, 例如输入9,打印9。在定义函数的时候,函数的返回值类型,到底是什么类型的,取决于函数的功能。使咱们代码,模块化更好,方便调试程序,而且阅读方便。

2024-12-21 14:34:08 1635

原创 C语言-12 : 穷举法和取反法

/ printf("大马有%d,中马有%d,小马有%d\n",big,middle,smil);// //大马驼2担,中马驼1担,两只小马共驼1担,问大、中、小马各有几匹?// // 小 0 100;if(num%i==0) {printf("%d不是质数",num);// // 中 最少0 最多为 100。// //最值 大 最少0 最多为 50。// //5、现在100匹马,100担货,

2024-12-21 14:31:57 267

原创 c语言--分支结构练习

printf("工龄满%d年以上,工资%lf,最后一月工资应发:%lf", workage, salay, endsalay);printf("工龄满%d年以上,工资%lf,最后一月工资应发:%lf", workage, salay, endsalay);/* printf("输出的四位数分别是%d %d %d %d", a, b, c, d);printf("输出的四位数分别是%d,%d,%d,%d,该值",a,b,c,d);

2024-12-15 18:47:45 686

原创 C-分支结构和循环结构练习:

/使用循环结构,实现1+2+3+4+.+1000中所有偶数的累加和,所有数字的累加和 也可以使用其他的方法。printf("1+2+3+4+.+1000中所有偶数的累加和,所有数字的累加和是%d\n",sum);即该数列为1,1,2,3,5,8,13,21,34。printf("你输入的不正确 ,请重新操作\n");// 让乙方户去猜,猜对了,输出成功,猜错了,输出“大了“或“小了。printf("第%d的值为:%d\n", n1,numBer03);printf("存款成功\n");

2024-12-15 18:35:11 850

原创 C语言-用循环结构写一个三局两胜制的猜拳游戏

/ 需要定义玩家 电脑的选择;//石头 0 剪刀 1 布 2 小游戏 要求玩家和电脑开始值是石头。"最终分数:Score: User: %d, Computer: %d\n""\n输入错误. 请再次输入你的猜拳数 ( 0石头 1剪刀 2布): "// 定义 peoplesorce 和 电脑的总等分。"输入你的猜拳数 ( 0石头 1剪刀 2布): "//进行比较判断 相同的时候,电脑或者玩家获胜情况。"电脑输入的猜拳数字:%d\n""你输入的猜拳数字:%d\n""电脑赢了这一回合!

2024-12-14 15:04:20 1009

原创 C-11循环结构

/ do { 循环} while (条件 ) 先执行 之后检查条件 条件为真再次执行;printf("我要说我爱你,这是第%d次\n", count1);printf("我要说我爱你,这是第%d次\n",count);//for 中的条件可以省略 但;//for 循环 for(表达式,表达式2,表达式3) { }printf("我爱你是多么痛苦,多么坚定的信仰\n");满足某一条件 之后 不再执行本次循环中后续重复代码,进入下一次循环。1.当条件为假时,不执行循环体,否则会一直执行。

2024-12-14 14:53:41 345

原创 c-10分支结构

switch 和 if 的区别 : if 是真和假 来进行判断的 switch 是根据表达式中不同的值 来进行判断的。==== 写代码的 大于等于 最好是从大往小去写 小于等于的从小向大写。条件成立 返回值2:条件不成立 返回值1;如果if()中判断 为真 ,则执行其后的语句 ,否则不执行;顺序结构 :从上到下 顺序执行代码 默认是顺序结构;分支:根据条件判断,决定执行代码的分支;if (表达式 ){ 代码块1 }: if () { 执行代码块 }循环:让特定的代码重复执行。

2024-12-14 14:52:29 218

原创 C-09数据类型转化

/2、赋值转换 //进行赋值操作时,赋值运算符右边的数据类型必须转换成赋值号左边的类型, //若右边的数据类型的长度大于左边,则要进行截断或舍入操作。//分析result的类型 c/i=98/2 =49 1.5*1.2=1.8 49+1.8= 50 int result //"=":从“double”转换到“int”,可能丢失数据 printf("resault = %d\n", result);//将a的值, 12,转换为12.0000,再给b赋值 printf("b = %lf\n", b);

2024-12-14 14:51:46 523

原创 C-08位运算符

=> 11110001 ==》 补码取反 ==》 00001110 ==》正数 三码合一 不用变 ==》 值为14 【可见笔记本运算过程】==> 1 101 0110 ==》 取反 得到负数的原码 负号不变 ==》 1 010 1001 值为-41 【可见笔记本运算过程】~~ - 15 1000 1111 ==》符号位不变,取反加1 先取反 ==》1111 0000 ==> 加 1 得到补码。对于无符号数据,取反就是简单的按位取反,取反后的值是一个有效的无符号数,且不需要通过逆运算来恢复原始值。

2024-12-14 14:50:49 845

原创 C语言-07比较逻辑运算符

/ 0 ==相等于 比大小 printf("a==c的结果是:%d\n", a == c);// 只有0 和其他数 其他数一律为真 1 --> 0 printf("%d\n",!

2024-12-14 14:48:14 362

原创 C语言-06算术赋值运算符

{ //输出语句 为printf 输出为scanf() ​ //占位符 可以看笔记 ​ //输出字符串 ​ char* str = "江南好,怎能不忆江南?/* 公式:c1= 10+5 + 10+ 5 内存中: 11 4 10 5 (10 5 先计算 再进行赋值 给公式 ) */ //赋值运算符 += -= *= /= %= int f = 28;//f=68/40.0 结果是0.000 有问题 printf("%lf\n", 68.00/40.00);

2024-12-14 14:47:32 444

原创 C语言-05 输入和输出

输出语句 为printf 输出为scanf() //占位符 可以看笔记 //输出字符串 char* str = "江南好,怎能不忆江南?//*ptr 表示的数字内容 ptr 代表的是指针地址 printf("输出的数字为:%d,输出的指针地址为:%p\n", *ptr,ptr);printf("半径为:%2lf ,圆周率为3.14,周长为:%2lf,面积为:%2lf\n", r,c,s);printf(" 输出的内容 +占位符 ",输出项);printf("你输入的数字是%d\n",b);

2024-12-14 14:46:48 176

原创 C语言-04 原码 反码 补码 移码

{ //原码 反码 补码 //八位为例 正数的原码 反码 补码 都是其本身 如0000 0000 //负数的原码 前面1位是符号位置 用1 表示负数 0 表示正数 1000 0000 /* 反码:正数的反码是本身 负数的反码 除了符号位 其余的取反 原码 反码 0000 0000 -->0000 0000 1000 0000 -->1111 1111。将两者相加得0000 0110 + 1111 1011 = 1 0000 0001,由于溢出,只取低8位0000 0001,即1的补码(也是原码)。

2024-12-14 14:45:40 341

原创 c 语言-03

​ //八进制赋值 int b = 017;​ printf("a,b,c,d分别是:%d,%d,%d,%d\n", a1, b, c, d);//都转为了十进制 ​ printf("a,b,c,d分别是:%d,%#o,%#x,%d\n", a1, b, c, d);#include <stdio.h> #include<float.h> // #include<limits.h>// #define pro 1000 // 后面不需要 ";//float 型 printf("%lf\n", 3.14);

2024-12-14 14:44:41 309

原创 C语言-02

​ ​ //字节大小 Bit 到字节是8位 其他进制均为 1024 ​ // bit --> b --> kb --> mb--> gb --> tb--> pb ​ // 8 1024 1024 1024 1024 ... ​ //了解后 输出 数据类型在字节数大小 下例所示: ​ ​ printf("char=%lld \n", sizeof(char));//可以进行转换 输出的为大写的X。

2024-12-14 14:43:53 418

原创 C语言学习-01

声明变量:该变量在其他地方已经被定义过了 使用extern 数据类型 变量名 可以定义多次;声明变量 : 该变量在其他地方已经被定义了 在别的文件里面,本文件声明完成 就可以使用。变量 是用来存储数据的一个内存区域,并用一个名字来表示区域。shift +ctrl +/ 多行注释 ctrl+/也可以。定义变量: 占用内存 只能定义一次,需要进行创建和赋值。必须有数据类型 先定义在使用 可以重新赋值 可以改变。变量 :可以变化的量 ,用一个名字 来表示变量名。ctrl+k 或者ctrl+c 注释选定的代码块。

2024-12-14 14:43:14 330

空空如也

空空如也

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

TA关注的人

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