- 博客(30)
- 收藏
- 关注
原创 小白的编程经验(算法)
一、算法是什么数据结构中的算法,指的是数据结构所具备的功能。解决特定问题的方法,它是前辈们的一些优秀的经验总结。二、算法的五个特性输入:具有0个或者多个输入输出:至少有一个或者多个输出有穷性:在有限步骤之后会自动结束而不会无限循环确定性:每一步都有确定的含义,不会出现二义性可行性:算法的每一步都是可行的三、算法的时间复杂度 时间复杂度: 由于计算机的性能不同,无法准确地统计出某个算法执行所需要的时间,所有我们使用算法执行的次数来代表算法的时间复杂度
2021-08-30 17:03:37
227
1
原创 小白的编程经验(数据结构)
一、数据结构的基本概念 数据: 所有能够输入到计算机中,能够被程序处理的描述客观事物的符号。 数据项: 有独立含义的最小单位,也叫做数据域(可以类比为结构体的成员变量) 数据元素: 组成数据的有一定意义的基本单位,也叫节点、记录。一个数据元素由若干个数据项组成。(可以类比为结构体变量) 数据结构: 相互之间存在一种或多种特定关系的数据元素的集合。(可以类比为结构体数组)二、数据的逻辑结构和存储(物理)结构数据的逻辑结构: 集合:
2021-08-30 16:54:01
283
原创 小白的编程经验(文件)
文件的分类:文本文件: 存储的是ASCII码的二进制 255 -> '2''5''5' -> 40 43 43 -> 101000 101000 101101二进制文件: 存储的是数据的补码 255 -> 1111 1111文件IOFILE *fopen(const char *path,const char *made ) 功能:打开或创建文件path:文件路径mode:打开模式 r 以只读权限打开文件,如果文
2021-08-30 09:22:31
204
原创 小白的编程经验(类型限定符)
一、结构体(struct)结构体是一种由程序员自己设计的数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成。设计: struct 结构体名 { 类型1 成员名1; 类型2 成员名2; ... };定义结构体变量: struct 结构体名 变量名;结构体变量的初始化: struct 结构体名 变量名={v1,v2,v3...}; 必须要根据结构体设计时成员变量的顺序初始化,末尾缺少默认补
2021-08-30 08:41:28
148
原创 小白的编程经验(预处理指令)
程序员所编写的代码并不能被真正的编译器编译,需要一段程序把代码翻译一下。翻译的过程叫做预处理,负责翻译的程序叫做预处理器,被翻译的代码叫做预处理指令,以#开头的代码都是预处理指令。可以使用以下命令查看预处理过程: gcc -E code.c 把预处理的结果显示到终端上 gcc -E code.c -o code.i 把预处理结果存储到code.i预处理文件中常用的预处理指令有文件包含(#include)、宏定义(#define)、条件编译(#ifdef)等。文件包含(
2021-08-02 18:49:54
148
原创 小白的编程经验(输入输出缓冲区)
在运行程序时,有时会出现显示的和想要的输出内容不符,又或者是输入的内容和想要的输入内容不符。这时就应该考虑是不是缓冲区的问题。缓冲区机制的作用缓冲区机制可以提高数据的读写速度,并且可以让低速的输入输出设备与高速的CPU之间协调工作。打个比方,使用计算机连接打印机来打印文档。由于打印机是低速设备,如果没有缓冲区的存在,打印机每次从计算机中读取一个数据打印,计算机需要一直等打印机打印结束才能去做其他事情。当有缓冲区以后,计算机可以把数据全放入缓冲区中,打印机只需要从缓冲区中读取数据即可,计算机在此期间可以做
2021-07-29 19:15:51
408
原创 小白的编程经验(字符串)
想要知道什么是字符串,就得先了解什么是字符,什么是串。字符字符在计算机中是以整型形式存储的,当需要显示时会根据ASCII码表中的对应关系显示相应的符号或图案。常用的ASCII码值字符码值‘\0’0‘0’48‘A’65‘a’97显示字符的占位符用 %c。字符的输入: char ch = 0; //使用scanf scanf("%c",&ch); //或者使用getchar()函数 ch = getchar();字符的
2021-07-28 13:16:20
468
原创 小白的编程经验(堆内存)
什么是堆内存?堆内存是进程的一个内存段,由程序员手动管理 优点:足够大 缺点:使用比较麻烦为什么使用堆内存?1、随着程序的复杂,数据量变多,栈内存的大小不能满足,而堆内存足够大。2、其他的内存段申请和释放不受控制,堆内存的申请释放是受程序员控制的。如何使用堆内存:由于C语言没有控制管理堆内存的语句,只能使用标准C库中的函数使用需要头文件 #include<stdlib.h>void *malloc(size_t size);功能:从堆内存中申请size个字节
2021-07-27 19:22:01
167
原创 小白的编程经验(指针数组、数组指针、二级指针、函数指针)
这篇文章可能会有点绕,需要多加思考,理解他们之间的层次关系。一、指针数组与数组指针指针数组指针数组是由指针变量组成的数组,它的成员是指针变量 int* arr1[10]; int *arr2[10];以上两种写法都表示长度为10的指针数组。数组指针数组指针是专门指向数组的指针变量 int (*arr)[10];因为是指向数组的指针,所以星号需要和数组在一起,加个括号可以优先级。 注意:指针数组和数组指针看上去很像,事实上只需要看后两个字就能明白它们的性质。指针数组是数组,用来装指
2021-07-21 19:26:17
127
原创 小白的编程经验(指针)
一、 什么是指针?指针是一种特殊的数据类型,使用它可以定义指针变量,指针变量中存储的是整型数据,代表了内存的编号(地址)。通过这个编号可以访问对应的内存。二、为什么要使用指针?1)共享变量函数之间是相互独立,但有时候需要共享变量,有三种“使用”函数外变量的方法。传参是单向值传递,不可取全局变量可以共享变量,但容易命名冲突,不建议使用数组还需要传递长度,并且只能传递相同数据类型的参数,不建议可见上诉三种方法都不能很好解决共享变量这个问题。这时就需要使用指针。由于指针指向的地址与变量的地址
2021-07-21 18:57:37
118
原创 小白的编程经验(五子棋游戏)
学完函数,可以用函数来做一个五子棋小项目练练手。项目代码放在了码云(gitee)上,有兴趣的可以下载看看。https://gitee.com/YHF_200623/C_boxGame五子棋游戏先简单介绍一下游戏,游戏玩法和传统的五子棋一样。通过输入坐标来选择下棋的位置,当有一方的棋子达到连续五颗及以上时,游戏结束,该玩家获胜。黑棋为@,白棋为O ,空白处用 * 表示。定义并初始化数据需要的定义的数据有:定义棋盘数组 15*15定义角色变量定义变量用于记录下棋位置棋盘没什么好说的
2021-07-19 20:59:56
400
原创 小白的编程经验(全局变量、局部变量、类型限定符)
因为讲全局变量和局部变量的时候会涉及到它们的存储位置,所以在讲全局变量和局部变量前,先科普一下进程映象的概念。进程映象先来区分一下程序和进程的概念:程序:存储在磁盘上的可执行文件(二进制文件、脚本文件)进程:正在系统中运行的程序进程映像:系统中进程内存的分布情况名称含义存储内容特点text代码段二进制指令、常量权限只读,强制修改会产生段错误data数据段初始化过的全局变量、初始化过的静态局部变量程序运行结束释放内存bss静态数据段未初始化过的全
2021-07-19 18:26:15
184
原创 小白的编程经验(函数)
函数是一段具有某种功能的代码集合,是c语言中管理代码的最小单位。把代码分成一个个函数,可以方便地管理和调用代码。1、函数分类标准库函数:C语言标准委员会为c语言以函数形式提供的一套基础功能,这些功能被封装在libc.so库中。使用时需要包含头文件,调用时采用函数名(参数)方式。系统函数:是操作系统以函数接口形式提供的一套功能:内存管理、信号处理、文件IO、文件管理、进程管理、进程通信、线程通信、线程同步、网络通信第三方库函数:由第三方提供的,一些开源或者收费的代码自定义函数:为了更好地管理代码,
2021-07-19 13:53:37
95
原创 小白的编程经验(原码、反码、补码以及位运算符)
很多编程初学者都可能有一个误区,数据在计算机中存储的数据都是以二进制的形式,比如-2的二进制1000 0010。这句话看似没有问题,但是他们认为的二进制实际上是数据的原码,事实上计算机中存储的数据是以补码形式存储的。这里就需要引入原码、反码和补码的概念。原码、反码、补码原码:数据的二进制,直接计算的结果。如:10(0000 1010) -10(1000 1010)反码:顾名思义原码取反,但需要分类讨论。正数的反码就是原码,负数的反码是原码除符号位外,其他位按位求反。如:10(0000 1010)
2021-07-18 20:19:19
378
原创 小白的编程经验(进制与进制转换)
进制这个词可能听起来陌生,但是在我们的生活中却又常常能在不经意间遇到它们。比如我们常说的半斤八两,其实就是一种十六进制;还有平时用的数字,1、100、1000,这些都是十进制。在计算机中常用的进制有:二进制、八进制、十六进制。1、理解进制进制并没有那么难理解,其实就是一个逢几进一的问题。举个例子:二进制其实就是逢二进一,遇到二就归零向前进位加一,前面那位如果加一变成了二,那么继续逢二进一,以此类推。注意:由于逢二进一的规则存在,就意味着二进制中不可能存在2这个数字。如果给你一个二进制:1020,不
2021-07-18 16:00:06
549
原创 小白的编程经验(二维数组推箱子游戏)
推箱子游戏和迷宫游戏有异曲同工之妙,不过在游戏玩法实现上略有不同,需要考虑的情况更多更复杂。推箱子游戏先简单介绍一下游戏,游戏玩法和传统的推箱子一样,控制角色推动箱子。当所有箱子都在目标点上时,游戏结束。玩家操作的角色用 @ 表示,墙壁用 # 表示,道路用空格表示,目标点用 0 表示,箱子用 $ 表示。定义并初始化数据需要的定义的数据有:地图数组角色当前坐标角色当前坐标没啥好说的直接定义就可以了 int x = 6,y = 3; // 角色当前坐标(根据地图初始化) 主要是
2021-07-17 16:45:36
664
原创 小白的编程经验(二维数组迷宫游戏)
通过数组可以做到很多的事情,你甚至可以使用数组来做一款简易的游戏,下面教大家写一个使用二维数组做的迷宫游戏。迷宫游戏先简单介绍一下游戏,游戏玩法和传统的走迷宫一样,控制角色走到出口游戏结束。玩家操作的角色用 @ 表示,墙壁用 # 表示,道路用空格表示。定义并初始化数据需要的定义的数据有:迷宫数组角色当前坐标终点坐标角色当前坐标和终点坐标没啥好说的直接定义就可以了 int x = 3,y = 1; // 角色当前坐标(根据迷宫地图初始化) int final_x = 3
2021-07-16 20:55:51
1922
原创 小白的编程经验(数组)
当需要处理很多相同数据类型的变量时,要是老老实实一个个地定义使用变量的话,会十分麻烦。学完今天的内容就可以对大量相同数据类型进行批量操作,今天要学的内容是——数组。数组什么是数组:可以认为数组是变量的组合,是一种批量定义变量的方式定义:数据类型 数组名[数量];例如: //定义一个长度为五的数组,命名为arr int arr[5]; //等价于: int num1,num2,num3,num4,num5; 初始化:初始化(指在定义的时候赋值)例如: //定义一个长度为五
2021-07-16 12:57:51
89
原创 小白的编程经验(跳转语句)
除了分支语句和循环语句,还有一类语句也能改变程序的执行顺序,它就是跳转语句。常见的跳转语句有四种:break 语句continue 语句return 语句goto 语句分别介绍一下它们吧:1)break语句一般 break 语句使用在循环语句和switch语句中,break 翻译过来就是打破,在循环中可以理解为打破循环,用于结束循环和switch。举个例子:for(int i=0;i<10;i++){ if(i == 5) { break; } printf("%
2021-07-15 16:30:59
485
原创 小白的编程经验(顺序、分支与循环)
通常我们的代码都是根据顺序从上往下依次执行的,但是如果遇到分支或者循环时,代码的执行顺序将发生改变。这也就是我们常说的代码运行的三种结构:顺序结构、分支结构、循环结构; 顺序结构很好理解,就是从上往下依次执行代码,比较重要的是分支结构和循环结构。...
2021-07-14 22:58:17
572
原创 小白的编程经验(运算符)
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符。运算符1) 算术运算符假设变量 A 的值为 10,变量 B 的值为 20,则:运算符描述实例+把两个操作数相加A+B 得到 30-从第一个操作数中减去第二个操作数A - B 得到 -10*把两个操作数相乘A * B 得到 200/分子除以分母A / B 得到 2%取模运算符,整除后的余数A % B 得到 0++自增运算符,整数值增加 1A++
2021-07-13 13:03:55
118
原创 小白的编程经验(数据类型与变量、常量)
一、数据类型首先思考一个问题,为什么要对数据进行分类? 1、在现实社会中数据本身就是自带类别属性,比如:人数基本上都是整数,总不能说半个人吧。 2、对数据进行分类可以节约存储空间、提高运行效率。数据类型在内存的存储如下图,不同的数据类型所占的存储空间不同。如果不给不同数据定义类型,可能会出现两种情况:一是存储空间太小导致数据丢失,二是存储空间过大导致空间浪费。这两种情况我们都不希望出现,所以定义了数据类型来规范数据,节约存储空间、提高运行效率。存储空间的单位符号说明
2021-07-12 13:18:57
221
原创 小白的编程经验(vim编辑器的使用)
vim编辑器是一款可以在终端下采用纯键盘操作的文本编辑器,号称“编辑器之神”,可以升级(二次开发)、可以扩展(安装插件)1、基本用法:进入vim:vim filename 如果文件不存在创建该文件保存退出:按ESC退出编辑模式,输入ZZ保存并退出输入i :进入编辑模式(插入模式),编写代码2、三种模式:vim编辑器有三种模式,可能大家的叫法不一样,但指的对象是应该是同一个,分别是正常模式、编辑模式(插入模式)、行底模式(命令模式)。正常模式:一般用于阅读文件,或者使用快捷键快速修改文件
2021-07-11 11:31:13
487
原创 小白的编程经验(终端个性化设置、自定义命令)
在日常学习中,可能会想要让终端显示个性化,并自定义各种功能命令提高学习效率。这篇文章就带大家了解一下如何个性化设置终端与自定义命令。一、个性化设置首先,先打开终端(Ctrl+)...
2021-07-11 10:00:22
1019
原创 小白的编程经验(Linux命令)
Linux的介绍笼统的我就不多说了,百度去搜都能找到,今天主要给大家讲一讲Linux中的一些命令。一、Linux的文件系统先简单认识一下Linux的文件系统名称用处/根目录,所有文件都存储在它的下面~当前用户主目录 .当前目录 . .上一级目录/bin存储系统命令/dev存储设备文件/media多媒体目录、u盘、光驱、挂载的目录/proc记录了程序运行期间资源的使用情况/sbin存储超级用户才能使用的系统命令/
2021-07-10 16:32:01
530
原创 小白的编程经验(Ubuntu的配置)
小白如何在虚拟机中安装Ubuntu从零开始的虚拟机安装Ubuntu,希望这篇文章对你能有所帮助。下图是安装大纲,我将带着你们过一遍安装流程。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全
2021-07-07 13:55:54
408
原创 CodeGym学习(三):布尔类型及短路运算
布尔类型布尔类型:boolean,此类型变量只能取两个值:true和false。if语句、for循环、while循环等很多地方都会使用到布尔类型。boolean变量的默认值为false,即定义一个boolean变量但没给它赋值时,它的初始值为false。逻辑运算符boolean变量的操作运算往往需要使用到逻辑运算符,它的结果也是一个布尔值(true或false)。通过逻辑运算符,可以对boo...
2020-05-04 23:02:07
870
原创 CodeGym学习(二):运算符的比较
比较运算符比较运算符用于比较两个数据的大小,在Java中常见的比较运算符有以下这些:比较运算符号名称>大于>=大于等于<小于<=小于等于==等于!=不等于使用比较运算符时需要注意以下几点:>、<、>=、<= 只能比较数值类型。==、!= 既能比较数值类型,也可以比较引用类型...
2020-05-03 23:14:08
632
原创 CodeGym学习(一):static变量与非static变量
static变量如果变量被声明为 static,即标记有关键字 static,则它在类存在期间一直存在。JVM (Java虚拟机)通常在首次使用类时将其加载到内存中。static 变量也是在此时进行初始化的。上图中的Cat 类包含4个变量,其中count变量被声明为static变量,由类的所有对象共享,可称作是类变量。而a、b、s为非static变量,每个实例中可以存在不同的值,可称作实例变...
2020-05-02 22:51:39
792
原创 CodeGym—Java自学神器
CodeGym—Java自学神器想学java,学的累,怎么办?神器来了,GodeGym是免费的代码学习网站。这里要感谢抖音账号:程序员鱼皮,通过他的作品我才认识到这个自学神器。我已经在GodeGym中学习了两天了,里面的教程对菜鸟编程很有帮助,零基础教学,你值得拥有。下面是网站链接:GodeGym.课程内容CodeGym 课程大致包括如下6个部分,除了SQL & Hibernate...
2020-05-02 08:20:57
12086
11
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人