自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【数据结构】单链表

【代码】【数据结构】单链表。

2025-05-17 16:32:29 65

原创 【数据结构】顺序表

【代码】【数据结构】顺序表。

2025-05-13 19:31:31 191

原创 【C语言】宏经典练习题,交换奇偶位

只需要对该二进制位进行按位与01010101即可,而01010101的十六进制数为0x55555555再向前移动一位就可变成偶数位。而偶数位同理,将二进制数与10101010进行按位与操作即可,10101010的十六进制数为0xaaaaaaaa再向后移动一位。奇数位01010101。写一个宏,可以将一个整数的二进制位的奇数位和偶数位交换。假设这个数的二进制是11111111。

2025-05-12 14:54:53 238

原创 【C语言】程序的预处理,#define详解

文章主要介绍了C语言中的预处理指令及其应用。首先,通过#define可以定义标识符和宏,标识符用于替换代码中的特定内容,而宏则可以进行简单的条件判断和参数替换。文章还介绍了#和##的用法,#将宏参数转换为字符串,##用于连接两个符号。接着,讨论了宏与函数的优缺点,宏在编译时展开,执行效率高,但可能导致代码膨胀和调试困难。此外,#undef用于移除宏定义。文章还介绍了条件编译,通过#if、#elif、#else和#endif实现选择性编译,并展示了如何判断宏是否定义。最后,提供了两种解决头文件多次包含问题的方

2025-05-11 15:52:19 183

原创 【C语言】程序的编译、链接原理简要概括

2025-05-11 12:17:14 74

原创 【C语言】单身狗问题or找不同问题用异或来解决

一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。有数组的元素是:1,2,3,4,5,1,2,3,4,6。编写一个函数找出这两个只出现一次的数字。只有5和6只出现1次,要找出5和6.

2025-05-10 16:15:32 112

原创 【C语言】文本操作函数fseek、ftell、rewind

