自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT小书生的博客

从一个IT菜鸟走向IT大神的不归路!

  • 博客(34)
  • 收藏
  • 关注

原创 顺序表的基本操作

首先了解一下什么是顺序表?顺序表:用一段地址连续的存储单元依次存储数据元素的线性结构。地址连续的空间,一般情况下采用数组,但数组有静态数组和动态数组,所以顺序表分为静态顺序表和动态顺序表。 下面请看顺序表的基本操作:SeqList.h#pragma oncetypedef int DataType;//定义数据类型#define N 10//顺序表的大小...

2018-06-20 16:00:56 353 1

原创 堪比金刚经的C语言十九章法宝

C语言思维导图知识总结此图本人亲自经过数日日夜夜总结、修改而来,方便查阅记忆,复习总结!

2018-06-20 11:27:33 364

原创 回调函数

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调⽤,而是在特定的事件或条件发⽣时由另外的⼀方调⽤的,⽤于对该事件或条件进⾏响应。 例子:使用回调函数,模拟实现qsort(采用冒泡排序)#include <stdio.h>int int_cm...

2018-05-25 11:56:09 509

原创 函数指针数组的应用

函数指针数组的用途:转移表 例子:计算器#include <stdio.h>int add(int a, int b){ return a + b;}int sub(int a, int b){ return a - b;}int mul(int a, int b){ return a*b;}int div(int a, int ...

2018-05-25 11:43:52 627

原创 C语言 volatile 关键字总结

对 volatile 关键字的理解: volatile在英语的意思是:挥发性的, 不稳定的, 易变的. 在编程中不是是很容易被理解的它, 加上平常很少被用到, 再加上它更多地被用于硬件编程方面, 所以就更加让一些人琢磨不透了.总之, 作为一个变量类型修饰符, volatile的作用就是被设计用来修饰被不同线程访问和修改的变量. 在原子操作中同样会用到. 如果没有它, 很有可能使得编程写的多...

2018-05-25 11:09:52 1699 8

原创 C语言static 关键字总结

static 关键字总结: 变量可以被static 修饰,意义有发生变化吗? 下面我们看个例子: (1)变量不加 static 修饰#include <stdio.h>void test(){ int num = 0; num++; printf("%d ", num);}int main(){ int i = 0; for...

2018-05-25 10:49:05 28650 12

原创 C语言const关键字总结

const关键字const是constant的简写,只要一个变量前面用const来修饰,就意味着该变量里的数据可以被访问,不能被修改。也就是说const意味着“只读”readonly规则:const离谁近,谁就不能被修改; const修饰一个变量,一定要给这个变量初始化值,若不初始化,后面就无法初始化。本质:const在谁后面谁就不可以修改,const在最前面则将其后移一位,二者等效。...

2018-05-25 10:08:33 670

原创 模拟实现僵尸进程、孤儿进程的场景

