自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (3)
  • 收藏
  • 关注

原创 数据结构--树--二叉树的创建和遍历(前序、中序、后序、层序)

二叉树的存储结构;二叉树的创建;二叉树的遍历;前序遍历中序遍历后序遍历层序遍历

2022-04-17 16:15:00 2326 4

原创 数据结构--树--二叉树的定义、基本概念和性质

文章目录🎄二叉树的定义⭐1.二叉树的特点⭐2.特殊的二叉树🎇(1)斜树🎇(2)满二叉树🎇(3)完全二叉树⭐3.二叉树的一些性质🎇性质1:在二叉树的第i层上至多有2i-1个结点(i≥1)。🎇性质2:深度为k的二叉树至多有2k -1个结点(k≥1)。🎇性质3:对任何一棵二叉树T,如果其叶子结点数为n0,度为2的结点数为n2,则有n0=n2+1🎇性质4:具有n个结点的完全二叉树的深度为[ log2n ] +1🎇性质5:鄙人乃一介初学者,文中及代码中难免出错,恳请同志们批评指正!或许你曾看到过这样的图

2022-04-16 18:35:04 1030 3

原创 数据结构--树--树的定义和基本概念

文章目录🎄前言🎄树的基本概念⭐1.树的定义:⭐2.树的一些概念🎇结点的度和结点分类:🎇结点之间的关系:🎇树的层次和深度🎇路径、树的次序和森林鄙人乃一介初学者,文中及代码中难免出错,恳请同志们批评指正!🎄前言我们在前面的篇章中已经学习了很多数据结构:顺序表、链表、栈、队列等等,但是它们在逻辑上都属于线性结构,也就是从前到后贯穿,中途并没有分支。但是在我们的生活中,这种单纯的线性结构并不足以描述所有的逻辑结构,比如你自己家里的亲族关系,从爷爷奶奶开始,如果你的爸爸妈妈都有兄弟姐妹,那么一定会有

2022-04-16 13:38:46 2381

原创 球钟问题---栈与队列的应用

文章目录🍔球钟问题描述🍔球钟问题分析🍔代码实现 本文中涉及的代码已提交至Gitee,可以点击链接参考。鄙人乃一介初学者,文中及代码中难免出错,恳请同志们批评指正!🍔球钟问题描述球钟是一个利用球的移动来记录时间的简单装置,它有三个可以容纳若干个球的指示器:分钟指示器、五分钟指示器、小时指示器。若分钟指示器中有2个球,五分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32。其工作原理是:每过一分钟,球钟就会从球队列的队首取出一个球放入分钟指示器,分钟指示器最多可容纳4个球。当放入第

2022-04-16 11:08:10 605 5

原创 数据结构--队列--链式队列入队、出队等基本操作的实现(C语言)

文章目录🎄链式队列结构定义⭐1.创建并初始化队列⭐2.入队⭐3.出队⭐4.遍历打印链式队列中的元素⭐5.判断队空⭐6.计算队列中的数据个数⭐7.动态内存释放🎄各操作测试代码及结果本文涉及完整代码及测试代码均已提交至Gitee,大家可以点击链接参考。鄙人乃一介初学者,文中及代码中难免出错,恳请同志们雅正!我们在之前使用顺序结构的存储方式实现了队列,其中因为要解决时间复杂性还使用了循环队列来实现。既然队列是一个线性表,那么使用链式结构同样可以实现队列。接下来我们看看如何实现链式队列。🎄链式队

2022-04-15 23:46:11 10263 1

原创 数据结构--队列--顺序循环队列的操作实现(C语言)

文章目录🎄队列是个什么样的数据结构?🎄循环队列🎄顺序循环队列的实现⭐1.创建初始化队列⭐2.入队⭐3.出队⭐4.队列遍历打印⭐5.清空队列⭐6.判断队列空⭐7.判断队列满⭐8.动态内存释放🎄总结本文中涉及的完整代码及各操作测试代码均已提交至Gitee,大家可以点击链接参考。鄙人乃是一介初学者,文中及代码中难免出错,请同志们批评指正!🎄队列是个什么样的数据结构?我们前面介绍过栈,栈乃是一个只有一个口的直筒子。那么队列,其实是一个两端开口的直筒子。其实这里的队列就基本相当于我们生活中的队列。

2022-04-15 15:51:12 5442 2

原创 数据结构---链式栈及其入栈、出栈等操作的实现(C语言)

