![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序
文章平均质量分 52
继续冲呀
只是想涨点知识呀
展开
-
2022.6.26 C++——使用面向对象的思想实现栈和日期
灵活使用面向对象思想原创 2022-06-26 21:06:36 · 282 阅读 · 0 评论 -
2022.6.16 C++——运算符的重载(-/=等一些运算符)
用Complex例子示例:运行结果:结果分析:在程序运行中,执行cc = ca.operator-(cb);时,其实编译器底层执行的是cc=ca-cb;//cc=ca.operator-(cb);//cc=operator(&ca,cb);,这就可以很清楚的知道减法运算法在编译器底层的运行情况,也更容易理解程序。注意:在调用类中operator-(形参)函数时,我们要求调用其实现两个类对象进行相加,不需要改变这两个类对象的值,只需要将相加后的值给另外一个对象就行,因此,在写类函数——...原创 2022-06-16 15:49:39 · 364 阅读 · 0 评论 -
2022.6.15 C++——运算符的重载(+)
结果分析:程序运行时,先进入主函数,执行Complex ca(1, 2);和Complex ca(3, 4);调用带参数的构造函数,执行Complex cc;调用缺省的构造函数,然后依次打印出值;但是在执行cc = ca.Add(cb);时,首先调用拷贝构造函数,然后在调用带参构造函数,然后再调用拷贝构造函数将其产生的值给cc,在这块会产生一个将亡值,因此,在这中间会调用三次析构函数,最后将值打印出来;最后三次调用析构函数是对Complex ca(1, 2);Complex cb(3......原创 2022-06-15 22:41:38 · 172 阅读 · 0 评论 -
2022.6.14 C++——拷贝构造函数
拷贝构造函数原创 2022-06-14 22:39:31 · 176 阅读 · 0 评论 -
2022.6.8 C++——对象成员方法的使用
对象成员方法的使用原创 2022-06-08 11:21:17 · 123 阅读 · 0 评论 -
2022.6.7 C++——对象的生存期
对象的生存周期相关知识原创 2022-06-07 09:49:09 · 165 阅读 · 0 评论 -
2022.6.2 C++——构造函数与析构函数
数据成员多数是私有的,要对它们进行初始化,必须用一个公有函数来进行,同时这个函数应该在且仅在定义对象时自动执行一次,称为构造函数。构造函数的用途:①创建对象②初始化对象中的属性③类型转换构造函数是特殊的公有成员函数(在特殊用途中构造函数的访问限定可以定义成私有或保护),其特征如下:(1)函数名必须与类名相同;(2)构造函数无函数返回类型说明;注意是没有而不是void,即就是什么也不写,也不能写void;实际上构造函数有返回值,返回的就是构造函数所创建的对象;(3)在程序运行时,当新的对象被建立原创 2022-06-02 17:31:02 · 150 阅读 · 0 评论 -
2022.6.1 C++——类型设计与实例化对象
类型设计与实例化对象原创 2022-06-01 21:02:35 · 929 阅读 · 0 评论 -
2022.5.26 C++——面向对象基础知识
这里写目录标题1. 面向过程2. 面向对象2.1 从现实世界到计算机世界的映射:2.2 状态和行为是对象的主要属性2.3 面向对象的程序设计优点2.4 对象的关系3. 类型设计与实例化对象3.1 C++中类的设计3.2 成员数据、函数1. 面向过程当软件规模超过一定尺度后,采用结构化程序设计,其开发和维护就越来越难控制,其根本的原因在于面向过程的结构化程序设计的方法与现实世界(包括主观世界和客观世界)往往都不一致,结构化程序设计的思想往往很难贯彻到底。在结构化程序设计中,采用的是“自顶向下,逐步细化”原创 2022-05-26 08:00:00 · 216 阅读 · 0 评论 -
2022.5.25 C++——string的简单使用和面试题
1.C++中的字符串①要使用C++中有关字符串的函数,必须有头文件#include< string >,#include< string.h >,#include< cstring >,c中也是如此②求字符串长度,在C和C++中使用,如C中我们经常会使用strlen函数或者sizeof(arr)/sizeof(arr[0]),但是sizeof(arr)/sizeof(arr[0])是在打印数组中元素个数时用到,而strlen直接求的是字符串的实际长度,后面没有\0,原创 2022-05-25 08:00:00 · 121 阅读 · 0 评论 -
2022.5.23 C++——C11部分新特性(类型推导(auto),decltype关键字,基于范围for循环等)
这里写目录标题1. 类型推导:auto1.1 c11中auto成为类型指示符1.2 auto的推导规则1.3 auto不能作为函数的形参类型1.4 auto的限制1.5 auto可以推导函数的返回类型2. 类型推导:decltype关键字3. 基于范围的for循环4. 指针空值——nullptr5. typedef 与using1. 类型推导:autoC++引入了auto和decltype关键字实现类型推导,通过这两个关键字不仅能方便地获取复杂的类型,而且还能简化书写,提高编码效率。1.1 c11中原创 2022-05-23 21:24:24 · 568 阅读 · 0 评论 -
2022.5.19 C++——缺省参数和函数重载
这里写目录标题1. 缺省参数1.1缺省参数函数调用1.2 缺省参数在多文件中(.h,.cpp)1.3 缺省实参可以使用任意表达式2. 函数重载2.1 C中函数调用实现1.2 函数重载1.2.1 函数重载定义1.2.2 判断函数重载的规则1.2.3 名字粉碎(名字修饰)1. 缺省参数1.1缺省参数函数调用(1) 一般情况下,函数调用时的实参个数应与形参相同,但为了更方便地使用函数,C++也允许定义具有缺省参数的函数,这种函数调用时,实参个数可以与形参不相同。(2)缺省参数指在定义函数时为形参指定缺省值原创 2022-05-19 17:11:19 · 214 阅读 · 0 评论 -
2022.5.13 C++基础入门——引用和inline函数
这里写目录标题1.引用1.1引用定义引用的特点2.inline函数1.引用1.1引用定义用我们通俗的话说,引用就是别名,即就是a=10,c引用a,那么c也就是;引用的符号用&来表示,例如上句话可以用c++编写为:int a = 10 ;int &c = a ;那么c就是a,但是有人会说这不就是直接把c替换成a就是了,其实并不只是这么简单的意思,通过如下的图来理解引用的含义:分析:假设图中A的地址为100,B的地址为200;如果执行int B=A,只是将A的值给B,其B的地址原创 2022-05-13 22:16:44 · 271 阅读 · 0 评论 -
2022.4.27 C++基础入门——初始化、输入和输出和const应用
1. 初始化C中的初始化写法:变量初始化:int a = 10 ;数组初始化:① int arr[5] = {1, 2, 3, 4, 5} ; ② int arr[ ]={1, 2, 3, 4, 5} ;③ int arr[5]={ }; 不给值,默认为0//运行结果如下:C++中的初始化写法:*变量初始化:① int a = 10 ;② int a(10) ;③ int a{10} ;运行如下:数组初始化:原创 2022-04-27 16:26:41 · 216 阅读 · 0 评论 -
2022.4.24 BF和KMP算法
1. 字符串中的真子串和子串概念字符串:“abcd”真子串:“a”,“b”,“c”,“d”,“ab”,“bc”,“cd”,“abc”,“bcd”子串:" ",“a”,“b”,“c”,“d”,“ab”,“bc”,“cd”,“abc”,“bcd”,“abcd”真子串:n*(n+1)/2 ; 子串:n*(n+1)/2 +12. BF算法BF算法(暴力求解)也叫男朋友算法主串:“ababcabcdabcde”子串:“abcd”要在主串里面找子串,如果当前光标在主串的0号位置所指,那么就是原创 2022-04-24 22:05:59 · 687 阅读 · 0 评论 -
2022.4.19 冒泡排序和堆排序
1. 冒泡排序定义冒泡排序也叫沉石排序,每一趟循环两两比较,大(小)的向后挪动,最终最大(小)值放在最后。假设现在有n个数据,需要跑n-1趟即可冒泡排序图如下:有6个数据,只需要跑5趟就行代码实现#include<stdio.h>void Buddlesort(int* arr, int len){ for (int i = 0; i < len; i++) { for (int j = 0; j + 1 < len - i; j++)//控制两两比较,j指原创 2022-04-19 15:32:08 · 199 阅读 · 0 评论 -
2022.4.13 链式队列
1. 栈和循环队列栈:不管用什么方式去实现,都可以保证入栈和出栈的时间复杂度为O(1)循环队列:顺序表实现的队列,入队时间复杂度为O(1),出队时间复杂度为O(n)队列中的三个难点以及解决方案:① 如何保证顺序表实现的队列的入队和出队时间复杂度为O(1)答:出队的时候,不再挪动数据向前覆盖,而是数据不动,队头指针向后移动(臆想成一个环)② 臆想成环之后,判空和判满条件冲突了?答:1)设计成一个计数器;2)队尾浪费一个空间,不再存储数据,而是作为一个标记③ 循环队列的求长度公式:length原创 2022-04-13 12:16:47 · 856 阅读 · 0 评论 -
2022.4.12 循环队列
1. 队列栈: 受到限制的线性表,先进后出队列:受到限制的线性表,在一端进行入队(插入),在另一端进行出队(删除);入队的一端一般称为队尾,出队的一端称为队头;队列中没有元素的话称为空队。队列特点:先进先出2. 顺序表实现的队列为什么叫做循环队列?遇到循环队列,需要懂得其三个难点第一个难点:怎么让队列也可以实现入队和出队时间复杂度都是O(1)入队不需要挪动元素,时间复杂度为O(1);出队需要挪动数据,时间复杂度为O(n);注意:既然栈的出栈和入栈时间复杂度都为O(1),那么队列的入队和出原创 2022-04-12 11:21:49 · 323 阅读 · 0 评论 -
2022.4.11 链表相关面试题
逆置① 借助头结点② 不借助头结点判断两个单链表是否存在交点,如果存在交点,则找到相交的第一个点① 如果面试官没有让找相交的点,只是问是否相交(可以用一个非常简单的方法)② 如果面试官既要判断是否相交,还要问相交点在那(另外一种解题思路)任意删除一个节点(要求时间复杂度为O(1),给的这个节点的地址不能是尾结点)判断一个单链表是否存在环?如果确实存在环,则找到入环点确定一个单链表是否回文(12321 123321)找到单链表倒数第K个节点...原创 2022-04-10 22:21:41 · 821 阅读 · 0 评论 -
2022.4.9 链栈
链栈链栈:是在单链表的基础上进行操作用单链表的头插和头删代替表尾进行插入和删除链栈结构体设计typedef int ELEM_TYPE;typedef struct LStack{ ELEM_TYPE data; struct LStack* next;}LStack,*PLStack;list-stack.h文件//链栈可执行函数声明//初始化void Init_LStack(struct LStack* ps);//入栈(插入)bool Push(PLStack .原创 2022-04-09 22:28:11 · 301 阅读 · 0 评论 -
2022.3.1 飞机订票系统
飞机订票系统原创 2022-04-09 11:32:34 · 963 阅读 · 0 评论 -
2022.4.5 栈
栈的概念只能在表尾进行插入(入栈)和删除(出栈)的数据结构,也就是表头和中间不能插入和删除(受到限制的线性表);其表尾比较特殊,我们一般把这个表尾叫做栈顶,表头端叫栈底,没有数据节点,则叫空栈。特点:后进先出(先进后出)栈的表现形式因为栈只能在表尾进行插入(入栈)和删除(出栈),因此在写可操作函数时,没有头删头插等结构体设计struct Stack{ 第一个数据成员:ELEM_TYPE *base (指针类型,用来接收malloc从堆里申请的一整块连续的空 间) .原创 2022-04-05 20:35:33 · 664 阅读 · 0 评论 -
2022.4.4 循环链表
1. 循环链表(单循环链表)和单链表相比,尾结点的next域不在指向NULL,而是指向头节点2. 单链表和循环链表的区别(图)单链表:单循环链表:3. 可操作函数注意① 初始化只有一个头结点(没有有效数据节点),所以将自身指向自身,即其next域保存头结点自己的地址;② 删除:头删,尾删,按位置删前两步,有两种方式去实现:第一种:先让p通过标志指向待删除节点,再让q通过p来指向p的前一个节点;第二种:因为我们很明确q的下一个节点是p,所以我们可以一步到位,原创 2022-04-04 21:21:07 · 1208 阅读 · 0 评论 -
2022.3.30 归并排序和快速排序
1. 归并排序归并排序也叫二路归并排序,将所有数据单独给每个数据每个组(每个数据单独看,就是有序的),其实也就是将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。这个概念还是有点难理解,可以根据下面这个图来详细了解:代码:#include<stdio.h>#include<stdlib.h>void Merge(int arr[], int len, int gap){ int low1 = 0; int high1 =原创 2022-03-30 10:18:02 · 202 阅读 · 0 评论 -
2022.3.25 选择排序和基数排序
1. 选择排序每一趟从待排序系列中找出最小值(下标)和待排序序列的第一个值(下标),然后将两个交换,直到待排序序列中只剩下一个值(每一次都找出一个最小值放到前面,len-1趟,与冒泡相反)如图:...原创 2022-03-25 21:17:43 · 446 阅读 · 0 评论 -
2022.3.22 双向链表
1. 双向链表与单链表相比,双向链表有两个指针域,既可以保存右边节点的地址(后继),也可以保存左边的节点地址(前驱)。2. 双向链表图其中:next指针域,保存下一个节点的地址(后继), prior指针域, 保存上一个节点的地址(前驱)3. 双向链表可执行函数注意:头插:① 插入新节点时,一般情况下,需要修改4给我指针域:自身的next和prior;上一个节点的next;下一个节点的prior;如调整规则:③④②①第一次:先修改pnewnode自身的next域和pr.原创 2022-03-22 12:19:35 · 1472 阅读 · 0 评论 -
2022.3.21 八大排序2---希尔排序
1. 希尔排序2. 看如下的图更详细了解希尔排序这个一眼看过去好像没有顺序,但仔细看过后,数据比原来的数据有了顺序,希尔排序就是这种思想,一般我们运用增量是素数的进行分组,比如上述这个就按照 5,3,1,那么就有3. 代码实现#include <stdio.h>#include <stdlib.h>#include <assert.h>void Shell(int arr[], int len, int gap)//一趟希尔排.原创 2022-03-21 22:00:49 · 233 阅读 · 0 评论 -
2022.3.18 八大排序1---直接插入排序
1. 八大排序冒泡排序;选择排序;直接插入排序;希尔排序;堆排序;归并排序;快速排序;基数排序(桶排序)、先写直接插入排序,希尔排序是直接插入排序的优化2. 直接插入排序一开始将数据分成两部分,初始数据都看作无序,每一次从待排序队列中取出一个值,放到我们已经排序好的队列中,然后将其调整有序,然后再从待排序队列中取一个值,直到待排序队列中没有值。特点:1.直接插入排序的时间复杂度过大,但是有其合适的使用场景:n比较小的话,n^2不会很大,这就可以使用直接排序法 2.数据...原创 2022-03-18 21:46:14 · 560 阅读 · 2 评论 -
2022.3.17 不带头结点的单链表
主要掌握带头结点的,不带头结点的偏难!!!1. 不带头结点的单链表如下图2. 结构体设计no_head_list.h文件#pragma once //防止头文件重复typedef int ELEM_TYPE;typedef struct Node{ ELEM_TYPE data;//数据域(1.头结点:不保存任何数据 2.有效数据节点:保存有效值) struct Node* next;//指针域(1.保存第一个元素的地址 2.有效数据节点:保存下一个有效数据节点.原创 2022-03-17 17:27:45 · 1924 阅读 · 0 评论 -
2022.3.15 带头结点的单链表
带头结点的单链表的形式:有效数据结点堆里面申请来的,也就是malloc,头结点,系统开放的,不需要free。2. 头结点没有单独的结构体设计,直接使用的是有效数据结点的结构体设计,这是因为头结点里面数据成员只需要一个成员---指针域,而有效数据结点里面的数据成员不仅有数据域还有指针域,所以直接都用有效数据结点的设计。3. 实现如果单独设计头结点结构体和数据结点结构体,有 #pragma once //防止头文件重复 typedef int ELEM_TYPE...原创 2022-03-15 22:07:53 · 1013 阅读 · 0 评论 -
2022.2.28 不定长顺序表
3结构体设计为:其中,typedef将基础数据类型int 等可以定义为ELEM_TYPE。这块写错了,是typedef1. .h文件中的代码,其中#pragma once是防止头文件重复#pragma oncetypedef int ELEM_TYPE;#define INIT_SIZE 10//不定长顺序表的结构体设计:typedef struct Dsqlist{ ELEM_TYPE *elem;//指针,用来接收malloc返回值 int lengt...原创 2022-02-28 17:02:08 · 77 阅读 · 0 评论 -
2022.2.27 图书管理系统3---借还书登记模块
这是图书管理系统第三个模块,里面有注意的一些细节借书登记系统中,要注意什么时候书存在,什么时候书不存在,最主要的是在借完书之后对信息保存,因为在代码中所做的工作全在数组中进行,为了以防一些情况出现,将其保存在文件中,并且每借一次书,记得图书库存量减去1,当前读者可借阅的数量减去1,这样借书程序才会完整。还书代码类似。//借还书子菜单void ShowBorrowReturnMenu(){ system("cls"); printf("\n\n\n\n"); printf("\t*****原创 2022-02-27 16:55:42 · 852 阅读 · 0 评论 -
2022.2.26 图书管理系统2---第二模块:读者管理系统
注意:第二块和第一块是类似的,最主要不同的是最后一个修改信息函数,要明白其中读者最大可借阅数量和当前可借阅数量是有关系的。代码如下:#define _CRT_SECURE_NO_WARNINGS //scanf宏定义#include<stdio.h>#include<windows.h>#include<conio.h>#define READER_NUM 100#define READER_DATA astReader[i].iNum,as原创 2022-02-26 20:41:46 · 717 阅读 · 0 评论 -
2022.2.24 项目-图书馆管理系统1---图书管理模块
1. 设计思路图书:(增删改查) 显示读者:(增删改查) 显示 借书 还书 主菜单 子菜单系统如下图2.原创 2022-02-25 16:44:21 · 1252 阅读 · 0 评论 -
2022.1.3 文件习题
1. 从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存,输入的字符串以“!”结束。#include<stdio.h>#include<ctype.h>void to_upper(){ FILE *fw = fopen("test.txt", "wb"); char ch;//从键盘获取的字符,暂时放的地方 while ((ch = getchar()) != '!') { if (islower(ch))原创 2022-01-03 23:09:06 · 583 阅读 · 0 评论 -
2021.12.30 文件
1.文件是什么? 文件:储存在外部介质上的数据集合 文件的唯一标识:三要素(路径,文件名,后缀)2.文件操作函数 2.1 fopen 返回值:文件指针FILE* 两个参数(第一个参数[文件名] 第二个参数[以什么方式 打开文件] ) 2.2 fclose 参数只有一个(释放的文件流指针) 1.防止内存泄露 2.未释放再次打开可能发生错误 2.3 fread 返回值:返回实际读取的项目数 四个参数(1.从文件中读取的数据...原创 2021-12-30 23:01:43 · 95 阅读 · 0 评论 -
2021.12.19
自己作题遇到的一些问题1.(腾讯一道面试题)计算表达式x^6+4x^4+2x^3+x+1最少需要做(3 )次乘法?分析:这道题其实是一个数学题,看到这,我们首先对其进行化简,有 x^6+4x^4+2x^3+x+1=x^3(x^3+4x+2)+x+1其中,x^3=x*x*x,这是2次乘法,还有4x=4*x,这是1次乘法,总共合起来3次乘法。2.以下这个代码中,Fun(21)的值为( 31 )int Fun(int a){ a=(1<&l...原创 2021-12-19 21:37:23 · 289 阅读 · 0 评论 -
2021.12.16 输入一个字符串,内有数字和非数字字符,统计其中共有多少个整数
输入一个字符串,内有数字和非数字字符,例如: A123x456 17960? 302tab5876将其中连续的数字作为一个整数,依次存放到一组数A中,例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。分析:从题目中,我们可以看出有数字123,456,17960,302,5876,而且特点是两个数字之间存在非数字字符,我们可以从这一点入手,代码如下#i...原创 2021-12-16 21:12:19 · 1630 阅读 · 0 评论 -
2021.12.14 字符串习题
1. 在主函数中输入10个等长的字符串,用另一个函数对它们排序,然后在主函数输出这10个已排好序的字符串。#include<stdio.h>#include<string.h>void bubblesort_str(const char** arr, int len){ for (int i = 0; i < len - 1; i++) { for (int j = 0; j + 1 < len - i; j++) { if (strcmp(原创 2021-12-14 19:36:05 · 884 阅读 · 0 评论 -
2021.12.13 联合体
1. 自定义类型有:结构体 共用体(联合体)2. 共用体(联合体)一般情况下,我们叫共用体,也就是联合体,其与结构体相反,定义为:共用体内所有成员共享同一内存,每个成员都是顶头开始。共用体求大小规则:需要整体大小能整除其最大的成员所占的字节数定义形式为: union 名字 { };例1 求联合体A所占字节数?union A{ char a; short b; int c;};分析:先看结构体内部的成员,我们知道变量a是char类型,占1个字节,变量b...原创 2021-12-13 11:18:54 · 199 阅读 · 0 评论