自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux-----基础I/O函数以及fd与FILE的对比

open/read/write/close纵向对比fd与FILE结构体

2018-07-11 15:25:51 578

原创 操作系统-----进程的调度算法

先来先服务 (FCFS,first come first served) 最短作业优先(SJF, Shortest Job First) 最高响应比优先法(HRRN,Highest Response Ratio Next) 时间片轮转算法(RR,Round-Robin)多级反馈队列(Multilevel Feedback Queue) ...

2018-07-10 13:10:05 495

原创 Linux------简单命令2

查找命令 whereis 命令 : 找到命令在哪里放着 // whereis ls which 命令 : 找到命令在哪里放着 (信息简洁) // which ls shell 命令分为两类:内置命令 用man看不到cd 另外, 1) help 内置命令, 2) info 内置命令外部命令查找文件 find 目录 -name “*.h” -exec...

2018-07-02 21:38:50 227

原创 Linux-----简单命令1

格式:命令 [-选项] [参数] ls : -l 列出详细信息 -d 显示目录本身,而不是目录里的内容 -a 显示所有文件,包括隐藏文件 . 开头的文件称为隐藏文件 pwd :查看当前路径 cd :改变当前路径 cd 回家 ~ 代表家目录 . 代表当前目录 .. 代表当前目...

2018-07-02 21:30:35 260

原创 Linux------如何使用命令安装gcc/g++, gdb, vim

gcc

2018-07-02 20:58:21 298

原创 Linux-----简单命令3

进入目录需要哪些权限, 在目录中执行增删查(cd, touch, ls, rm, mv等)改文件动作, 需要哪些权限. 命令需要权限cdxtouchx wlsx rrmxmvx2.了解以下Linux下的重要目录/proc, /sys, /SElinux, /bin, /usr/lib, /usr/local, /var, /tmp /bin二...

2018-07-01 22:24:06 114

原创 数据结构-----链表的基本操作

先来说一下链表的基本操作有哪些? 增删查。 下面是头文件中的声明:#pragma oncetypedef int Datatype;typedef struct SList{ Datatype data; struct SList *pNext;}SList;//初始化void SListInit(SList *pHead);//尾插void SLi...

2018-07-01 20:52:12 287

原创 数据结构-----顺序表的增删改查

对于静态顺序表的增删改查,下面是头文件,其中声明了用到的函数#pragma once#define N 20typedef int DataType;typedef struct SeqList{ DataType data[N]; int size;}SeqList;// 初始化 void SeqListInit(SeqList *pSeq);// ...

2018-06-02 18:19:53 654

原创 算法时间复杂度和空间复杂度

一,算法 算法:解决特定问题求解步骤的描述。在计算机中表现为指令的有限序 列,每条指令可表示一条个或多个操作。 二,算法具有五个特性输入:算法具有零个或多个输入。输出:只有一个或多个输出。有穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且一个步骤在可接受的时间内完成。就是不会出现死循环。。。确定性:每一个步骤都有确定含义,不会出现二义性 可行性:每一步都能够通过执...

2018-06-02 18:04:36 351

原创 浅谈 折半查找

先来看一下普通查找,在一组数据中查找元素x,最容易想到的方法就是遍历n个元素,找到元素x并返回x的位置,这种算法的时间复杂度为O(n)。如果这n个元素是有序的,我们可以用二分查找来实现,二分查找的时间复杂度是O(logn)二分查找即折半查找,前提是有序的一组元素,其基本思想是每次拿中间元素和要查找的元素 (假设是k) 进行比较,如果相等,返回该元素位置;如果arr[mid] > k,那么...

2018-06-02 18:03:24 358

原创 C语言-----数组的一组数据反向存储