首先了解一下什么是僵尸进程、什么是孤儿进程。(1)Z(zombie)僵尸进程僵尸状态(zombie)是一个比较特殊的状态。当进程退出并且父进程(使用wait()系统调用)没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入Z状态。(...

2018-05-23 20:28:22 169

原创 进程调度算法

调度也称dispatcher 这是内核的主要职责之一就是决定该轮到哪个任务运行了多数实时内核是基于优先级调度算法的每个任务根据其重要程度的不同被赋予一定的优先级基于优先级的调度法指CPU 总是让处在就绪态的优先级最高的任务先运行然而究竟何时让高优先级任务掌握CPU 的使用权有两种不同的情况这要看用的是什么类型的内核是非占先式还是占先式的内核,一个良好的任务调度算法应该主要体现在以下几个方面 (...

2018-05-23 19:39:21 342

原创 浅谈函数调用,开辟栈帧的过程

函数的调用过程其实就是开辟栈帧的过程,首先了解一下栈的特性和几个常用的寄存器。栈:栈先进先出。栈是从高地址向低地址延伸的。每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。寄存器ebp指向当前的栈帧的底部(高地址),我们称为栈底指针,寄存器esp指向当前的栈帧的顶部(低地址),我们称为栈顶指针。通用寄存器:eax ebx ecx edx.eip(程序计数器...

2018-05-23 11:31:33 1939 3

原创 函数的可变参数解析

实现一个函数可以求任意个参数的平均值#include <stdio.h>#include <stdarg.h>int average(int n, ...){ va_list arg; //声明一个va_list类型的变量arg int i = 0; int sum = 0; va_start(arg, n);//初始化变量a...

2018-05-17 14:48:56 152

原创 利用递归输出一个整数的每一位

#include <stdio.h>int _print(int num){ if (num < 10) printf("%d ", num); else { _print(num / 10); printf("%d ", num % 10); }}int main(){ int num = 1234; _print(num);...

2018-05-17 14:07:24 4616 2

原创 main函数的参数解析

下面我们看一下main函数的原型:int main(int argc char* argv[],char* envp){ program-statements}其实main函数有三个参数:第一个参数:argc是个整型变量,表示命令行参数的个数(含第一个参数)。第二个参数:argv是个字符指针的数组,每一个元素一个字符指针,指向一个字符串。这些字符串就是命令行中的每一个参数(字符串)

2018-05-09 20:24:31 8821 2

原创 函数递归

什么是递归?程序调用自身的编程技巧称为递归( recursion)。 递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义 或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问 题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需 少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程 序的代码量。 递归的主要思考方式在于:把大事化小递归的

2018-05-09 15:11:40 147

原创 写一个函数,实现一个有序数组的二分查找。

#include <stdio.h>int binary_search(int arr[],int key,int sz){ int mid = 0; int left = 0; int right = sz - 1; while (left <= right) { int mid = left + (right - left) / 2;

2018-05-02 20:18:02 880

原创 写一个函数,判断所输入的年份是不是闰年。

#include <stdio.h>int leap_year(int year){ if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1; else return 0;}int main(){ int year = 0; printf("请输入年

2018-05-02 19:54:58 3374

原创 实现一个函数,判断一个数是不是素数。

#include <stdio.h>#include <math.h>int Is_prime(int n){ int i = 0; for (i = 2; i <= sqrt(n); i++) { if (n%i == 0) { return 0; } } return 1;}i

2018-04-28 11:36:29 1389

原创 求一个整数存储在内存中的二进制中1的个数。

主要运用了移位操作符和位操作符,在循环中与1进行按位与操作,并对count进行++。#include <stdio.h>int main(){ int num = 0; int count = 0; printf("请输入一个整数:\n"); scanf("%d", &num); while (num) { count++;

2018-04-28 09:31:58 274

原创 猜数字游戏

主要用了循环语句、switch选择语句,还有rand获取随机数。一开始你根据目录提示选择开始游戏,程序随机获取一个随机数,根据提示输入你要猜的数,你输入的数根据判断进入if选择语句,最终输出你所猜的结果。需要注意的是,srand((unsigned)time(NULL))表示获取的随机数随时间变化而变化。#include <stdio.h>#include <stdlib.h>#include

2018-04-25 20:59:37 162

原创 计算n的阶乘和

实现思路:问题中的阶乘n需要从键盘输入,先计算n的阶乘,就得有一个变量i从1遍历到n,进入循环有一个变量ret,初始值为1,来记住本次的乘积ret*i,随着i的增加,当i增加到n时,输出ret。在定义一个sum,每项得出的结果ret加到sum中。#include <stdio.h>int main(){ int n; int i = 0; int sum = 0;

2018-04-25 18:33:06 6237

原创 编写代码实现,模拟用户登录场景,并且只能登录三次。

只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序。此代码用到了字符串比较函数,如果输入的字符串与定义的字符串相同则登录成功,允许输入三次密码则用到for循环,在for循环中还用到了break,直接跳出循环。#include <stdio.h>#include <string.h>int main(){ char key[] = { "123456" };

2018-04-24 20:37:51 807

原创 编写代码,演示多个字符从两端移动,向中间汇聚。

本题需要定义两个字符数组,定义和计算了字符串的开始和结束位置,用到了strlen计算字符串的长度。还用到了while循环,当左边界值left小于等于右边界值right时,循环进行,同时left和right同时更新。还用到了Sleep函数,循环每进行一次,等待一秒。#include <stdio.h>#include <string.h>#include <windows.h>int main(

2018-04-24 17:28:31 193

原创 task_struct结构体, 理解结构体中的各个字段的含义

首先什么是进程?1>进程是程序的一个执行的实例;2>进程是正在执行的程序3>进程是能分配处理器并由处理器执行的实体按内核的观点来谈进程:它所担当分配系统资源(CPU时间,内存)的实体。进程的两个基本的元素如下:一、程序代码(可能被执行相同程序的其它进程共享)二是和代码相关联的数据集。这里和代码相关联的数据集指的是数据段和进程控制块。进程是一种动态描述

2018-04-02 16:54:57 1602

原创 除了gcc外,其他的一些编译器

C/C++这两门语言依然活跃在编程领域里,其不仅拥有强大的功能集,而且还提供了强大的安全保障。为此,笔者专为C/C++编码者收集了15款令人印象深刻的IDE和编译器。 Web开发者可选择的编程语言有很多比如,Java、.Net、PHP、Ruby、Perl、Python等等,但是今天我们要讨论的是两个古老且非常流行的语言,即C/C++。正是由于其迷人的特性,赋予了它们更加有效的功能,并且也获得了各大

2017-12-06 17:26:27 630

原创 在Linux环境下安装gcc/g++/gdb/vim,以及进行vim的配置

在Linux中配置文件的位置 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root⽬目录下,通常已经存在一 个.vimrc文件。首先我们先执行ls -a命令查看以.开头的隐藏文件看是否有.vimrc文件 如果没有该文件 ,在当前用户的主工作目录下创建一

2017-12-06 16:50:04 1603

原创 在Linux环境下实现打印彩色进度条

在Linux环境下实现打印彩色进度条进度条在屏幕上显示包含以下几个部分显示已经执行了多少 执行多少占的百分比 一个转盘 先来说一下普通的进度条 对于显示执行多少,一般都会预留100个空间,每0.1秒完成1% 对于执行占的百分比,用循环i来实现,每循环一次,i+1,刚好是循环占的百分比 对于转盘,用一个数组实现,数组中有四个元素\ | - /,当这四个元素依次循环时,出现一个简单

2017-12-05 20:37:07 395

原创 完成复数类

完成复数类的加、乘等简单运算。首先会初始化一个复数,然后需要你重新输入一个复数,然后进行简单的运算,最后两个复数进行比较。其中用到重载运算符,this指针,构造函数等知识。#define _CRT_SECURE_NO_WARNINGS 1#ifndef COMPLEX_H#define COMPLEX_H#include <iostream>#include <iomanip>class

2017-11-09 16:47:26 369

原创 模拟实现strcmp、strstr、memcpy、memmove

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <assert.h>#include <windows.h> #include <stdlib.h>#模拟实现memmove函数void *my_memmove(void *dest,const void *src,size_t count) { void *re

2017-09-18 17:33:07 374

原创 模拟实现strcat函数

strcat函数是在一个字符串的后面追加一个字符串,首先判断目标字符串不为空,然后找到目标字符串的结束位置,即“\0”,在其位置追加上另外一个字符串。char* my_strcat(char* dest,char* src){ char *cp=dest; assert(src && dest); while(*dest!='\0') { dest++; } whi

2017-09-18 17:25:24 423

原创 模拟实现strcpy

char *my_strcpy(char *dest, const char *str) { char *ret=dest; while(*dest++ = *str++) { ; } return ret; } int main() { char arr1[64] = "hello";

2017-09-18 17:19:54 454

原创 三种方法模拟实现strlen函数

分别利用计数器、指针、递归模拟实现strlen函数。首先了解strlen函数的用法,参数类型和函数特点。求字符串长度,当最后一个字符为“\0”时,函数返回字符串的长度。int my_strlen(const char *str){ int count = 0; while (*str != '\0') { count++; str++;

2017-09-18 17:14:03 483

原创 一个简单的冒泡排序

一个简单的冒泡排序首先要明白的是冒泡排序函数的用法,然后模拟实现冒泡排序函数,首先定义一个数组,算出数组的长度。在模拟冒泡排序函数时,要用到if判断语句,将数组的前一个数与后一个数比较,如果前一个数比后一个数大,则调换位置,相邻两个数依次比较。还要在函数调用时注意函数的参数。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>void bubble_

2017-09-14 17:41:52 567

原创 将C语言注释转换为C++注释

将C语言注释转换为C++注释代码思路:CommentConvert.h#define _CRT_SECURE_NO_WARNINGS 1#ifndef __COMMENTCONVERT_H__ #define __COMMENTCONVERT_H__ #include<stdio.h> #include<stdlib.h> enum STATE { NUL_ST

2017-09-11 21:45:05 378

原创 一个IT菜鸟的梦想起航篇

首先我做一下自我介绍,我叫郭文涛,和我们熟悉的诗人郭沫若是一个大家(此处有点小得意)。。。我是一个来自陕西省汉中市勉县的一个乐观、开朗的小男孩,现就读于陕西省西安市西安工程大学计算机科学学院软件工程专业,目前处于大二阶段。       此刻如果有人问我的理想是什么,那我肯定会说写好代码。我这样说自有我的理由,因为我觉得理性说的太大,可望不可及的东西太空、太假,简直就是空谈,所以我觉得说起理性就

2017-03-16 12:53:17 468 1

空空如也

空空如也

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

TA关注的人

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