文章目录🎄链式栈🎄链式栈的基础操作实现⭐1.链式栈的初始化⭐2.链式栈入栈操作⭐3.链式栈出栈操作⭐4.判断链式栈是否空⭐5.遍历打印链式栈中元素⭐6.计算链式栈元素个数⭐7.动态内存释放🎄栈本文中涉及的完整代码及各操作测试代码均已提交至Gitee,大家可以点击链接参考。因本人为编程初学者,文中及代码中难免出错,请同志们批评指正!🎄链式栈上文我们讲述了顺序栈的实现,既然有顺序存储的栈,那么肯定就有链式存储的栈,本文将简要介绍链式栈的实现。其实,和单链表的实现几乎一模一样,所不同的只是链表中

2022-04-14 19:20:58 9632 6

原创 数据结构---栈的概念及顺序栈入栈、出栈等操作的实现(C语言)

文章目录🎄栈的基本概念🎄顺序栈及其操作的实现⭐1.顺序栈的初始化⭐2.顺序栈入栈操作⭐3.顺序栈出栈操作⭐4.判断顺序栈是否空⭐5.判断顺序栈是否满⭐6.遍历打印顺序栈中元素⭐7.清空顺序栈中元素⭐8.计算顺序栈元素个数⭐9.动态内存释放本文中所涉及的完整代码及测试代码等已提交至gitee,可以点击此链接查看参考。因为本人是编程初学者,文中及代码中难免出现错误,请同志们批评指正!🎄栈的基本概念上图是一个羽毛球筒,它只有一端开口,羽毛球在其中挨个存放,如果我们想往里面放入一只羽毛球,只能从

2022-04-14 13:24:24 8132 2

原创 数据结构--单向链表及其增、删、改、查、排序等操作的实现(C语言)

文章目录🎃链表🎃单向链表的实现(C语言)📌结点类型描述📌1.创建初始化一个链表结点📌2.从链表尾部插入数据📌3.链表遍历打印📌4.查找链表:按结点序号查找📌5.查找链表:按数据内容查找📌6.在任意位置插入一个数据📌7.删除链表:按结点序号删除📌8.删除链表:按数据内容删除📌9.free释放内存📌10.求链表数据个数🎃单向链表总结本章内容:单链表的概念;单链表结点模型;单链表的各运算实现。本文涉及实现单链表完整代码已提交至码云Gitee中,供读者参考。🎃链表我们之前实现了数据结构中第一个结构–顺序

2022-04-10 22:41:29 2203

原创 数据结构之顺序表及其实现

文章目录🎆 前言⚾ 什么是线性表?1.线性表的数学表述:2.线性表的特点:⚾代码编写规范🎆 顺序表的实现⚾1.创建并初始化:ListInit();⚾2.判断是不是空表:ListIsEmpty();⚾3.查表长:ListLen();⚾4.向表中添加元素:ListInsert();⚾5.遍历顺序表并打印:ListShow();⚾6.清空顺序表:ListClear();⚾7.释放顺序表开辟的空间:ListFree();⚾8.删除顺序表中元素:ListDelete();⚾9.查找定位表中某个元素:ListLoc()

2022-04-09 18:46:06 782

原创 数据结构--基本概念和学习目标

1968年美国克努特教授开创了数据结构的最初体系,所著《计算机程序设计的艺术》一书被誉为程序员的圣经。那么到底什么是数据结构呢?其实,数据结构就是研究计算机中数据与数据之间的关系,包括逻辑结构和存储结构。 数据的逻辑结构数据的逻辑结构表示数据运算之间的抽象关系。按每个元素可能具有的直接前趋数和直接后继数将逻辑结构分为“线性结构”和“非线性结构”两大类。 通常有:集合、线性表、树、图等常见的逻辑结构。逻辑结构是指数据内部的数据的本身的属性,与我们如何处理没有任何关系。1.集合:集合——数据元素间除

2022-04-08 13:20:46 785

原创 C语言---条件编译、文件包含、.h头文件书写

🍍 条件编译如果我们在代码编写过程中,有一段代码弃之可惜,保留无用你会如何做呢?是直接删除还是大面积注释?当学习了解条件编译以后,就可以条件编译来“装b”的注释掉了。那么,让我们来看看什么是条件编译!条件编译,顾名思义,就是有条件的进行编译。举个例子:#include <stdio.h>#define DEBUGint main(){ int i = 0; int arr[10] = { 0 }; for (i = 0; i < 10; i++) { arr[i.