数组的一组数据反向存储,也就是数组数据进行倒序,把最后一个和第一个进行交换,第二个和倒数第二个进行交换,依次类推,直到到中间的元素。void reverse(int* left, int *right){ while (left < right) { int tmp = *left; *left = *right; *ri...

2018-06-02 17:28:43 2035

原创 C语言-----冒泡排序多个字符串

题目: 写冒泡排序可以排序多个字符串 我们按照从大到小的顺序,应该想到用指针数组来存放字符串void bubble_sort_str(char *arr[], int sz){ int i = 0; int j = 0; for (i = 0; i < sz - 1; i++) { for (j = 0; j < sz - i ...

2018-05-25 20:41:34 738

原创 C语言----注释转换(C风格---C++风格)

这篇博客主要内容是注释转换,就是把C语言风格的注释/* ~~~~~~~~~~*/转换成C++风格 //其中有一些文件操作函数,不懂的可以看这篇博客: https://blog.csdn.net/abc_xixi111/article/details/80377450首先,我们要知道一个文件中至少有五种状态,我们用状态图表示 解读: 我们从 不是注释 的状态开始,请看下图 ...

2018-05-22 12:29:04 493

原创 C语言---文件操作

先来了解一下什么叫流?? 计算机中大量设备都与I/O有关。CD驱动器,软盘硬盘驱动器,网络 连接,通信接口,视频适配器就是很常见的外设。每一种外设都有不同的特性和操作协议。OS负责这些不同设备的通信细节,并向用户提供一个更为简单的统一的I/O接口。而ANSI C进一步对I/O的概念进行了抽象。就C程序而言,所谓的I/O操作就是简单从程序移进,移出字节的事情,这种字节流就叫做 流。 流分为两种:...

2018-05-22 12:11:34 464

原创 C语言-----实现my_atoi函数

题目: 编写程序实现字符串到整数的转换,如字符串”12345”,输出整数12345。 分析: 实现这个函数要先知道怎么把字符转换成数字,用字符1减去字符0就是数字1。 另外还有考虑一些问题: 1. 正负数该怎么输出? 2. 有空格怎么办? 3. 有其它字符该怎么输出? 4. 返回值怎么知道它是不是正确返回? 以下为源代码:#define _CRT_SECURE_NO_WA...

2018-05-20 10:48:55 975

原创 C语言-----编写一个日历

#define _CRT_SECURE_NO_WARNINGS 1#include<stdio.h>#include<stdlib.h>//某个月的日历int months[2][13] = { { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 },{ 0, 31, 29, 31, 30, 31, 30, 3...

2018-05-18 22:50:01 2362

原创 C语言-----sizeof和strlen的计算

sizeof是一个关键字,求字符串所占的字节数。sizeof在计算变量所占空间大小时,括号可以省略,但是绝对不能sizeof int,这是错误的,可以在int前加unsigned,const等关键字,但是不能加sizeof,以下三种都是正确的;sizeof在编译的时候计算出来。 printf("%d\n", sizeof(int)); printf("%d\n", si...

2018-05-18 22:34:01 344

原创 C/C++内存分配

在C/C++中,内存分为5个区,分别是栈区,堆区,静态区,文字常量区,程序代码区。 静态区:保存全局变量和static变量(包括static全局和局部变量),静态区的内容在整个程序的生命周期中都存在。由编译器在编译的时候分配。 栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。效率高,但空间有限。 堆:有malloc系列函数或new操作符分配的内存...

2018-05-18 21:30:32 222

原创 C语言-----动态内存开辟

动态内存开辟是根据用户的需要来开辟开间,就是用多少空间开辟多少空间。 malloc:

2018-05-18 21:04:21 802

原创 结构体实现静态+动态通讯录

学习了结构体之后,我用结构体实现了一个简易版通讯录。 题目: 实现一个通讯录; 通讯录可以用来存储1000个人的信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 可以实现的功能有:增删改查以及排序。 下面是通讯录的源程序: 头文件中是一些函数的声明以及宏定义#ifndef __TELE_H__#define __TELE_H__#include "tele.h"...

2018-05-16 15:02:54 451

原创 C语言-----结构体知识点总结

定义 声明 位段

2018-05-11 18:00:50 4622

原创 C语言-----string.h头文件中相关字符串函数的模拟实现

strlen:用途:Get the length of a string.函数原型:size_t strlen( const char *string ); size_t表示无符号的意思,长度值肯定是无符号的。模拟实现:int my_strlen(const char *str){ int count = 0; assert(str != NULL); while (*str != '\0...

2018-05-10 14:35:28 1275 2

原创 C语言-----memcpy和memmove函数的模拟实现

memcpy:用途:Copies characters between buffers. 函数原型:void *memcpy( void *dest, const void *src, size_t count ); 模拟实现:void* my_memcpy(void *dest, const void *src, int count){ void *ret = dest...

2018-05-10 11:57:05 233

原创 C语言-----结构体内存对齐

结构体内存对齐规则:第一个成员在结构体变量偏移量为0 的地址处。其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。对齐数 = 编译器默认的一个对齐数与该成员大小中的较小值。vs中默认值是8 Linux默认值为4.结构体总大小为最大对齐数的整数倍。(每个成员变量都有自己的对齐数)如果嵌套结构体,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(包含...

2018-05-10 11:15:13 18657 11

原创 C语言-----模拟实现strlen函数的三种方法

第一种:计数器方法,一开始写的时候,我是最喜欢用这种方法写的,但随着后来的知识面的扩充,感觉这种方法不是很简便。#include <assert.h>int my_strlen(const char *str){ int count = 0; assert(str != NULL); while (*str != '\0') { count++; str++; }...

2018-05-02 20:42:19 332

原创 C语言-----指针数组,数组指针,函数指针,函数指针数组,函数指针的数组的指针的一些理解

指针数组数组是一个存放相同类型数据的存储空间。我们先来看一下整型数组int arr[5] = { 0 }; printf("%p\n", arr); printf("%p\n", arr + 1); printf("%p\n", &arr); printf("%p\n", &arr + 1);结果如下:arr与&arr值一样,表示数组地址,但是+1之后就不一样了。a...

2018-05-02 19:40:31 115

原创 C语言-----对指针和数组的一些认识

指针,什么叫指针?数组,什么又是数组?指针与数组之间的关系?这是一个曾经让我感到难于上青天的问题现在我来替我解答一下,也希望可以帮助到曾经和我一样绕不清的小伙伴。指针在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过指针能找到所需要的变量单元,可以的说,地址指向该变量单元。因此,将地址形象化为指针,意思是通过它能找到以它为地址的内存单元。简...

2018-05-02 16:59:26 168

原创 C语言-----简单实现扫雷

今天来写一个小项目-怎么实现简易版扫雷,大家都玩过扫雷吧,在写扫雷这个小项目之前我是不会玩扫雷的,O(∩_∩)O哈哈~,之后才有了玩的想法。现在我们来看一下如何实现吧。项目思路:首先,我们要玩扫雷要有一个简单的游戏菜单供用户选择,这就需要一个菜单函数menu( )。其次,要有两个数组,一个用来隐藏的显示雷的数组,另一个就是真正显示界面的数组。数组定义好后要进行初始化啊,显示雷的数组用 0 初始化,...

2018-05-02 15:16:52 526

原创 C语言-----编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。

题目:编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。 int main(){ int ch = 0; while ((ch = getchar()) != EOF) { putchar(ch); } system("pause"); return 0;}EOF是end of file 的缩写,意为文件结束标志,定义为#define EOF -1简单...

2018-04-20 19:53:35 436 1

原创 C语言-----怎么刷新输入缓冲区

经常我们想在屏幕上看一个结果或输入内容的时候,却不等待你输入就结束了,此时就需要刷新输入缓冲区。题目:先来看一个栗子:实现登录时确认密码,输入Y即确认成功,N表示放弃确认。int main(){ char password[20] = { 0 }; int ch = 0; printf("请输入密码:"); scanf("%s", password); printf("请确认密码(Y/...

2018-04-20 19:11:24 9514

原创 C语言-----递归解决汉诺塔问题(典型递归)

题目:     这是一个典型的用递归解决的例子,问题是这样的:古代有一个梵塔,塔内有三个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上,有一个和尚想把这64 个盘子从A移到C,规定每次只能移到一个盘子且在移的过程中始终保持打大的在下,小的在上。用编程写出移动过程。解题思路:        这个问题看着很麻烦,不知道从何下手,那是想的太复杂,类似这种复杂的问题,首先要做的就...

2018-04-19 15:21:21 11139 3

原创 C语言-----可变参数解析

写在开头:     当我们想实现的函数功能的参数不确定时,我们就不能用同一个函数去实现不同参数的传递,此时,我们可以将函数实现成为可变参数的形式,可以使函数接受一个以上任意参数的传递。举个栗子:int main(){ int ave = 0; ave = average(2, 2,2); printf("%d\n", ave); ave = average(3, 2,2,2); pri...

2018-04-19 14:21:17 229

原创 C语言-----有参数的main函数

我们学习C语言的时候,用到的第一个函数应该就是main函数了吧,大多数情况下看到的都是没有参数的int main(void),今天我们来深入解析一下有参数并且带有三个参数的main函数。编译器为vs2013。int main(int argc,char *argv[],char *envp[]){ int i = 0; for (i = 0; i < argc; i++) { ...

2018-04-18 19:18:25 31306 10

原创 C语言-----三子棋的实现

相信大家都玩过五子棋吧,今天我来写一个简易版的三子棋,第一次写超过200行的代码,是自己的一个进步,这算是我的第一个小项目了。写三子棋首先要有一个简单的思路:1. 要有棋盘,初始化棋盘,显示棋盘2. 该下棋了,人和电脑进行对战,那就需要两个函数,分别是人下棋的函数和电脑下棋的函数。3. 下完棋之后,每一步都要判断输赢。我们先来看一下运行结果:O---------玩家X---------电脑首先,打...

2018-04-15 18:22:44 210 3

原创 C语言-----函数调用过程

我们在程序运行过程中运行到一个函数,它就会自动跳转到这个函数去执行它,那么函数在内存中到底是怎么经过一系列过程调用的呢?今天来聊一聊函数调用。指针寄存器esp,ebp1.  首先先搞清楚函数调用中两个非常重要的指针寄存器esp,ebp。对这两个寄存器的一些理解:esp为栈指针,用于指向栈的栈顶ebp为帧指针,指向栈的栈底。函数栈帧2.  函数调用过程中需要开辟空间,用于本次函数的调用中临时变量的保...

2018-04-15 16:11:56 548

原创 C语言------什么叫大端小端

我们都知道在计算机中是以二进制的方式存储数据的,对于整形来说:数据存放内存中其实存放的是补码。举个栗子:               int a = 7;               int b = 1;这两个变量在内存中是这样存放的数据存储顺序和我们想象的不太一样,这就是大端小端存储模式的原因。什么叫大端大端字节序(大端存储模式):一个数据的低位字节序放在高地址,高位字节序的内容放在低地址。什么...

2018-04-13 21:23:08 487 2

原创 C语言-----一个整数在内存中的二进制1的个数

题目:编写代码实现求出一个整数在内存中的二进制1的个数。大家都知道,内存中的数都是以二进制存储的,所以最容易想到的思路就是给这个数 num 模 2,取模等于 1 说明这位为 1,定一个计数变量,整一个循环,直到num 为 0,计数器中为num 这个数1的位数。方法一:代码如下:int main(){ int num =10; int count = 0; while (num) { ...

2018-04-11 21:13:30 213

原创 C语言-----编写程序确定凶手题

题目:日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说的是假话。 现在请根据这些信息,写一个程序来确定到底谁是凶手。 int main(){ int killer = 0; for (killer = 'a'; killer <= 'd'; kil...

2018-04-11 17:59:42 377

原创 C语言-----五人比赛预测比赛结果

题目:5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。题目分析:一开始看到这个题 完全不知道从何下手,所以在会了之后才想写这篇博客供大家参考,也是为我打开了一个新思路。 首先有五位选手说明了需要...

2018-04-11 17:35:17 1123

原创 c语言操作符——面试题

求下列输出值是多少?1. int i = 0, a = 0, b = 2, c = 3, d = 4; i = a++ && ++b && d++; printf("%d,%d,%d,%d\n",a,b,c,d);输出  a=1,  b=2,  c=3,   d=4,进行逻辑与运算时,当前边表达式为假时,后边的表达式不用计算,其结果为假。下来的是由此题引申的题:...

2018-03-31 10:03:16 190 1

空空如也

空空如也

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

TA关注的人

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