收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
R[j + 1] = R[j];
R[j] = R[0];
// 发生了交换,故将交换标志置为真
exchange = 1;
}
}
if (!exchange) // 本趟排序未发生交换,提前终止算法
return;
}
}
然后在main()函数中只调用func22()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/f956ae7dfb104d51ab12a70430c60de2.png#pic_center)
#### 3.3、C语言经典实例23-快速排序
在Main.h头文件中声明一个func23函数、Quick\_Sort函数和Partition函数,然后再Main.c源文件中定义func23函数、Quick\_Sort函数和Partition函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例23:快速排序
void func23();
void Quick_Sort(int low, int high);
int Partition(int i, int j);
Main.c源文件添加的代码如下
// 实例23:快速排序
void func23()
{
srand((unsigned)time(NULL)); // 随机数播种函数
for (i = 1; i < RMAX; i++) // 产生十个随机数
R[i] = rand() % 100 + 1; // 设定随机数范围并输出
printf("产生十个不同的随机数是:");
for (i = 1; i < RMAX; i++)
printf("%4d", R[i]);
Quick\_Sort(1, MAX);
printf("\n快速排序后的序列为:");
for (i = 1; i < RMAX; i++)
printf("%4d", R[i]);
printf("\n");
}
void Quick_Sort(int low, int high)
{
// 对R[low…high]快速排序
// 划分后的基准记录的位置
int pivotpos;
// 仅当区间长度大于1时才须排序
if (low < high)
{
// 对R[low..high]做划分
pivotpos = Partition(low, high);
// 对左区间递归排序
Quick\_Sort(low, pivotpos - 1);
// 对右区间递归排序
Quick\_Sort(pivotpos + 1, high);
}
}
int Partition(int i, int j)
{
// 调用Partition(R,low,high)时,对R[low…high]做划分,
// 并返回基准记录的位置
int pivot = R[i]; // 用区间的第1个记录作为基准
// 从区间两端交替向中间扫描,直至i=j为止
while (i < j)
{
// pivot相当于在位置i上
while (i < j && R[j] >= pivot)
j--; // 从右向左扫描,查找第1个关键字小于pivot.key的记录R[j]
if (i < j) // 表示找到的R[j]的关键字<pivot.key
R[i++] = R[j]; // 相当于交换R[i]和R[j],交换后i指针加1
while (i < j && R[i] <= pivot) // pivot相当于在位置j上
i++; // 从左向右扫描,查找第1个关键字大于pivot.key的记录R[i]
if (i < j) // 表示找到了R[i],使R[i].key>pivot.key
R[j--] = R[i]; // 相当于交换R[i]和R[j],交换后j指针减1
}
R[i] = pivot; // 基准记录已被最后定位
return i;
}
然后在main()函数中只调用func23()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/05e0565914d34c7a94cd223025139355.png#pic_center)
#### 3.4、C语言经典实例24-希尔排序2
在Main.h头文件中声明一个func24函数、Shell\_Sort函数和ShellPass函数,然后再Main.c源文件中定义func24函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例24:希尔排序2
void func24();
void Shell_Sort(int n);
void ShellPass(int d, int n);
Main.c源文件添加的代码如下
// 实例24:希尔排序
void func24()
{
srand((unsigned)time(NULL)); // 随机数播种函数
for (i = 1; i < RMAX; i++) // 产生十个随机数
R[i] = rand() % 100 + 1; // 设定随机数范围并输出
printf("产生十个不同的随机数是:");
for (i = 1; i < RMAX; i++)
printf("%4d", R[i]);
Shell\_Sort(MAX);
printf("\n希尔排序后的序列为:");
for (i = 1; i < RMAX; i++)
printf("%4d", R[i]);
printf("\n");
}
void Shell_Sort(int n)
{
// 增量初值,不妨设n>0
int increment = n;
do
{
//求下一增量
increment = increment / 3 + 1;
// 一趟增量为increment的Shell插入排序
ShellPass(increment, n);
} while (increment > 1);
}
void ShellPass(int d, int n)
{
// 希尔排序中的一趟排序,d为当前增量
int i, j;
// 将R[d+1..n]分别插入各组当前的有序区
for (i = d + 1; i <= n; i++)
{
if (R[i] < R[i - d])
{
R[0] = R[i];
j = i - d; // R[0]只是暂存单元,不是哨兵
do // 查找R[i]的插入位置
{
R[j + d] = R[j];// 后移记录
j = j - d; // 查找前一记录
} while (j > 0 && R[0] < R[j]);
R[j + d] = R[0]; // 插入R[i]到正确的位置上
}
}
}
然后在main()函数中只调用func24()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c20e799058b44c9947a073f284d788e.png#pic_center)
#### 3.5、C语言经典实例25-递归法
在Main.h头文件中声明一个func25函数和reverse函数,然后再Main.c源文件中定义func25函数和reverse函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例25:递归法
void func25();
void reverse(int x);
Main.c源文件添加的代码如下
// 实例25:递归法
void func25()
{
int x;
printf(“输入一个整数(不大于五位数):”);
scanf(“%d”, &x); // 由用户输入一个不大于五位数的整数
printf("%d反序输出的结果为:", x);
reverse(x); // 调用reverse()函数
printf("\n");
}
void reverse(int x) // 利用递归法求反序的输出
{
printf(“%d”, x % 10); // 先输出最后一位数
if (x / 10) // 如果x是大于两位的整数
reverse(x / 10); // 调用它本身
}
然后在main()函数中只调用func25()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/f0a2eeab60b5490b91caa0b7df7d841c.png#pic_center)
#### 3.6、C语言经典实例26-完数
在Main.h头文件中声明一个func26函数,然后再Main.c源文件中定义func26函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例26:完数
void func26();
Main.c源文件添加的代码如下
// 实例26:完数
void func26()
{
int i, j, k;
for (i = 1; i < 1000; i++)
{
int sum = 0;
for (j = 1; j < i; j++)
{
if (i % j == 0)
{
sum += j;
}
}
if (sum == i)
{
printf(“%d its factors are “, i);
for (k = 1; k < i; k++)
{
if (i % k == 0)
{
printf(”%d “, k);
}
}
printf(”\n”);
}
}
}
然后在main()函数中只调用func26()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/575c935bafc941dc9ba3bd12557f8ba1.png#pic_center)
#### 3.7、C语言经典实例27-斐波那契数列
在Main.h头文件中声明一个func27函数,然后再Main.c源文件中定义func27函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例27:斐波那契数列
void func27();
Main.c源文件添加的代码如下
// 实例27:斐波那契数列
void func27()
{
long f1, f2, i;
f1 = f2 = 1;
//前两项为1
printf("斐波那契(Fibonacci)数列的前20项有:\n");
//输出f1,f2
printf("%6d%6d", f1, f2);
//计算第3项到第20项
for (i = 3; i <= 20; i += 2)
{
//计算第3项到第20项
for (i = 3; i <= 20; i += 2)
{
//计算下两项
f1 = f1 + f2;
f2 = f1 + f2;
//每输出十项换行
if (i % 11 == 0)
printf("\n");
//输出f1,f2
printf("%6d%6d", f1, f2);
}
}
printf("\n");
}
然后在main()函数中只调用func27()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/a245a915d247495386335077e9a4cab3.png#pic_center)
#### 3.8、C语言经典实例28-公约数和公倍数
在Main.h头文件中声明一个func28函数,然后再Main.c源文件中定义func28函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例28:公约数和公倍数
void func28();
Main.c源文件添加的代码如下
// 实例28:公约数和公倍数
void func28()
{
int x, y, z, m, n;
printf(“请输入两个数:”);
scanf(“%d%d”, &x, &y);
m = x, n = y;
while (y != 0)
{
z = x % y;
x = y;
y = z;
}
printf(“最大公约数是: %d\n”, x);
printf(“最小公倍数是: %d\n”, m * n / x);
}
然后在main()函数中只调用func18()函数,其调试结果如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/05d8813ba21b4a44a6044839fd825214.png#pic_center)
#### 3.9、C语言经典实例29-统计单词个数
在Main.h头文件中声明一个func29函数,然后再Main.c源文件中定义func29函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例29:统计单词个数
void func29();
Main.c源文件添加的代码如下
// 实例29:统计单词个数
void func29()
{
char s[200];
int i, n = 0, flag = 1;
gets(s);//输入字符串。
for (i = 0; s[i]; i++) //遍历
{
if (flag == 1)
{
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
n = 0, flag = 1;
gets(s);//输入字符串。
for (i = 0; s[i]; i++) //遍历
{
if (flag == 1)
{
[外链图片转存中…(img-jWmQJNhM-1715867276647)]
[外链图片转存中…(img-X3TIyN4u-1715867276647)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)