- 博客(44)
- 收藏
- 关注
原创 PLC梯形图实操——风扇正反转
具体操作:在元素中找到图中按钮,并将其拖至画面所示位置——选择文本和图形列表——选择图形列表——添加名称“风扇”——添加数值(0-3)与与之对应的风扇图片——设置完成后关闭该面板,回到根画面——选中添加的图片画面——右键选择属性——点击属性——点击常规——在图形列表中选择“风扇”——设置完成后选择名为“控制”数据块中的风扇图片作为变量——模式选择输出。具体操作:选中按钮——右键属性——选择事件——选择按下——如图所示选择按下按键时置位位——点击三个点——选择程序块——选择DB1_风扇转动——选择正转。
2023-11-20 23:23:58
4944
原创 网络基础知识三(TCP协议三次握手四次挥手、协议格式、可靠传输机制)
维护的序号,服务端告诉客户端自己收到数据的时候是确认客户端的序号;当Server发送数据包给Client时,消耗了。客户端与服务器各维护了一套序号,当Client发送数据包给Server时,消耗了。维护的序号,客户端告诉服务器自己收到数据的时候是确认服务器的序号。TCP为了保证数据高效、可靠且有序的到达对端,采用了。六个必要手段来保证TCP的可靠传输。
2023-04-05 12:44:48
746
原创 HTTP协议解析简单介绍
HTTP:超文本传输协议(Hyper Text Transfer Protocol)是一个简单的请求——响应协议,指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
2023-04-03 09:50:49
409
原创 网络基础知识二(UDP、TCP通信实现过程及函数解析)
sockfd:socket函数返回的套接字描述符,将创建出来的套接字、网卡以及端口进行绑定。创建了一个名为sockfd的套接字,采用ipv4网络和UDP协议的数据报套接字。———————————————分割线———————————————————————————————分割线———————————————————————————————分割线————————————————src_addr:这个数据来源的主机的地址信息结构。src_addr:这个数据来源的主机的地址信息结构。
2023-04-02 10:01:02
1382
原创 网络基础知识一(TCP/IP五层模型及协议、数据的封装与分用、网络字节序与主机字节序)
TCP/IP五层模型及协议应用层:网络层:数据链路层:网络数据转发时需要的条件:概念:CPU对内存数据的存取顺序;分类:大端字节序、小端字节序;
2023-04-01 15:34:55
513
2
原创 软件测试方法下篇(正交法、场景设计法、错误猜测法)
研究的一种实验方法,通过正交性实验中各因素的水平,通过分析这些最优组合的实验结果,来分析整个实验的结果与情况。
2023-03-28 10:36:55
826
原创 软件测试方法上篇(等价类、边界值、因果图)
特点:当我们的输入有很多种不同的输入组合,且不同的输入组合还对应着不同的输出,则通过恒等、与、获、非进行分析。方法:从每一个等价类当中选一个测试用例,若该测试用例测试通过,那么说明这个测试用例代表的等价类测试通过。针对输入输出边界的测试方法(如20的边界为19和21)。特点:输入过多,无法穷举。
2023-03-27 14:57:14
1250
原创 软件测试基础篇
首先检查一下BUG是否描述清楚以及确保BUG的定级合理(按照公司测试BUG定级规范,做到有理有据),确认不是自身问题后,站在用户的角度去说服开发人员。再此期间,不断提高自己的业务水平和技术水平。若还是无法解决争执,顺利修改BUG的话,则和产品经理、开发人员、测试人员开“三方会议”讨论BUG的严重程度、影响程度以及最终解决方案。
2023-03-24 11:49:21
319
原创 [数据结构]——队列的实现(初始化、销毁、入队、出队、获取队头队尾数据、获取队列数据总数、判断队列是否为空)
Queue.h#pragma once#include <stdio.h>#include <assert.h>#include <stdlib.h>typedef int QDataType;typedef struct QListNode //链式结构:表示队列{ QDataType data; struct QueueNode *next;}QueueNode;typedef struct Queue //队列结构{ QueueNod
2021-08-12 10:34:42
553
原创 [数据结构]——栈的实现(初始化、销毁、入栈、出栈、记录数据总数、判断栈是否为空、获取栈顶数据)
Stack.h#pragma onece#include <stdio.h>#include <assert.h>typedef int STDataType;typedef struct Stack{ STDataType *a; int top; int capacity;}Stack;void StackInit(Stack *pst); //初始化void StackDestory(Stack *pst); //销毁void StackPush
2021-08-10 10:55:06
245
原创 [数据结构]——带有头节点的双向循环链表(创建头节点、创建新节点、头插、尾插、头删、尾删、删除pos位的结点、在pos位前插入结点、查找、销毁)
List.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int ListDataType;typedef struct ListNode{ struct ListNode *next; struct ListNode *prev; ListDataType data;}ListNode;ListNode* ListInit(); //创
2021-08-09 17:37:32
255
原创 [数据结构]——单链表(动态申请结点、单链表打印、头插、尾插、头删、尾删)
SList.h#pragma once#include <stdio.h>#include <stdlib.h> typedef int SLTDataType;typedef struct SListNode{ SLTDataType data; struct SListNode* next;}SListNode;SListNode* BuySListNode(SLTDataType x); //动态申请结点void SListPrint(SListN
2021-08-09 09:18:41
219
原创 [数据结构]——顺序表的实现(初始化、销毁、打印、检查容量、尾插、尾删、头插、头删)
SeqList.h#pragma once#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h> typedef int SLDatatype;typedef struct SeqList{ SLDatatype *a; //指向动态开辟的数组 int size; //有效数据个数 int capacity; //容量空间大小}Seq
2021-08-07 11:45:48
260
2
原创 [C++]——多态、虚函数、虚指针
文章目录多态什么是多态?为什么要使用多态?多态的条件虚函数虚指针虚指针的本质多态什么是多态?对不同类型的实体提供统一接口的一种方式称之为多态。为什么要使用多态?举个例子(例1):这就是没有使用多态的效果,我们是想通过改变函数形参想要调用不同类中的实现函数,但是改变形参后,调用的仍然是Animal类型中的实现函数。要解决这一问题就要使用多态对类的实现加以修饰。多态的条件父类有虚函数。virtual 函数返回类型 [函数名]{//实现内容;}子类重写虚函数。要求:子类重写函数的
2021-05-30 17:32:02
376
5
原创 [C++]——继承、赋值兼容规则与组合
文章目录继承为什么要有继承?继承是如何实现的?赋值兼容规则赋值兼容规则的内容为什么两个类型不同的变量可以实现赋值呢?(赋值兼容规则原理)继承中的特殊函数(友元函数、静态成员函数)组合什么是组合组合的优缺点继承继承是C++中的特有属性,是类与类之间的一种关系。说到继承,就不得不提及两个概念:一个是父类(又称基类),一个是子类(又称派生类)。如同孩子继承父母的财产一样,子类会继承父类中的方法(函数)与成员。为什么要有继承?继承的本质是将父类的内容(函数与成员)继承到子类当中去,但子类不仅拥有父类内容还包
2021-05-26 16:21:54
1234
9
原创 网络基础知识(IP地址、端口、UDP协议、TCP协议)
ip地址1、ip地址的概念:ip地址是指互联网协议地址,ip地址是ip协议提供的一种统一的地址格式,在网络中唯一标识一台主机。2、ip地址的分类:ipv4和ipv6两类地址3、ipv4与ipv6的区别:端口1、端口的本质:无符号16位整型2、端口的作用:在机器中能唯一标识一个进程。引申:一个端口只能被一个进程所绑定,一个进程可以绑定多个端口由于ip地址可以确定唯一的一台主机,端口可以确定一个进程,所以一个ip地址+一个端口就可以唯一确定是哪一台主机上的哪个进程在发送信息。一条网络数据需要
2021-05-21 11:07:11
4454
24
原创 牛客—编程初学者入门训练—Kiki和酸奶(C语言实现)
题目描述BoBo买了一箱酸奶,里面有n盒未打开的酸奶,KiKi喜欢喝酸奶,第一时间发现了酸奶。KiKi每h分钟能喝光一盒酸奶,并且KiKi在喝光一盒酸奶之前不会喝另一个,那么经过m分钟后还有多少盒未打开的酸奶?输入描述多组输入,每组输入仅一行,包括n,h和m(均为整数)。输入数据保证m <= n * h。输出描述针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。示例输入:8 5 16输出:4代码实现#include "stdio.h"int main(){
2021-05-19 17:53:09
389
2
原创 [C++]——日期类运算符的重载(针对Date类重载<,>,<=,>=,==,++,<<,>>运算符,并构建排序函数,将时间进行升序排序)
文章目录前言Date.hDate.cppmain函数运行结果前言内容:针对Date类重载<,>,<=,>=,==,++,<<,>>运算符,并构建排序函数,将时间进行升序排序。要求:掌握类的定义和使用方法,掌握类对象的声明和使用方法。掌握对象的初始化和赋值的方法。了解成员函数的特性、友元。掌握静态成员的使用方法。理解和掌握this指针的用法。理解和掌握const类型数据的使用。Date.h#ifndef DATE_H#define
2021-05-15 12:41:00
608
原创 [C++]——引用(&)
引用是什么?引用就是变量的一个别名,引用不需要额外开辟空间。在通常情况下,操作引用相当于操作变量本身,但是也有一些特殊情况,例如引用被const修饰等情况。引用的使用格式:类型标识符 &引用名=变量名;例如:int main(){ int a = 10 ;//a为变量 int &b = a ;//b为a的引用 return 0 ;}在本例中,引用相当于给变量a起了一个外号叫做b,它们共用一块空间。下面的例子就是没有使用引用,直接进行赋值操作,虽然a、b的数值相同,
2021-03-29 20:18:40
192
原创 [C++]——函数的重载
文章目录一、函数重载的定义二、函数重载的条件及其原理函数重载的条件重载函数的原理三、命名空间解决函数重载问题命名空间+作用解析符引用命名空间引用命名空间部分功能一、函数重载的定义在同一程序文件内,可能会出现多个具有相同名称、不同功能的函数,这些具有相同名称的函数即为函数重载。二、函数重载的条件及其原理函数重载的条件重载函数需具备以下条件:1、重载函数的函数名称相同2、重载函数的形参不相同(形参的类型不同 或 形参的数目不同 或 形参的顺序不同)3、重载函数的形参相同,函数的返回类型不同,不.
2021-03-28 19:59:12
569
原创 直接插入排序
直接插入排序的核心思想:将待插入数插入已经有序数列中,插入后,新的数列仍然保持有序。假设一个数组里有n个数,那么直接插入排序则需要n-1趟排序:第一趟排序将第一个数视为有序数列,将第二个数插入到有序数列中,插入后得到的新数列仍依然有序;第二趟排序前两个数组成的数列视为有序数列,将第三个数插入到有序数列中,插入后得到的新数列仍依然有序,以此类推,第n-1趟排序中,前n-1个数为有序数列,将第n个数插入到有序数列中,得到的新数列仍然有序,此时直接插入排序完成。在直接插入排序中,初始数列越有序效率就越高,时间
2021-03-24 17:00:13
2028
原创 [数据结构]——二叉树(二叉树的分类和二叉树的遍历)
文章目录一、二叉树的分类1、满二叉树2、完全二叉树3、平衡二叉树一、二叉树的分类一、二叉树的分类1、满二叉树最后一层节点无任何子节点,其余每一层上的所有结点都有两个子结点的二叉树。2、完全二叉树一棵深度为h的树,前h-1层为满二叉树,第h层的结点从左到右是连续的。上图为一颗三层的平衡二叉树,前两层为满二叉树,最后一层从左到右的结点是连续的。下面我们再举一个完全二叉树的反例:3、平衡二叉树一棵深度为h的二叉树,任意节点的子树的高度差都小于等于1。再举一个平衡二叉树的反例:一、.
2021-03-17 18:27:54
740
原创 进制转换(二进制、八进制、十进制、十六进制)
文章目录一、总体框架二、二进制、八进制、十六进制转换为十进制2.读入数据总结一、总体框架在这里我们要明确进制之间相互转化的关系:1、二进制、八进制、十六进制可以转换为十进制。2、十进制可以转换为二进制、八进制、十六进制。3、二进制、八进制、十六进制之间又存在着相互转换。如下图:二、二进制、八进制、十六进制转换为十进制在这里给大家一个二进制、八进制、十六进制转换为十进制的转换公式:举例:二进制110101转换为十进制数等于多少?解:因为是二进制转换为十进制,所以R=2。(110.
2021-03-11 15:08:01
873
1
原创 [算法]——快速排序算法
文章目录前言一、算法思想二、算法步骤三、算法描述四、算法分析总结前言快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。一、算法思想从待排序数列中选取第一个数作为关键字a1,比a1小的数移动到a1前,比a1大的数移动到a1后,这个过程称为一趟快速排序。通过一次划分,待排序数列.
2021-03-09 19:06:37
216
4
原创 [Linux]——常用命令(ls,pwd,cd,mkdir,touch,rm)
文章目录一、ls1.ls-a2.ls-l3.ls-lrt二、pwd三、cd1.cd/2.cd~3.cd-4.cd..四、mkdic五、touch六、rm一、lsls:罗列文件以及文件夹1.ls-als-a:罗列隐藏文件以及文件夹,其中-a是命令行参数,作为ls的参数,传递给ls命令。2.ls-lls-l:罗列出当前文件或文件夹的详细信息,简写为“ll”。3.ls-lrtls-lrt:按时间顺序罗列文件以及文件夹二、pwdpwd:查看当前路径举例:三、cdcd:用于切换目录使用.
2021-01-21 11:27:41
425
1
原创 [C语言]——打印杨辉三角
问题描述:在屏幕上打印杨辉三角。11 11 2 11 3 3 11 4 6 4 1……主要思路:1、a[i][0] = 1;//每一行第一个元素都是12、a[i][i] = 1;//第i行i列的元素都是13、a[i][j] = a[i - 1][j - 1] + a[i - 1][j];//当前元素等于i-1行j-1列加上i-1行j列元素代码实现:#include "stdio.h"int main(){ int N=0; printf("请输入要打印的行数:");
2020-12-25 09:26:55
285
2
原创 [C语言]——喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,共有20元,请问可以喝多少瓶汽水?
问题描述:喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,共有20元,请问可以喝多少瓶汽水?主要思路:20块钱买20瓶汽水20个瓶子换10瓶汽水10个瓶子换5瓶汽水5个瓶子换2瓶汽水总共喝了20+10+5+2=37瓶汽水代码实现:#include "stdio.h"int NumSoda(int m){ int num=20/1,sum=0;//num当前所换汽水瓶数,sum喝的总数 sum=num+sum; while(num!=2) /*注意:兑换汽水的最后一步是用五个
2020-12-21 20:00:49
331
原创 [C语言]——调整数组使奇数全部都位于偶数前面
问题描述:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。主要思路:if((a[i]%2)!=0){ int temp=a[num]; a[num]=a[i]; a[i]=temp; num++;}图解:代码实现:#include "stdio.h"int main(){ int a[10],num=0; for(int i=0;i<10;i++) { scanf("%d",&a
2020-12-21 19:27:38
237
原创 [C语言]——整型的截断与提升
什么是截断与提升?简单来说,截断是将所占字节大的元素赋给所占字节小的元素时会出现数值的舍去现象;提升是将占字节小的元素赋给占字节大的元素时出现的补位现象。举个例子:int val=1;//int占四个字节char ch;//char占一个字节ch=char(val);//将val赋给ch这个过程截断printf("%d ",ch);//ch是char类型,输出类型是%d(int),这个过程提升注意:1、影响截断结果有两个因素:(1)两个元素的类型(2)计算机的存储方式,是大端机还是小
2020-12-20 21:37:09
2057
4
原创 大端机与小端机
文章目录大端机与小端机的区别代码实现(区分大端机与小端机)大端机与小端机的区别大端模式:数字逻辑低位存储在内存的物理高位小端模式:数字逻辑低位存储在内存的物理低位例如:int val=0x12345678;低 高78 56 34 12(小端)12 34 56 78(大端)代码实现(区分大端机与小端机)#include "stdio.h"int main(){ int val=1; //低 高 //01 00 00 00 小端机 //00 00 .
2020-12-20 20:40:12
672
原创 [C语言]——打印素数(质数)
问题描述:打印100~1000之间的所有素数(质数)。代码实现:#include "stdio.h"int IsPrimeNumber() { for(int i=100;i<1000;i++) { for(int j=2;j<i;j++) { if(i%j==0) break; if(i==j+1) printf("%d ",i); } } }int main(){ IsPrimeNumber(); return 0;}运行结
2020-12-19 10:59:31
2647
2
原创 [C语言]——递归与非递归实现字符串逆序
问题描述:编写一个函数 reverse_string(char * string)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。非递归实现:#include "stdio.h" int my_strlen(char *n)//自定义函数实现strlen函数功能{ int count=0; while((*n)!='\0')//计算字符串长度 { count++; n++; } return count;}void reverse_stri
2020-12-18 17:16:46
258
2
原创 [C语言]——递归与非递归求阶乘
问题描述:递归和非递归分别实现求n的阶乘(不考虑溢出的问题)递归实现:#include "stdio.h" int Factorial(int n){ if(n==1) return n; else return n*Factorial(n-1);}int main(){ int n,m; scanf("%d",&n); printf("%d",Factorial(n)); return 0;} 非递归实现:#include "stdio.h"int F
2020-12-18 17:08:41
1149
1
原创 [C语言]——打印乘法表(不仅仅是九九乘法表,你想要的都能打印!)
问题描述:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定。如:输入9,输出9×9口诀表,输出12,输出12×12的乘法口诀表。代码实现:#include "stdio.h"int multiplication(int n){ for(int i=1;i<=n;i++)//控制行数 { for(int j=1;j<=i;j++)//控制列数 { printf("%d*%d=%d ",i,j,i*j); } printf("\n"); }}i
2020-12-17 21:04:25
539
原创 [C语言]——猴子吃桃问题
问题描述:一只小猴子一天摘了许多桃子,第一天吃了一半,然后忍不住又吃了一个;第二天又吃了剩下的一半,再加上一个;后面每天都是这样吃。到第10天的时候,小猴子发现只有一个桃子了。问小猴子第一天共摘了多少个桃子。代码实现:#include <stdio.h>int main() { int a=1,b;//a为桃子总数,b为天数 for(b=1;b<10;b++) a=2*(a+1); printf("桃子的总数是:%d",a); return 0;}运行结果:
2020-12-17 20:47:23
1274
原创 [C语言]——水仙花数
问题描述:“水仙花数”是指一个n位数,其各位数字的n次方之和确好等于该数本身,如:153=1^3+5^3+3^3则153是一个“水仙花数”。请你求出0~100000之间的所有“水仙花数”并输出。代码实现:#include"stdio.h"#include "math.h"int main(){ int a = 0, b = 0, c = 0, d = 0, e = 0; int i=0; while(i<=100000) { int count=0;//记录i是几位数
2020-12-17 20:34:03
1356
1
原创 [C语言]——利用循环输出菱形
题目要求如下:用C语言输出以下图形: * *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** *总体思路:将菱形拆分开,一行一行看。前七行是由递减的空格和递增符号组成,后六行是由递增的空格和递减符号组成。代码实现:#include "stdio.
2020-12-17 20:16:22
6863
原创 [C语言]——(位运算)求一个整数的二进制当中有多少个1
文章目录一、实现思路二、代码实现一、实现思路拿数字11来举例:二、代码实现代码如下:#include "stdio.h"void BinaryNum(int n){ int count=0; for(int i=0;i<=32;i++) { if(n%2==1) count++; n>>=1; //将二进制数右移一位,判断第2,3,..,n位上的数是否为1 } printf("%d ",count);}int main(){ int
2020-12-10 22:31:10
1134
原创 [C语言]——递归与非递归实现strlen函数
递归:#include "stdio.h" int my_strlen(char *n)//因为这里传递的是数组首元素,所以要用*n { if(*n!='\0') return 1+my_strlen(n+1);}int main(){ char n[]="abcd"; my_strlen(n); printf("%d",my_strlen(n)); return 0;} 非递归:#include "stdio.h" int my_strlen(char *n){
2020-12-08 22:24:57
140
原创 [C语言]——斐波那契数列的两种实现方式(递归与非递归)
文章目录一、什么是斐波那契数列?二、代码实现1.递归实现2.非递归一、什么是斐波那契数列?斐波那契数列指的是这样一个数列:0,1,1,2,3,5,8,13,21,34…这个数列从第3项开始,每一项都等于前两项之和。递推方程:F(0)=0,F(1)=1F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)二、代码实现1.递归实现代码如下:#include "stdio.h"int fib(int n){ if(n<2) return n; else
2020-12-07 10:46:11
1101
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人