自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-08-27 C++类与对象(2)

C++类与对象2类的6个默认构造函数初始化和清理拷贝复制取地址重载构造函数特性析构函数特性类的6个默认构造函数初始化和清理构造函数主要完成初始化工作析构函数主要完成清理工作拷贝复制拷贝构造是使用同类对象初始化创建对象赋值重载主要是把一个对象赋值给另一个对象取地址重载主要是普通对象和const对象取地址,这两个很少会自己实现。首先我们先写一段代码class Date{ public: void SetDate(int year, int month, int day) {

2021-08-27 20:18:32 229

原创 C++类与对象(1)

类的引入C语言中,结构体只能定义变量,但是C++中结构体内不仅可以定义变量,还可以定义函数。类的定义C语言中,我们通常使用struct,而C++中我们引入新的关键字class。class className{ // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号具体的例子class Person{public: void PrintPersonInfo();private: char _name[20]; char _gender[3]; int _ag

2021-08-26 19:46:34 157

原创 队列模拟实现

头文件#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>struct BinaryTreeNode;typedef struct BinaryTreeNode* QDataType;typedef struct QListNode // 队节点{ struct QListNode* _next; QDataType _data;}QNode;// 队列的结构 typ

2021-08-24 11:27:43 138

原创 2021-08-14 摩尔投票法

摩尔投票法题目分析摩尔投票法思路摩尔投票法适应的问题回到题目题目原题leetcode链接分析正常思路,排序后取中间数,考虑到排序算法时间复杂度为O(n*logn)。显然这不够优秀。于是我们可以考虑摩尔投票法。摩尔投票法思路我们用原始的投票情况模拟,我们现在有ABC三个候选人而8张选票分别是{A,B,C,B,C,A,A,A}。摩尔投票法思路:1、设置两个变量,res记录当前获胜者,count记录当前获胜者的相对选票2、若当前获胜者和当前选票指向候选人相同,则count+13、若当前获

2021-08-14 20:50:46 238 4

原创 Linux环境开发工具(2)gdb调试工具+Makefile自动化构建工具

Linux环境开发工具(2)gdb调试工具+Makefile自动化构建工具Linux编译器-gcc/g++使用程序编译过程重要概念:函数库静态库与动态库gcc选项gdb使用具体命令Makefile 工具使用过程项目清理原理关于项目清理Linux小程序---理解缓冲区概念注意点git命令的使用Linux编译器-gcc/g++使用程序编译过程预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)连接(生成可执行文件或库文件)以hello.c 为例gcc -E hello.c -o h

2021-08-06 20:13:52 2515 1

原创 回溯算法(1)模板+组合问题+剪枝

组合问题与剪枝回溯?具体例子的分析回溯的剪枝操作回溯?回溯 重点在于回头。回溯算法本身改变不了暴力搜索的本质。简单一点说:从一条路往前走,能进则进,不能进则退回来,换一条路再试。回溯算法主要应用于:组合问题:给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。(不考虑顺序,即{1,2} {2,1}认为同一种可能)分割问题:给定一个字符串,如何分割回文字符串排列问题:组合问题的拓展,即考虑顺序棋盘问题:n皇后(以八皇后最为经典)以组合问题为例,n=4,k=2为例。

2021-08-05 22:12:31 370 6

原创 2021-08-05 Linux开发工具使用(1)vim命令全解读

Linux开发工具使用(1)Linux软件安装包管理器yumyum list如何安装软件如何卸载软件Vim编辑器使用Vim的基本概念vim的基本操作Vim正常模式命令集vim末行模式命令集简单vim配置常用配置选项一种简便的vim格式全设置方法Linux软件安装包管理器yumLinux操作系统下安装软件和windows环境有所不同,并非直接下载安装包,通常方法是下载程序源代码然后进行编译最终得到可执行程序,然而这种方法过于麻烦,对于新人并不友好,于是有一些人将常用的软件编译好上传到平台,用户们就可以直接

2021-08-05 16:41:47 920 3

原创 2021-07-28 Linux基础指令(2)

Linux基础指令shell 命令Linux权限相关Linux权限相关文件访问者的分类(人)文件类型基本权限文件权限值的表示方法文件访问权相的相关设置方法file指令粘滞位与目录的权限权限总结shell 命令shell直面翻译为外壳,而Linux为核心,因此从字面意义上我们可以将shell理解为保护核心的一个装置。从技术层面上来说,shell是命令行解释器,核心并不能直接理解我们输入的命令,shell的功能是将使用者的命令翻译给核心处理,同时将核心的处理结果反馈给用户。同时我们意识到shell为了防

2021-07-28 16:24:07 177 3

原创 2021-7-27 Linux基础指令(1)

Linux基础指令Linux下的基本指令(1)ls指令pwd命令cd指令touch指令mkdir指令rmdir/rm指令man指令cp指令mv指令cat指令more指令less指令head指令tail指令时间相关指令datecal指令find指令grep指令zip/unzip指令tar指令bc指令uname -r指令几个常用的热键关机Linux下的基本指令(1)ls指令功能展示出该目录下所有的子目录和文件,对文件则列出其文件名和其他信息。常用选项:-a 列出目录下的所有文件,包括以 . 开头的隐含

2021-07-27 19:57:13 464 6

原创 2021-07-26--C++入门

C++入门命名空间意义命名空间的定义命名空间的使用C++的I/O注意事项缺省参数缺省参数的分类注意事项函数重载特别注意原理extern "C"引用特殊情形-常引用引用与指针内联函数inline注意事项auto与范围forauto使用auto的注意事项范围for空指针nullspr命名空间意义C语言一大显著缺陷,在于同命的函数或者变量的冲突,而c++就此进行了改进设计了命名空间。我们可以使用命名空间对标识符的名称进行本地化,避免命名冲突或污染。命名空间的定义namespace{ int a; i

2021-07-26 21:40:04 238 2

原创 编译+链接+预处理指令

编译+链接+预处理指令编译+链接C语言执行的过程编译预编译编译汇编链接预处理指令预处理符号宏定义宏定义函数与函数一些特殊的预处理指令编译+链接C语言执行的过程我们知道机器最终实现的为01序列的二进制代码,而我们在VS等IDE下编写的其实是一串串的文字。首先编译器会将我们写的代码全部转化为字符(利用ASCⅡ码)存储,根据不同的指令再通过编译转化为汇编语言,此时高级语言已经达到了机器语言的层面,汇编语言再次转化为二进制语言,生成了obj文件(xxx.o),送入链接器,生成可执行文件(xxx.exe)编

2021-03-20 11:42:25 1063 6

原创 通讯录优化+文件操作

通讯录优化+文件操作通讯录优化文件操作文件的打开和关闭(fopen、fclose函数)fopen函数fclose函数文件读写函数fgetc和fputcfgets和fputs(文件指针会根据行移动)fgets函数fputs函数fscanf和fprintffread和fwritesscanf和sprintf函数fseek函数ftell函数rewind函数feof、ferror函数文件缓冲区概念通讯录优化相比于上一篇博客的静态通讯录,此版本通讯录增加了动态开辟空间及将通讯录储存进入文本的功能。即a. 添加

2021-03-14 20:26:00 2067

原创 动态通讯录+动态内存管理

通讯录+动态通讯录+动态内存管理动态通讯录动态内存管理开辟位置malloc函数函数使用方法判断是否申请成功free函数函数使用不释放空间的问题calloc函数函数使用realloc函数函数使用注意点动态内存开辟的错误动态通讯录#include <stdio.h>#include <string.h>#include <malloc.h>#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 12#defin

2021-03-11 10:43:44 1129 2

原创 结构体+枚举+联合体

结构体+枚举+联合体结构体结构体的声明结构体的嵌套+链表结构体变量的初始化结构体的内存对齐一、首先得掌握结构体的对齐规则二、一些具体的例子为什么存在内存对齐?位段位段的内存保存枚举枚举的优点联合体联合体内的空间使用联合体大小的计算结构体结构体的声明struct Stu{ char name[20];//名字 int age;//年龄 char sex[5];//性别 char id[20];//学号};//分号不能丢需要注意的是结构体可以使用匿名声明,但这种声明只能只能使用一次,相当于

2021-03-07 15:48:52 2331 6

原创 C语言字符函数、内存函数 功能及实现

C语言字符函数、内存函数 功能及实现strlen函数(求字符串长度)注意点模拟实现strcpy函数(字符串拷贝函数)注意点模拟实现strcat函数(字符串衔接函数)注意点模拟实现strcmp函数注意点模拟实现strstr函数模拟实现strtok函数使用strerror函数使用memcpy函数注意点模拟实现memmove函数注意点模拟实现memset函数注意点strlen函数(求字符串长度)统计字符串长度直到\0为止注意点1、属于<string.h>库2、参数为字符串,返回类型为无符号整

2021-02-05 21:05:09 4133 3

原创 C语言 qsort函数及其实现

qsort 函数实现认识qsort函数关于cmp函数实现qsort函数(此处采取冒泡排序,后续补充快速排序)认识qsort函数首先调用时先引头文件#include<stdlib.h>base是数组首元素,num是数组长度,width是数组中一个元素占字节的大小,compare是一个比较函数,来确定比较的方式,若大于则返回正数,小于返回负数,相等返回0关于cmp函数由于根据声明发现此处的e1,e2参数都是void*类型的指针,而此种类型的指针是不能解引用和++/–的,所以我们在比较时

2021-02-02 21:52:14 2729 3

原创 C语言数据存储-浮点型

C语言数据存储-浮点型浮点型浮点型的种类和表示范围储存方式二进制转化浮点型浮点型的种类和表示范围1、float:3.4E-38~3.4E382、double:1.7E-308~1.7E3083、long double:3.4E-4932~1.1E4932储存方式二进制转化我们以9.5为例,首先将一个浮点型数据转化为2进制形式,同时分为整数部分和小数部分于是就有了1001.1整数部分的转化与整型非常类似,然而小数部分非常有趣。小数点后其实类比于十进制,第一位代表2^-1(即0.5)第二

2021-02-01 20:15:40 2237 4

原创 C语言数据存储--整型

C语言数据存储--整型整型数据:整型家族原码、反码、补码减法计算计算机的大小端何为大小端?如何判断计算机是大端还是小端?一些操作实例整型数据:整型家族charunsigned charsigned charshortunsigned shortsigned shortintunsigned intsigned intlongunsigned longsigned long原码、反码、补码1、正整数原码、反码、补码相同,直接进行二进制转换就可;(2^32-1个正整数)2、负整

2021-01-31 22:11:35 356 1

原创 C语言 位运算操作符及应用(骚操作)

C语言长盛不衰霸榜长久的一部分原因,在于它对于计算机底层的操作。位运算,作为实现底层操作的一部分功能值得我们关注。当然从功利的角度而言,位运算在以后的面试、笔试过程中对我们有着极大的便利。前言:首先需要了解整数储存的机制;原码、反码、补码;三种码都是32位的二进制数输出靠原码,内存存补码;1、正整数原码、反码、补码相同,直接进行二进制转换就可;(2^32-1个正整数)2、负整数32位的首位为符号位(1代表负数);(2^31-1个符数)原码将剩余的31位通过负整数的绝对值进行二进制转化反码

2021-01-29 21:17:14 1746 4

原创 c语言 扫雷游戏模拟实现

扫雷是Windows系统的经典游戏,下文将利用c语言实现这个经典的小游戏。本版本程序添加了炸弹标记功能。但由于作者水平实现较为死板,此处留坑待以后学习后改进。Part 1主函数部分:此部分主要提供用户界面,不同程序均可利用:int main(){ srand((unsigned int)time(NULL)); int input = 0; do { menu(); printf("请选择:>\n"); scanf

2021-01-25 20:30:25 3131 9

原创 C语言三子棋游戏实现及AI设想、五子棋推广

@Part1:Part 1 三子棋游戏基础实现:1、操作界面实现:即实现供用户选择的的菜单:我们定义为menu函数void menu(){ printf("****************\n"); printf("*****1.play*****\n"); printf("*****0.exit*****\n"); printf("****************\n");}我们希望达到的目的是用户可以不断选择,直至按0退出游戏,于是我们在主函数中需要搭建框架

2021-01-24 21:22:50 4719 10

原创 递归的一些问题实现及尾递归思考

Part 1 什么是递归:我们知道循环(iteration)和递归(recursion)可以理解为孪生兄弟,递归是函数抽象表达的一种。递归的优点显而易见,它在某些条件下,比循环代码量更少。递归简单来说,就是在运行过程中调用自己。而递归的实现需要满足两个条件,存在限制条件,在函数体同时在递归过程中不断逼近限制条件。(此阶段暂不考虑栈溢出)Part 2 一些递归的问题(任何理论逃不开实例):(1)汉诺塔问题:首先我们要知道什么是汉诺塔问题:这源于一个印度的传说,作者为避免文字误会,直接引用:“大梵天创

2021-01-22 22:10:49 1673 2

原创 Hello World!--Skyline的第一篇博客

Hello World!–Skyline的第一篇博客和CSDN其实已经是老朋友了,然而在看了那么多别人的博客后,终于着手开始写下第一篇自己的博客。#include <stdio.h>int main(){ printf("hello world---from Skyline\n"); return 0;}Part1 自我介绍:我是来自南京大学的大一学生,学习编程一开始只是出于对于转专业的需求。感谢于学校的平台,让我学习了sicp(计算机程序构造与解释),对计算机语言的

2021-01-11 12:45:54 1146 3

空空如也

空空如也

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

TA关注的人

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