2022-04-07 17:36:04 2793

原创 C语言--预处理详解---#define的用法及注意事项

文章目录🍎 预定义符号🍎 #define🍧 #define定义标识符🍧 #define定义宏🍧 #define 替换规则🍧 \# 和 \##🍧 带副作用的宏参数🍧 宏和函数对比🍎 预定义符号形如:__FILE__ //进行编译的源文件__LINE__ //文件当前的行号__DATE__ //文件被编译的日期__TIME__ //文件被编译的时间__STDC__ //如果编译器遵循ANSI C,其值为1,否则未定义这些都叫做C语言中的预定义符号,它们各自

2022-04-07 15:28:31 1907

原创 C语言--程序的翻译环境(编译和链接)和运行环境

文章目录

2022-04-06 23:42:55 861

原创 C语言---文件操作及文件操作函数详解

文章目录一、为什么使用文件?二、什么是文件?三、文件的打开和关闭3.1 文件指针3.2 文件的打开和关闭本章重点为什么使用文件什么是文件文件的打开和关闭文件的顺序读写文件的随机读写文本文件和二进制文件文件读取结束的判定文件缓冲区一、为什么使用文件?从本专栏第一篇博客起到现在,我们写过的所有的程序,包括扫雷、三子棋、通讯录,它们的运行都是一次性的。当运行程序时,我们所写入和输出的内容都是存储于计算机内存中的,当程序运行结束就会消失。当重启程序,我们还得重新开始操作,这无疑是不合理的

2022-04-06 13:45:19 3100 2

原创 C语言--三组输入输出函数对比(scanf/fscanf/sscanf、printf/fprintf/sprintf)

