自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构——堆排序详解

本章目录1.堆的概念及结构2.堆的实现2.1 堆的向下调整算法2.2 堆的向上调整算法2.3 建堆(数组)2.4 堆排序2.5 堆排序的时间复杂度1.堆的概念及结构如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树(二叉树具体概念参见——二叉树详解)的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2i+1 且 Ki<= K2i+2 (Ki >= K2i+1 且 Ki >= K2i+2) i = 0,1,2…,则称为小堆(或大堆

2021-09-25 03:18:01 1501 2

原创 数据结构六大排序详解(插入排序、希尔排序、选择排序、冒泡排序、快速排序、堆排序)

1、排序的概念1、排序的概念排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部排序:数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据

2021-09-20 17:11:04 6298 19

原创 Linux系统下<权限概念及管理> 图文并茂!!!

Linux权限管理1、Linux 权限概念1.1建立普通用户的方式1.2切换用户2、Linux权限管理2.1 文件访问者的分类2.2文件类型和访问权限(事物属性)1.3 文件权限值的表示方法1、Linux 权限概念Linux下有两种用户:超级用户(root)、普通用户。超级用户:可以在Linux系统下做任何事情,不受限制。普通用户:在Linux下做有限的事情。超级用户的命令提示符是“#”,普通用户的命令提示符是“$”.1.1建立普通用户的方式命令:useradd [用户名称]更改普通用

2021-09-13 00:10:12 378 1

原创 万字总结 <Linux系统常用命令>(详解大全)

文章目录一、 Linux下基本指令1.1 ls指令(列出文件夹目录或者文件信息)1.2 pwd命令(显示用户当前所在目录)1.3 cd 指令(改变目录)1.4 touch 指令(创建文件)1.5 makedir 指令(创建文件夹)1.6 rmdir指令 && rm指令(删除文件夹)1.7 man指令(查看手册)1.8 cp指令(复制文件或目录)1.9 mv 指令(移动或者重命名)一、 Linux下基本指令1.1 ls指令(列出文件夹目录或者文件信息)语法:ls [选项] [目录或文件]

2021-09-11 17:27:12 7142 3

原创 Linux—进程间通信—共享内存详解

本章目录1. 共享内存原理2. 创建共享内存3. 查看共享内存4. 附加共享内存到进程1. 共享内存原理首先在物理内存当中创建一块物理内存不同的进程通过页表映射,将同一块物理内存映射到自己的虚拟地址空间不同的进程,操作进程虚拟地址,通过页表的映射,就相当于操作同一块内存,从而完成数据的交换具体图示:2. 创建共享内存创建共享内存函数int shmget(key_t key, size_t size, int shmflg ) ;【说明】:key:共享内存的标识

2021-05-02 16:52:23 893 4

原创 C++— vector 的详细用法(含迭代器失效问题)

本章目录1. vector的介绍2. vactor的使用2.1 vector 的定义2.2 vector iterator 的使用2.3 vector 空间增长问题1. vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector 也采用连续存储空间来存储元素。也就意味着可以采用下标vector 的元素进行访问,和数组一样高效。但又不像数组,它的大小是可以以动态改变的,而且它的大小可以被容器自动处理。本质讲,vector使用动态分配数组来存储他的元素。当新元素插入

2021-04-28 04:59:20 1298 2

原创 C++— list 使用—详解

本章目录1. list 的介绍及使用1.1 list 的介绍1.2 list 的使用1.2.1 list 的构造函数1.2.2 list iterator 的使用1.2.3 list capacity1.2.4 list element access1.2.5 list modifiers1.2.6 list 的迭代器失效2. list 的模拟实现1. list 的介绍及使用1.1 list 的介绍list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。l

2021-04-24 20:14:21 4403 4

原创 Linux—进程间通信—管道详解

本章目录1. 进程间通信介绍2. 管道介绍3. 匿名管道3.1 从命令行感受管道3.2 从内核角度理解管道3.3 代码创建匿名管道3.4 从PCB的角度去分析管道3.5 匿名管道的非阻塞读写特性1. 进程间通信介绍目前进程间最大的通信方式:网络!!!由于进程间独立性的存在,两个进程间想要交换数据是非常困难的,所以,我们需要进程通信来解决进程间的数据交换。进程间通信目的:数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源通知事件:一个进程需要向另

2021-04-22 17:26:35 596 3

原创 C++—函数模板&类模板—详解

本章目录1. 泛型编程1. 泛型编程如何实现一个通用的函数交换?void Swap(int &left, int &right){ int temp = left; left = right; right = left;}void Swap(double &left, double &right){ int temp = left; left = right; right = left;}void Swap(char &left, c

2021-04-18 17:38:18 496 3

原创 C/C++—内存管理new&delete—详解

本章目录1.C/C++内存分布2. C语言中动态内存管理方式2.1malloc/calloc/realloc和free3. C++内存管理方式3.1new/delete操作内置类型3.2 new和delete操作自定义类型1.C/C++内存分布我们先来看下面的一段代码和相关问题:选择题:选项: A.栈 B.堆 C.数据段 D.代码段globalVar在哪里?C______________staticGlobalVar在哪里?CstaticVar在哪里?C_______________lo

2021-04-16 15:43:55 1197 4

原创 C++—类与对象—下篇

本章目录1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1. 再谈构造函数1.1 构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象各个成员变量一个合适的初始值。class Date{public: Date(int year, int month, int day) { _year = year; _month = month; _day = day; }private: int _year; int _month; int _day;}

2021-04-15 22:09:34 268 1

原创 Linux—基础IO—详解1

本章目录1. 回顾C语言的文件操作接口2. 系统调用文件的接口3. 文件描述符4. 文件流指针&文件描述符和文件流指针的关系1. 回顾C语言的文件操作接口C语言文件接口(库函数):fopen/fclose/fread/fwrite/fseekfopen函数 FILE *fopen(const char *path,const char *mode); 解释:path:带路径的文件名称(待打开的文件) mode: r:以可读方式

2021-04-10 20:06:25 250 1

原创 C++—类与对象(构造函数、析构函数、拷贝构造函数(深、浅拷贝)、赋值操作符重载)—中篇

本章目录1.类的六个默认成员函数2.构造函数3.析构函数4.拷贝构造函数赋值运算符重载1.类的六个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。class Date{};2.构造函数2.1概念对于以下日期类:class Date{ public: void SetDate(int year, int month, int day) { _year =

2021-04-04 23:18:37 300 3

原创 C++—类与对象(含this指针详解)—上篇

本章目录面向过程和面向对象的初步认识类的引入面向过程和面向对象的初步认识C语言是面向过程的,关注的是过程,分析出求解的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一事件拆分成不同的对象,靠对象之间的交互完成。类的引入C语言中,结构体只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。struct Student{ void SetStudentInfo(const char* name, const char* gender, int age)

2021-04-03 19:31:35 2509 4

原创 C++—命名空间—输入输出—缺省参数—函数重载—引用—详解

本节目录1.命名空间1.1命名空间定义2.2命名空间使用2.C++输入&输出3.缺省参数3.1缺省参数概念3.2缺省参数分类4.函数重载4.1函数重载概念4.2名字修饰4.3extern.c5.引用5.1 引用概念5.2引用特征5.3常引用5.4使用场景5.4.1做参数5.4.2做返回值5.5传值、传引用效率比较5.6引用和指针的区别1.命名空间在C/C++中,变量、函数、类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行

2021-03-30 02:14:24 281 3

原创 Linux--冯诺依曼系统--操作系统--详解

本章目录冯诺依曼系统操作系统(Operator System)冯诺依曼系统我们平常见的计算机,笔记本、服务器大部分都遵循冯诺依曼系统。截至目前,我们所认识的计算机,都是有一个个的硬件组成:- 输入单元:包括键盘、鼠标、扫描仪、写板等。- 中央处理器(CPU):含有运算器和控制器等- 输出单元:显示器、打印机等。关于冯诺依曼系统,必须强调几点:- 这里的存储器指的是内存- 不考虑缓存情况,这里CPU能切只能对内存进行读写,不能访问外设(输入或输出设备)- 外设(输入或输出设备)要输入或

2021-03-26 20:51:06 1391 2

原创 数据结构--二叉树--详解

本章目录1. 树概念及结构1.1树概念1.2树的表示2. 二叉树概念及结构3. 二叉树顺序结构及概念4. 二叉树链式结构及实现1. 树概念及结构1.1树概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,称为根结点,根节点没有前驱结点。除根节点外,其余结点被分成是一棵结构与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继。因此,树是递归定义的

2021-03-20 00:52:37 125048 62

原创 Linux—调试器-gdb使用—Linux项目自动化工具make/Makefile—详解

本节目录Linux调试器-gdb使用gdb使用背景gdb调试使用指令gdb调试coredump文件Linux项目自动化工具make/Makefile背景实例代码依赖关系依赖方法原理预定义变量makefile清理make当中也可以自定义变量Linux调试器-gdb使用gdb使用背景程序的发布方式有两种,debag模式和releasa模式如果是在Linux操作系统下,进行调试程序,需要在编译的时候,将程序编译成debag版本。debag:是程序的一个调试版本,增加了一些调试信息,这些调试信息,可以帮

2021-03-12 14:12:57 2855 6

原创 Linux编译器gcc/g++使用详解

Linux编译器-gcc/g++使用编译器:gcc编译C语言,g++编译C语言/C++;gcc完成格式: gcc [选项] [要编译的文件] [选项] [目标文件]程序的编译过程:预处理(进行宏替换),编译(生成汇编),汇编(生成机器可识别代码),链接(生成可执行文件或库文件)。预处理: 1. 预处理功能主要包括宏定义,文件包含,文件编译,去注释等。 2. 预处理指令是以 # 号开头的代码行。 3. 实例:gcc -E hello.c -o h

2021-03-11 22:38:25 611

原创 数据结构--栈和队列--详解

本节目录栈的概念及结构栈的实现队列的概念及结构队列的实现循环队列栈的概念及结构栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一段称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:站的插入操作叫做进站/压栈,入数据在栈顶。出栈:栈的删除操作叫做出战。出数据也在栈顶。栈的实现栈的实现一般可以采用数组或者链表实现,相对而言数组的结构实现更优一些。因为数组在尾上插入数据的代价比较小。数组实

2021-03-09 23:34:06 1372 5

原创 C语言--指针部分--详解1

本节重点指针是什么二级目录三级目录指针是什么 在计算机科学中,指针(Pointer)是编程语言的一个对象,利用地址,它的值直接指向(Points to) 存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量 单元。因此,将地址形象化的成为“指针”。意思是通过它能找到以它为地址的内存单元。二级目录三级目录...

2021-03-02 22:50:40 325 2

原创 数据结构—循环链表、顺序表与链表的对比

目录标题带头双向循环链表的增删查改顺序表与链表的对比带头双向循环链表的增删查改 在实际链表的结构中,带头双循环链表结构最复杂,一般用在单独存储数据。 实际中使用的链表数据结构,都是带头双向循环链表。 另外这个结构虽然复杂,但是使用代码实现以后会带来很多优势,实现反而简单了。链表的实现接口List.h#include<stdio.h>#include<stdlib.h>#include<assert.h>// 带头+双向+循环链表增删查改

2021-02-03 18:12:11 392

原创 C语言实现扫雷

C语言实现扫雷首先来讲一讲扫雷的规则:随便点一个格子,会有一块,上面的数字就代表数字周围八个格子会有几个雷,是1他周围就只有1个雷,2就有两个雷······写代码的时候要注意构思代码的框架,每个函数实现的意义在代码中都有体现,首先看一下头文件game.h#define ROW 9#define COL 9#include<stdio.h>#include<stdlib.h>#include<time.h>//防止查雷时越界,多开两行两列#define

2021-01-28 00:38:36 1242 3

原创 力扣OJ题删除排序数组中的重复项详解

题目 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并使用O(1)额外空间的条件下完成。示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 *你不需要考虑数组中超出新长度后面的元素。*示例 2: 给定 nums = [0,0,1,1,1,2,2,3,3,4],函数

2021-01-26 17:45:58 151

原创 顺序表的概念以及增删查改

顺序表增删查改目录顺序表概念以及结构二级目录三级目录顺序表概念以及结构顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可分为:1. 静态顺序表:使用定长数组存储。2. 动态顺序表:使用动态开辟的数组存储。二级目录三级目录...

2021-01-26 15:51:19 167

原创 C语言实现通讯录系统

C语言实现通讯录系统本章我将和大家分享一个简单的通讯录系统设计要求我们设计的程序为手机通讯录系统,这是使用C语言写成。本程序具有和一般的通讯录一样的功能,有最基本的数据添加、修改、查看、删除等功能。功能设计总体设计详细设计 1. 查找联系人 通过总菜单选择查找联系人,输入需要查找的联系人姓名(或者该联系人姓,或者该联系人名)。 若存在该联系人,则输出该联系人的信息,若通讯录中不存在此联系人,则输出查无此人,并且可以继续从总菜单选择所需要的功能。

2021-01-22 23:44:44 2021 3

原创 动态内存管理

动态内存函数的介绍mallocfreecallocrealloc之前我们经常使用的开辟方式int va1=20;//在栈空间上开辟四个字节char arr[10]={0};//在栈空间上开辟连续的10个字节空间这些开辟方式有两个特点空间开辟大小都是固定的。数组在申明的时候,必须指定数组长度,它所需要的内存在编译的时候分配。所以当我们需要使用空间运行的时候才能直到的时候就要使用动态内存开辟了。mallocmallocvoid* malloc(size_t size);//这是C语言提

2021-01-22 02:24:16 187

原创 枚举、联合(共用体)详解

枚举、联合详解目录枚举类型的定义枚举的优点枚举的使用联合类型的定义联合的特点联合大小的计算枚举类型的定义枚举顾名思义就是------列举。举例说明enum Color//颜色{ RED, GREEN, BLUE};这里的enum Color是枚举类型,RED、GREEN、BLUE,{ }里面的都是枚举常量。这些枚举常量都是有值的,默认从零开始,依次递增,当然定义的时候也可以赋初值。这里举个例子,如果给RED赋初值为3,则GREEN、BLUE默认为4,5.枚

2021-01-21 01:40:48 1226 2

原创 内存操作函数(memcpy、memmove、memset)、结构体详解、位段

内存操作函数与结构体目录内存操作函数memcpymemovememset结构体结构体类型的声明结构体的自引用三级目录内存操作函数memcpyvoid* memcpy (void* destination , const void* source , size_t num)函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置这个函数在遇到 ‘\0’ 的时候并不会停下来,按照字节一个一个的拷贝过去。如果source和destination有任何的

2021-01-19 12:56:50 2708 4

原创 求Sn=a+aa+......的前n项之和,打印菱形

求Sn=a+aa+…的前n项之和,其中a是一个数字例如:2+22+222+2222+22222#include<stdio.h>int power(int n, int k){if (k == 0)return 1;elsereturn n*power(n, k - 1);}int main(){int a,n;printf("请输入a+aa+aaa+aaaa+....的a以及前n项的n\n");scanf("%d%d", &a, &a

2020-12-17 23:23:18 402 2

原创 c语言输出水仙花数

输出水仙花数问题描述输出所有的“水仙花数”,所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为:153 = 13 + 53 + 33。问题分析根据“水仙花数”的定义,判断一个数是否为“水仙花数”,最重要的是要把给出的三位数的个位、十位、百位分别拆分,并求其立方和(设为sum),若sum与给出的三位数相等, 三位数为“水仙花数”,反之,则不是。#include<stdio.h>int power(int n, int k){ if (k

2020-12-17 23:09:53 2916 1

原创 递归解决青蛙跳台阶问题(斐波那契数列)

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法?答题思路如果只有1级台阶,那只有一种跳法如果有2级台阶,那么就有2种跳法,一种是分2次跳。每次跳1级,另一种就是一次跳2级如果台阶级数大于2,设为n的话,这时我们把n级台阶时的跳法看成n的函数,记为,第一次跳的时候有2种不同的选择:一是第一次跳一级,此时跳法的数目等于后面剩下的n-1级台阶的跳法数目,即为,二是第一次跳二级,此时跳法的数目等于后面剩下的n-2级台阶的跳法数目,即为,因此n级台阶的不同跳

2020-12-15 15:11:54 688

原创 斐波那契数列-----兔子繁殖问题

斐波那契数列-----兔子繁殖问题斐波那契数列又因数学家莱昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔子都不死,那么一年以后可以繁殖多少对兔子?我们不妨拿新出生的一对小兔子分析一下:第一个月小兔子没有繁殖能力,所以还是一对两个月后,生下一对小兔对数共有两对三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对------幼仔对数=前月成兔对数成兔对数=前月成兔对数+前月

2020-12-15 14:29:54 13143 1

原创 递归实现字符串逆序、n的阶乘、字符串长度strlen、整数的每一位之和、n的k次方

递归实现字符串逆序、n的阶乘、字符串长度strlen、整数的每一位之和、n的k次方递归,又译为递回,在数学与计算机科学中,是指在函数的定义中使用函数自身的方法。递归一词还较常用于描述以自相似方法重复事物的过程。例如,当两面镜子相互之间近似平行时,镜中嵌套的图像是以无限递归的形式出现的。也可以理解为自我复制的过程。了解了递归的概念,下面看一下用递归实现的训练题递归:递归实现字符串逆序#include<stdio.h>int reverse_string(char* p, int le

2020-12-14 00:52:25 2182 5

原创 冒泡排序(详解)

冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。冒泡排序算法的原理如下:假设一共有M个元素需要排序,比较相邻

2020-12-12 00:48:15 14933 1

原创 C语言实现三子棋(五子棋、扫雷)

C语言实现三子棋(五子棋、扫雷)这个三子棋小游戏是对近期学习C语言的一个总结练习(后续还会添加五子棋和扫雷呦,关注博主,我们一起做代码人):三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉、一条龙等。将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。这里所用的编译器是vs2013首先看一下这个总体流程:菜单界面选择开始或者退出游戏。创建棋盘并初始化。打印棋盘。玩家落子(玩家输入行列坐标的方式来落子),“M”表示玩家落子。判定胜负关系(输,赢,

2020-12-11 23:57:49 3448 12

原创 调用自定义函数交换两个变量以及调用函数比较三个数的大小

调用自定义函数交换两个变量(体会传值与传地址)首先巩固一下定义上的区别:传值与传地址区别传值:是把是实参的值赋给形参,对形参的更改不会影响实参的值,仅将对象的值传递给目标对象,就相当于copy,系统为目标对象重新开辟一个完全相同的内存栈空间,然后把对象的值复制到栈中。传地址:传址是把函数外部创建变量的内存地址传递给函数参数,不是普通的如int,传递地址以后,系统在栈中开辟空间存放地址,实参和形参都指向同一个对象。这种传参方式可以让函数和函数外面的变量建立起真正的联系,也就是函数内部可以直接操作函

2020-12-04 23:56:44 2333 1

原创 自定义函数输出0--100以内的所有素数

自定义函数输出0–100以内的所有素数在我的博客前面有使用循环输出0–100以内的所有素数,但是在上一篇博客中我详细解释了传值和穿地址的区别,所以我对这篇代码进行了优化,这里使用了自定义函数,可以简单体会一下传地址。#include<stdio.h>int IsPrimeNum(int num){ for (int i = 2; i < num; ++i) { if (num%i == 0) { return 0;//是素数返回1,不是素数返回0 } }

2020-12-04 23:33:25 4639 2

原创 简单区别形参与实参,传值与传地址

简单区别形参与实参,传值、传地址与传引用函数的参数分为两种,分别是实际参数(实参)和形式参数(形参)实际参数:真实传给函数的参数,叫实参。实参可以是:常量、变量、表达式、函数等。无论实参是何种类型的量,在进行函数调用时,他们都必须是确定的值,以便把这些值传递给形参。形式参数:形式参数是指函数名括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内存单元),所以叫形式参数。形式参数当函数调用完成之后就自动销毁了。因此形式参数值在函数中有效。两者进行比较:形参出现在函数定义中,在整个函数

2020-12-03 00:24:22 2839

原创 控制密码只能输入三次

控制密码只能输入三次我们经常在登录一些网站的时候,发现我们如果连续的输错好几次密码,我们的帐号就被锁定起来了,那这个过程是如何实现的呢?下面我们就可以简单看一下这个程序主要就是解决以下3件事情:1.输入用户名密码2.认证成功并显示欢迎信息3.输错三次后锁定#include<stdio.h>#include<string.h>int main(){ int n = 2; while (n>=0) { char passwdArr[20] = {0};

2020-12-02 17:28:40 583

空空如也

空空如也

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

TA关注的人

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