重新定位文件指针的位置,使其指向以origin为基准、偏移offset字节的位置。成功返回0,失败返回非零值(通常为-1。

2025-05-01 15:21:37 435

原创 【C语言】文本操作函数fgetc、fputc、fgets、fputs、fprintf、fscanf、fread、fwrite

从文件中读取信息,每次读取一个字符从建盘中输入信息到文件中,每次输入一个字符。

2025-04-23 19:42:20 929

原创 【C语言】柔性数组

如果我们的代码是在一个给别人用的函数中,你在里面做了二次内存分配,并把整个结构体返回给用户。用户调用free可以释放结构体,但是用户并不知道这个结构体内的成员也需要free,所以你不能指望用户来发现这个事。所以,如果我们把结构体的内存以及其成员要的内存一次性分配好了,并返回给用户一个结构体指针,用户做一次free就可以把所有的内存也给释放掉。这样柔性数组成员a,相当于获得了100个整型元素的连续空间。连续的内存有益于提高访问速度,也有益于减少内存碎片。第一个好处是:方便内存释放。大小不包括柔性数组的内存。

2025-03-30 16:40:13 151

原创 【C语言】动态内存管理用realloc管理更灵活

在堆空间上另找一个合适大小的连续空间来使用。这样函数返回的是一个新的内存地址。要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。由于上述的两种情况,realloc函数的使用就要注意一些。realloc——动态内存空间管理更灵活。

2025-03-16 14:32:55 237

原创 【C语言】动态内存分配函数calloc

【代码】【C语言】动态内存分配函数calloc。

2025-03-16 13:26:48 230

原创 【C语言】动态内存开辟与释放函数malloc和free

所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。(要进行强制类型转化)如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。如果参数ptr指向的空间不是动态开辟的,那free函数的行为是未定义的。如果参数size为0,malloc的行为是标准是未定义的,取决于编译器。这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果参数ptr是NULL指针,则函数什么事都不做。如果开辟成功,则返回一个指向开辟好空间的指针。

2025-03-16 13:07:54 148

原创 【C语言】插入排序

在未排序区间选择一个基准元素,将该元素与其左侧已排序区间的元素逐一比较大小,并将该元素插入到正确的位置。

2025-03-14 10:30:55 164

原创 【C语言】内存操作函数memcpy、memmove、memset(最最最好懂)

memmove( )比 memcpy( )更安全,在目标区域和源区域有重叠的情况下,memmove( )的拷贝确保源串在被覆盖之前将重叠区域的字节拷贝到目标区域中,复制后源区域的内容会被更改,但目标区域与源区域没有重叠情况时与memcy( )函数相同。将一块内存区域的每个字节设置为指定的值。memmove——重叠内存的拷贝。模拟实现my_memmove函数。模拟实现my_memcpy函数。memset——内存设置函数。memcpy——内存块复制。从源头指向的内存块拷贝固定。的数据到目标指向的内存块。

2025-03-12 16:27:19 310

原创 【C语言】寻找错误信息用strerror或perror函数(最最最好懂)

相当于perror = printf + strerror。直接打印错误信息,在打印错误信息前会先打印自定义信息。perror——返回错误码对应的错误信息更简单。strerror——返回错误码对应的错误信息。多使用strsrror查bug。把错误码翻译成错误信息。

2025-03-11 19:53:32 240

原创 【C语言】字符串的查找用strstr、strtok(最最最好懂)

返回一个指向haystack中第一次出现needle的指针。如果未找到子字符串,则返回NULL。strstr( )函数用于查找子字符串在主字符串中的第一次出现。自己写my_strstr函数实现字符串查找功能。strstr——字符串的查找。

2025-03-10 19:05:39 168

原创 【C语言】排序刷题——拼数,输出最大数

要对两个拼成的数进行比较,确保最后输出的整数最大。

2025-03-09 20:47:34 97

原创 【C语言】理解函数strncat、strncpy、strncmp使用方法(最最最好懂)

char* strncat(char* dest, const char* src, int n)中n的作用。strncpy函数用于将一个字符串复制到另一个字符串。设置为 5,这样函数最多只会复制 5 个字符到。中,只需要追加其中的一部分。剩余空间只能容纳 5 个字符,那么可以将。的值来控制追加的字符数量。,我们只需要追加前 3 个字符,就可以将。str1>str2 返回大于0的数。str1<str2 返回小于0的数。的剩余空间有限时,使用。结果为abcxxxxxxx。str1=str2 返回0。

2025-03-06 21:15:00 310

原创 【C语言】指针练习画图解决(一题解所有)

答案:POINTERSTEW。

2025-03-06 19:06:40 196

原创 【C语言】消失的数字可以用异或查找

用公式求和查找 O(N)

2025-03-04 21:23:40 99

原创 【C语言】冒泡排序及使用回调函数方法

运用循环的方法,从左到右相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。一个通过函数指针调用的函数,如果把函数指针(地址)作为参数传递给另一个函数,这个指针被用来调用其指向的函数时,就叫回调函数。用回调函数模拟实现qsort,采用冒泡方式。

2025-02-26 18:25:57 202

原创 【C语言】查找字符串旋转结果(字符串左旋进阶版)两种方法

连用两个arr1,AABCDAABCD在这个字符串里面找是否有arr2。写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1。给定s1 = abcd和s2 = ACBD,返回0.AABCD左旋一个字符得到ABCDA。AABCD左旋两个字符得到BCDAA。AABCD右旋一个字符得到DAABC。

2025-02-25 20:27:34 178

原创 【C语言】理解函数strcat、strcpy、strcmp、strstr使用方法(最最最好懂)

用于追加字符串的函数,即将一个字符串中的内容追加到另一个字符串后面(不会覆盖原字符串内容)。结果为DE(arr1中的ABC被arr2中的DE完全覆盖)比较的是两个字符串中对应位置字符的ASCII值。将一个字符串中的内容拷贝到另一个字符串中(结果为 hello world。比较两个字符串内容的函数。

2025-02-25 18:15:55 205

原创 【C语言】字符串左旋与字符串逆序大同小异

实现一个函数,可以左旋字符串中的k个字符。ABCD左旋一个字符得到BCDA。ABCD左旋两个字符得到CDAB。BA GFEDC 左逆序 右逆序。方法二:部分左旋再整体左旋。CDEFGAB 整体逆序。方法一:利用循环进行左旋。

2025-02-25 17:03:40 159

原创 【C语言】在杨氏矩阵中查找一个数是否存在

杨氏矩阵:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。可以运用数组,也可以运用指针进行查找。要求:时间复杂度小于O(N);

2025-02-25 16:00:57 100

原创 【C语言】打印杨辉三角

【代码】打印杨辉三角。

2025-02-15 20:22:37 103

原创 【C语言】猜名次,猜凶手很easy

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。A选手说:B第二,我第三;B选手说:我第二,E第四;C选手说:我第一,D第二;D选手说:C最后,我第三;E选手说:我第四,A第一;比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。已知3个人说了真话,1个人说的是假话。

2025-02-15 10:43:30 134

原创 【C语言】strlen求字符串长度要考虑溢出情况

类型的取值范围是 -128 到 127。的结果在溢出后为 0,所以当。

2025-02-14 20:31:00 168

原创 【C语言】用qsort函数实现排序

待排序数组的起始数组。使用时需要包含头文件。

2025-02-13 13:53:38 211

原创 【C语言】用函数指针数组模拟计算器运行

指的是有一个数组p包含5个元素,每个元素都是指针函数,并向这五个函数中分别传入两个int 型的数。

2025-02-13 11:12:41 91

原创 【C语言】一维数组、二维数组传参的表现形式

【代码】一维数组、二维数组传参的表现形式。

2025-02-12 20:19:07 104

原创 【C语言】用指针来输出二维数组

指的是一个有10个元素的数组 p,这个数组 p 的类型是 int * 型,指向的是数组p首元素的地址,元素的类型都是 int 型。下列代码中的数组是二维数组,int ( * p) [ 4 ]是指取到数组 p 首元素的地址,再运用循环的形式找到下一行的元素。区别 int * p [10] 与 int ( * p) [10]指的是一个数组 p 有10个元素,每个元素的类型都是 int *型。

2025-02-12 20:04:02 107

原创 【C语言】用指针来输出数组内元素

int *p = arr 是指取数组arr首元素的地址,*(p+i)是指在首元素地址的基础上往前推进地址。int (* p) [10] = &arr 是指取整个数组的地址。(* p) [ i ] 是指通过数组下标找到地址再找到对应数值。

2025-02-10 21:48:58 126

原创 【C语言】数组指针的使用方法及区分方法

arr代表int (*p)[10],是指取了整个数组的地址。arr代表数组首元素地址。

2025-02-10 21:42:10 75

原创 【C语言】用指针数组列矩阵

将四个数组放到新的指针数组中,运用循环调取。

2025-02-10 21:37:41 114

原创 【C语言】float在内存中存储方法(IEEE 754规则)

IEEE 754规则。

2025-02-09 16:27:21 143

原创 【C语言】字符型在内存中存储,区分signed和unsigned

unsigned在循环中使用易出现死循环qing'k。signed和unsigned 在内存中存储的区别。signed和unsigned相加减计算。

2025-02-09 16:21:48 124

原创 【C语言】实现判断序列是否有序

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。输出为一行,如果序列有序输出sorted,否则输出unsorted。思路:设置两个数组分别代表正序和逆序,再进行分别判断。3≤n≤50 序列中的值都满足1≤val≤100。第二行输入N个整数,用空格分隔N个整数。第一行输入一个整数N(3≤N≤50)。

2025-02-07 23:32:19 130

原创 【C语言】将两个序列合成一个序列,比较后排序输出

第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。输出为一行,输出长度为n + m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。第二行包含n个整数,用空格分隔。第三行包含m个整数,用空格分隔。

2025-02-07 23:26:02 126

原创 【C语言】大小端总结

低地址 高地址。低地址 高地址。高位字节内容→低地址。高位字节内容→高地址。大端存储:11 22 33 44。小端存储:44 33 22 11。一般情况下,int存储都为小端存储。大端存储:低位字节内容→高地址。小端存储:低位字节内容→低地址。大小端是指数据存储的两种模式。

2025-02-07 23:19:12 112

空空如也

空空如也

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

TA关注的人

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