文章目录前言1. scanf 和 printf 函数2. fscanf 和 fprintf 函数2.1 fprintf函数2.2 fscanf函数3. sscanf 和 sprintf 函数总结前言在C语言中有这么三组输入输出函数,分别是:scanf和printf、fscanf和fprintf、sscanf和sprintf这三组函数都有着输入输出的功能,但它们的区别在哪里呢?下面分别来介绍:1. scanf 和 printf 函数函数原型:int scanf( const char *fo

2022-04-05 16:01:11 488

原创 C语言实现简易通讯录3.0(通讯录信息可以向文件写入,从文件读取)

我们在前文中介绍了如何实现简易通讯录后来又改进了通讯录,使之可以进行动态内存管理。但是,我们的通讯录程序是只能一次性使用的,退出程序所有的内容都消失了,那么本文就来实现将通讯录的数据写入到硬盘上的文件。再次打开程序时,再从文件上读取数据。实现数据的持久性。代码如下:addressBook.h文件#pragma once//头文件#include <stdio.h>#include <string.h>#include <stdlib.h>#def

2022-04-05 14:17:10 1520 3

原创 C语言实现简易通讯录2.0(动态内存管理)

我们在前文中介绍了如何实现简易通讯录,但是我们发现,如果直接在栈区开辟一个1000个大小为PeoInfo结构体大小的空间,而我们只使用了那么几个,不免有些过于浪费,于是我们考虑使用动态内存开辟来让空间使用更加合理。具体不再赘述,需要动态修改的内容只在几个函数中有所改变,代码中已经加注 动态版本: 的部分就是需要修改的部分。完整代码如下:addressBook.h文件:#pragma once//头文件#include <stdio.h>#include <string.

2022-04-05 14:12:04 725

原创 C语言---柔性数组

文章目录前言1. 柔性数组的特点2. 柔性数组的使用3. 为何选择柔性数组前言结构中最后一个元素允许是未知大小的数组,这个数组就是柔性数组。但结构中的柔性数组前面必须至少一个其他成员,柔性数组成员允许结构中包含一个大小可变的数组,sizeof返回的这种结构大小不包括柔性数组的内存。包含柔数组成员的结构用malloc函数进行内存的动态分配,且分配的内存应该大于结构的大小以适应柔性数组的预期大小。柔性数组的定义:struct test { short len; // 必须至少有一个其它成员

2022-04-04 16:19:07 141

原创 C语言--C/C++的内存开辟--C语言程序中的变量都存放在内存的什么地方

我们知道C语言程序中有全局变量、静态变量、局部变量等等,还知道内存分为堆区、栈区、静态区等等。那么这些不同的变量和这些不同的内存划分有什么关系呢?通过上图可以简单了解到各类型变量在内存中的位置。C/C++程序内存分配的几个区域:栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。堆区(heap

2022-04-04 00:35:23 521

原创 C语言--这几道经典笔试题,你能一眼看出陷阱吗?

题目1问:有如下代码,Test()函数的运行结果如何?void GetMemory(char* p){ p = (char*)malloc(100);}void Test(void){ char* str = NULL; GetMemory(str);//值传参 strcpy(str, "hello world"); printf(str);}int main(){ Test(); return 0;}结果:这条代码会运行出结果,但是并不会和我们预想的一样打印出“

2022-04-03 23:26:28 664 1

原创 c语言--动态内存管理---动态内存函数的使用与常见的动态内存错误

文章目录前言一、为什么存在动态内存分配二、动态内存管理函数前言在程序设计中,有时候我们创建的某个变量需要在内存中开辟很大空间,但是只是为了保障这个变量的最大值能放下,在大部分场景下,并不需要那么大的空间。那么如果一开始就根据最大限度来开辟空间,而在实际使用中大部分空间不是被浪费了吗?有没有一种方法,能让我们动态地开辟空间,数据少了就减少空间,数据多了再慢慢开辟?本文将介绍动态内存管理地几个方面:为什么存在动态内存分配动态内存函数的介绍- malloc- free- calloc- rea

2022-04-03 21:08:20 681

原创 C语言实现简易通讯录(增、删、查、改、排 功能)

文章目录前言一、实现思路1.1 整体架构搭建1.2 通讯录结构体定义与声明1.3 增加通讯录信息函数1.4 删除通讯录信息函数与查找信息函数1.5 修改通讯录信息函数二、完整代码2.1 addressBook.h文件2.2 addressBook.c文件2.1 main.c文件前言学习了结构体、枚举、联合这三种自定义类型,再融合之前学过的知识,尝试写一个通讯录程序。要求:该通讯录能存放1000个人的信息。每个人的信息包括:姓名+年龄+性别+电话+地址;增加通讯录信息;删去通讯录信息;查找通讯

2022-04-01 21:15:24 2039

原创 C语言--两种自定义类型:枚举、联合

文章目录前言一、枚举1.1 枚举类型的定义1.2 枚举的优点二、联合(共用体)2.1 联合类型的定义、特点2.2 联合的一个应用示例2.3 联合大小的计算前言上文我们已经介绍过自定义类型之结构体,本文将继续介绍自定类型剩下的两种:枚举、联合。本文涉及到的主要内容有:● 枚举 :a. 枚举类型的定义b. 枚举的优点c. 枚举的使用● 联合 :a. 联合类型的定义b. 联合的特点c. 联合大小的计算一、枚举枚举顾名思义就是一一列举。把可能的取值一一列举。比如我们日常

2022-04-01 16:25:06 144

原创 C语言--一文读懂自定义类型之结构体

文章目录结构体1.1 什么是结构体?1.2 结构体的声明1.3 结构体的引用1.3.1 结构体内引用其他结构体1.3.2 结构体自引用1.4 结构体变量的定义与初始化1.4.1 结构体变量定义1.4.2 结构体变量初始化1.4.3 结构体的访问1.5 结构体内存对齐1.5.1 什么是内存对齐?1.5.2 为什么要内存对齐?1.5.3 如何改变结构体内存大小?1. 不修改默认对齐数2. 修改默认对齐数1.6 结构体传参1.7 位段1.7.1 什么是位段?1.7.2 位段的内存分配1.7.3 位段的跨平台问题

2022-03-31 19:06:16 460

原创 C语言--字符串操作函数、内存操作函数介绍及模拟实现

文章目录前言一、函数介绍1.1 strlen1.2 strcpy1.3 strcat1.4 strcmp1.5 长度受限制的字符串函数strncpy、strncat、strncmp1.5.1 strncpy1.5.2 strncat1.5.3 strncmp1.6 strstr1.7 strtok1.8 strerror1.9 perror1.10 字符分类函数1.11 memcpy1.12 memmove1.13 memcmp1.14 memset二、库函数模拟实现2.1 模拟实现strlen2.2 模拟

2022-03-29 23:20:07 1036 2

原创 C语言--指针进阶3--这些指针和数组相关的题目你都会做吗?

此章主要记录一些和指针、数组相关的笔试题目。

2022-03-27 00:15:42 1039

原创 C语言--指针进阶2--函数指针、函数指针数组、指向函数指针数组的指针、回调函数、qsort()函数示例与模拟实现

文章目录六、函数指针七、函数指针数组7.1函数指针数组的定义7.2函数指针数组的用途--转移表八、指向函数指针数组的指针九、回调函数9.1回调函数演示之一9.2回调函数演示之二(qsort()函数)六、函数指针顾名思义,函数指针就是指向函数的指针,即存放函数地址的指针。void test(){ printf("hehe\n");}int main(){ printf("%p\n", test); printf("%p\n", &test); return 0;}输出结果

2022-03-24 18:02:46 456

原创 C语言--指针进阶1--字符指针、数组指针、指针数组、数组传参和指针传参

前言在指针初体验(C语言–指针初体验)中我们简单了解了指针的知识和使用:指针就是个变量,用来存放地址,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(32位平台/64位平台)。指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限。指针的运算。那么从本文开始将记录在深入学习指针过程中的一些课件摘录和学习笔记。一、字符指针二

2022-03-24 13:40:19 2102 1

原创 模电学习笔记--二极管

二极管1.二极管导通压降为0.7V,发光二极管导通电流为5-20mA,导通电压为1.66V(红色),不同颜色的发光二极管有所不同。2.由1中特性可知,若有一个二极管电路,可以通过二极管导通电压和电源电压、电流来计算电阻的大小。3.当二极管电压小于0.5V时,不会导通,大于0.5V后才开始导通。4.二极管反向不导通,只有当电压达到击穿电压时才导通,电流将变得很大。要注意二极管反向电压最大值,防止二极管被烧坏。稳压二极管5.稳压二极管:能够稳定一定电压的二极管。工作条件:工作在反向击穿状态下;反

2022-02-15 11:43:07 4352 1

原创 C语言--数据的存储

目录前言一、数据类型介绍1.1类型的基本分类1.整型家族2.浮点型家族3.构造类型--自定义类型4.指针类型5.空类型二、整形在内存中的存储1.引入库2.读入数据总结前言关于本节数据的存储主要有以下内容:1. 数据类型详细介绍2. 整形在内存中的存储:原码、反码、补码3. 大小端字节序介绍及判断4. 浮点型在内存中的存储解析一、数据类型介绍C语言中,主要的数据类型有:char //(1字节)字符数据类型

2022-01-30 10:33:50 770 2

原创 C语言--两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?

编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?输入例子 : 1999 2299输出例子 : 7思路分析对于二进制序列,我们要判断每一位的情况,最好从最后一位开始一位一位的往前开始观察。这里有个常见思路,就是让这个数按位与(&)上1,来观察结果是1还是0,如果是1,则表示当前二进制序列最后一位是1,如果是0则表示当前二进制序列最后一位是0当前:0011 0001位与:0000 0001结果:0000 0001(结果为1,则表示最后一位是1)判断完

2022-01-26 17:44:18 750 1

原创 C语言--输出一个整数的每一位(使用递归和不使用递归)

思路分析要输出一个整数的每一位,那么就要把这个数的每一位剥离。如果这个整数是小于10的数,则可以直接输出而不用剥离。这个想法很像递归,因此此处可以考虑使用递归来实现使用递归递归的思路:1.整数a如果小于10,则直接输出;2.如果整数a大于10,则输出其个位也就是a%10,再将a/10送给函数来递归,这样一层层剥离直到a<9。代码如下:void dig(int a){ if (a > 9) { printf("%d ", a % 10); dig(a / 10); }

2022-01-26 17:24:50 2047 2

原创 C语言--求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字, 例如:2+22+222+2222+22222

求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,例如:2+22+222+2222+22222观察算式,发现第几个加数就有几个2。因此我们可以考虑使用一个for循环,来满足我们循环5次,每次让a变为下一个数的目的,同时需定义一个val变量,每循环一次就加上a,加五次即可得出结果。那么如何让a变成aa……aaaaa呢?我们以2举例:第一次循环:22 = 2 + 20(20 = 2 * 10)第二次循环:222 = 2 + 220(220 = 22 * 10)…第五次

2022-01-26 13:08:24 2580 1

原创 C语言-求一个整数的二进制序列中1的个数

题目要求:写一个函数返回参数二进制中 1 的个数比如:15 的二进制为 0000 1111其中包含有4 个 1思路分析为了得到一个二进制序列中所有的1,我们一般考虑一位一位的来判断。因此我们可以想到使用这个数的二进制序列和1做按位与(&)的操作,因为与(&)操作符是两个相应的位置都为1才是真。举个例子:3的二进制:0000 00111的二进制:0000 0001做与运算得: 0000 0001根据与运算的结果可知,3的二进制的最后一位是1。此时若再将3向右

2022-01-26 13:07:57 1006 2

原创 C语言--输出0~999之间的所有水仙花数

输出0~999之间的所有水仙花数在动手写代码之前,我们得先搞明白什么是水仙花数:水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant,PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。(百度百科)由此我们知道,只有三位数才有可能是水仙花数,因此我们需要使用一个fo

2022-01-24 16:49:08 632 1

原创 C语言--编写程序数一下 1到 100 的所有整数中出现多少个数字9

编写程序数一下 1到 100 的所有整数中出现多少个数字9思路分析:1-100中出现9的数字有9,19,29……99和90,91,92……99。观察9的位置,前面的9都在个位,后面的9都在十位,而99则个位十位都有9。因此我们可以考虑先使用for循环来产生1-100的整数,在使用%和/操作符来判断个位和十位是否有9(if(9 == n%10 || 9 == n/10)),设置一个计数器,判断到一个含9的数字之后计数器加一,又因为99在我们的想法中只会使得计数器加一次,所以最后的个数应该再加上一个。

2022-01-24 16:17:16 2403 3

原创 C语言--计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值

计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值观察算式,我们发现所有加数的分母是从1-100,因此考虑使用for循环来产生1-100的数字。注意事项:1.结果是一个小数,定义储存结果的变量和其他相关变量时需要定义成float或者double型!2.法二需要包含头文件:#include <math.h>法一:再观察加数前面的正负号是交替的,且分母为奇数时是正号,分母为偶数时是负号,此时可以考虑用两个循环,分别产生偶数分母和奇数分母,加出两个结果,最

2022-01-24 16:05:30 5943 1

原创 C语言--将数组A中的内容和数组B中的内容进行交换(数组一样大)

利用临时变量tmp来交换两个数组的内容。代码如下:int main(){ int a[5] = { 1,2,3,4,5 }; int b[5] = { 6,7,8,9,10 }; int tmp = 0; for (int i = 0; i < 5; i++) { tmp = b[i]; b[i] = a[i]; i[a] = tmp; }}运行效果(相比上面的代码,加了打印代码后运行的效果):...

2022-01-24 15:32:13 349 2

原创 C语言--求两个数的最大公约数

公约数,即能被两数同时整除的数。最大公约数,顾名思义,乃公约数中最大者。既然是公约数,那么肯定是小于等于两个数中的最小值。如果我们从两个数的小值开始逐一递减来寻找公约数,那么找到的第一个公约数不就是最大公约数吗?代码如下://5.求两个数的最大公约数。int main(){ int a = 0, b = 0; printf("请输入两个数:"); int re = 0;//scanf的返回值 re = scanf("%d%d", &a, &b); int gong

2022-01-24 15:12:46 181 1

基于STM32F429的智能家居系统设计

本项目是基于STM32F429的智能家居系统设计,可以实现的功能如下: 1. 启动系统,手机蓝牙连接设备,可以通过手机上的温湿度或取按钮获得当前家中的温湿度信息;当温湿度超过预警值将自动向主人发送预警信息; 2. 红外识人预警系统。在主人不在家时,有人未经装有密码锁的门进入房间时会自动感应到,并将预警信息发送到主人手机上,以供主人判断是否有陌生人闯入家中; 3. 倒车雷达实现。开车回家倒车入库时,启动雷达系统,当车辆距离障碍物太近时将开始预警,并将当前距离实时传输到手机上以供主人掌握停车距离,协助主人停车; 4. 智能密码锁。主人回家后使用密码锁输入密码(此处使用板载按键实现),若输入正确,则

2021-01-14

STM32F蓝牙超声波避障小车

这是一款基于STM32F407开发板的蓝牙控制小车的keil程序。其中包含有步进电机的PWM控制,HC-05蓝牙模块控制小车前进后退转向,HC-SR04超声波避障、DHT-11温湿度传感器上传温湿度、光敏电阻等。

2020-08-17

空空如也

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

TA关注的人

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