自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程管理之 atexit()函数

一个进程可以登记若干个函数,这些函数由exit()自动调用,这些函数被称为终止处理函数,atexit函数可以登记这些函数。如果一个函数被多次登记,也会被多次调用。

2016-06-25 22:41:54 466

转载 几个常用的操作系统进程调度算法

一、先来先服务和短作业(进程)优先调度算法1.先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入

2016-06-25 22:07:52 1080

原创 linux的task_struct结构体

进程是什么呢?进程就是在执行之中的程序,还包括它所管理的所有资源。进程和程序的区别非常明显。好几个进程有可能都在执行同一个程序。那么linux系统是如何来管理进程的呢?它需要通过一大套的信息来管理进程,这些信息都放在一个叫做task_struct的结构体中,这个结构体就包含了一个进程的全部信息。本文就简单的介绍这个结构体。

2016-06-25 17:03:28 1027

原创 makefile 和 进度条小程序

初学linux,学习了一个进度条小程序,给大家分享一下。首先,进度条大体是一个什么样子呢?大家都见过进度条,就是一个长条不断变长的过程,旁边还有一个百分比数字显示加载了多少,为了美观还有各种小东西,比如一个像电风扇的东西在那里转。那么既然知道了进度条是一个什么样子,就那代码去实现它吧。一个长条不断变长,我们可以用一个一个增加的“=”来表示它,当然了两头要有符号来表示它的开始和尽头,

2016-06-25 15:10:01 1046

原创 以栈解决迷宫问题

怎么找到一个迷宫的出口呢。首先要知道迷宫长啥样,之后知道出入口,再之后就是找通路的过程了。    显然主要的部分是如何找通路。我们就举一个例子:    在这个迷宫中0就是墙,1就是路。那么我们可以用一个二维数组来表示这个迷宫。之后我们需要一种结构来实现我们表示位置的移动。12345

2016-06-23 16:23:53 5399

原创 c++ 多态

多态是c++中很重要的一环。多态可以分为以下几个层面来剖析:    1.对象的类型    2.多态    3.虚表    先说第一点对象的类型,这个非常简单。比如说、int a;    那么我就定义了一个int类型的变量a。再来看下面的代码class Base{};class Derive:public Base{};    这里我写了一个Base类和一个Derive类,并且Der

2016-06-23 16:19:03 305

原创 string类的实现(构造函数,析构函数,运算符重载)

String类的代码:class String{public: String(char* str="") { _str = new char[strlen(str) + 1]; strcpy(_str, str); } String(const String& str) { _str = new char[strlen(str._str) + 1]; strcpy(

2016-06-23 16:19:00 576

原创 类的继承

继承是c++中一种很重要的概念,它使我们的代码可以进行复用。继承就是在原有类的特性下进行拓展,拓展出自己的特性,增加功能。那么这样所产生的类。称之为派生类。这样就体现了从简单到复杂的认知过程,也呈现了面向对象程序结构层次。  那么继承到底是什么呢?举一个简单的例子,所有学生都是人,但是所有人都不一定是学生。所有的人都要吃饭,呼吸,睡觉。学生也要做上述的事,但是学生还要学习,而不一定所有的人都要学习

2016-06-23 16:18:58 421

原创 以c++的方式实现单链表

之前用c语言的方式实现过单链表,现在用c++的方式实现单链表。  以c++的类实现单链表,写完代码有了许多不一样的体会。感受到了两种语言的差异。#includeusing namespace std;class Slist{private: struct Node { int data; Node* pNext; }; int size; Node* pHead;

2016-06-23 16:18:55 372

原创 c++中的构造函数和拷贝构造函数

c++的类有六个默认成员函数,我今天介绍其中的两个,一个是构造函数另一个是拷贝构造函数。  构造函数用于当类的对象被创建时,给它分配内存空间,并且由编译器自动调用构造函数对类对象进行初始化工作。  构造函数的函数名与类名相同,没有返回类型。下面是一个例子:class String{public: String() { }private: char* _pStr;}  这个时候Str

2016-06-23 16:18:52 318

原创 在c++中struct和class的区别

在c++中,不仅有强大的类而且也有结构体struct。那么两者有什么区别呢?  首先,c++增加了“类”类型之后,还保留了结构体类型,并且对它的功能进行了拓展。但是为什么有了强大的类之后我们还要保留下这个结构体类型呢?这是因为在c++设计时的一项原则:c++必须兼容C,使大量过去的C程序可以不加修改的在C++环境下使用。所以我们保留了结构体类型。而且在C++中结构体也具有了类的特点,这样用于面向对

2016-06-23 16:18:49 423

原创 单链表的学习

链表是一种很重要的数据结构,它由两部分组成,第一个部分是我们要储存的数据,第二个部分是指向下一个储存单元的指针。链表在使用中有顺序表无法比拟的灵活性,免去了储存空间不够,又有可能浪费的尴尬。单链表有一个头指针pHead,当我们没有数据要储存的时候它指向NULL,当我们有数据的时候它指向第一块储存单元。储存单元里面有两个部分,前面的部分是我们要储存的数据data,后面的部分是指向下一个储存单元的指针

2016-06-23 16:18:46 300

转载 VS2013的常用快捷键

1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ”。 2.复制/剪切/删除整行代码 1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完成复制操作,而无需选择整行。 2)如果你想剪切一整行代码,只需将光标移至该行,再使用组合键“Ctrl+X”来完成剪切操

2016-06-23 16:18:43 371

原创 关于if语句中的小细节

if语句都会用,但是有一些小细节并不容易被发现。比如我们不应该写这样的代码:if(flag==0)flag为布尔变量,布尔变量的值为真或假,用0表示假,真是多少是不一样的。所以我们应该避免将布尔变量与0或1这样的整型值进行比较。那么我们也不应该写这样的代码:if(i)i为一个整型变量,但是写成上面那样就会被人误以为是布尔值,良好的编程习惯是这样的:if(i==0)或if(i!=0)还有重要的一点是

2016-06-23 16:18:41 400

原创 对整形数组进行快速排序

快速排序就是首先找到一个基准点,之后把比它小的都放到左边(升序排序),把比它大的都放到右边去,然后把基准点归位到中间处,最后对数组中的前后两部分进行同样的步骤就可以完成快速排序。程序中用递归的方式来完成。下面是代码#includevoid quicksort(int src[], int left, int right){ if (left >= right) return; in

2016-06-23 16:18:38 1403

原创 模拟实现atoi函数

atoi函数就是把一串字符串转换为int型整数的函数,通过将字符串中的字符一个一个强制类型转换,并且存入一个临时数组中,再将数组中的数字处理一下即可得到我们需要的整数。实现这个函数的过程中,我们需要注意负数的处理,要进行一次判断,确定返回值的正负。其他的字符按照ASCII码表进行转换即可。下面是代码:#include#includeint my_atoi(char a[],int sz){

2016-06-23 16:18:35 392

原创 冒泡排序多个字符串

#include#includevoid str_bobble_sort(char *a[],int count){ int i = 0, j =0 ; for (i = 0; i < count - 1; i++) { for (j = 0; j < count - 1 - i; j++) { if (strcmp(a[j],a[j+1])>0) { c

2016-06-23 16:18:32 300

原创 一大波库函数的模拟实现

#include#include//指针streln//int my_strlen(const char *src)//{// int count = 0;// while (*src++)// count++;// return count;//}//数组strlen//int my_strlen(const char src[])//{// int count 

2016-06-23 16:18:30 269

原创 字符串的输出

说到输出首先就想到了printf函数,例如: char *p="123456789"; printf("123456789"); printf("%s","123456789"); printf(p);那有没有其他方法呢,我查阅了一些资料。比如用fputs函数fputs(p,stdout);这样也可以在屏幕上打印出123456789用puts函数puts(p);可以打印出123456789并且

2016-06-23 16:18:27 411

原创 用c语言指针实现给整形数组冒泡排序

#includevoid reverse(const int *start,const int *end){ int *tstart = start; while (start != end) { int *left = tstart; while (left != end) { if (*left > *(left + 1)) { *left = *l

2016-06-23 16:18:23 1721

转载 C语言中memset函数详解

功 能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,  块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作  用 法: void *memset(void *s, char ch, unsigned n);  程序例:  #include   #include   #include   int main(void)  {  char buffer[]

2016-06-23 16:18:21 208

原创 再次编写折半查找程序

看了看以前写的程序,觉得应该再写一次。#include#includechar* find(char *left, char *right,int len){ char k; char *mid= left + len / 2; printf("k="); scanf("%c", &k); while ((*mid != *left) && (*mid!=*right)) {

2016-06-23 16:18:17 343

原创 编写一个函数(递归实现) 实现:将参数字符串中的字符反向排列。

#include#includevoid reverse_string(char * start,char * end){ assert(start); assert(end); char tmp; if (start < end) { tmp = *start; *start = *end; *end = tmp; reverse_string(++start,

2016-06-23 16:18:15 408

原创 用递归和非递归的方法求解n的k次方

递归的方法#includeint my_power(int n,int k){ if (k-- > 1) n*=my_power(n, k); return n;}int main(){ int n = 0, k = 0, ret = 0; scanf("%d%d", &n, &k); ret = my_power(n, k); printf("%d^%d=%d\n

2016-06-23 16:18:12 628

原创 左旋字符串

#include#includevoid reverse(char *left, char *right){ while (right > left) { char tmp = *right; *right = *left; *left = tmp; right--; left++; }}void left(char src[], int len){ i

2016-06-23 16:18:09 228

原创 新年第一段代码

#include#include#includeint getline(char line[],int limits){ int i = 0; int ch = 0; while ((limits > 1) && (((ch = getchar()) != EOF) && (ch != '\n'))) { line[i++] = ch; limits--; } if 

2016-06-23 16:18:06 1912

原创 最近的一个多星期

最近的一个星期,其他的事情很多,恰逢考试周,本人身体也出现了一些问题,所以博客没有更新。  虽然博客没有更新,但是我学习c语言的脚步并没有停下来。今天时间总算空出来了,所以来做一个总结。  我学习了指针的用法,指针和数组的区别,还有其他数据类型,比如结构体、共同体等,浮点数在内存中的储存形式。  还有就是我写的几个代码。  1.编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(b

2016-06-23 16:18:03 222

原创 12-21学习记录 初识Linux

今天初步学习了Linux的简单操作,简单的命令。比如ls,cp,mv,pwd,cd等等。 ls命令是list的缩写,可以根据不同的选项,列举指定目录或文件的相关信息。它也是最基础的命令之一。 cd命令是最基础的命令,用于目录间的切换。比如:cd code,cd ..。 mv命令是move的缩写,可以用来移动文件或者将文件改名。 cp命令是capy的缩写,用于复制文件或目录。 pwd命令用来查看”当

2016-06-23 16:18:00 238

原创 12-20学习记录

今天练习了一些新代码包括  一.编写一个函数,它从一个字符串中提取一个子字符串。#include#include#include#includeint substr(char dst[], char src[], int start, int len){ assert(dst); assert(src); int i = 0; for (i = 0; i < len; i++)

2016-06-23 16:17:57 213

原创 2015-12-18 学习心得

今天学习了c语言的一些库函数用法。  比如:strcpy(),strlen(),strchr(),strcmp(),strcat(),strstr()。  下面是我写的一些代码和结果。1.strlen#include#includeint main(){ char a[10] = "12345"; printf("%d\n", strlen(a)); system("pause");

2016-06-23 16:17:55 211

原创 12-17 学习记录

今天复习了一个代码,编写一个程序,从标准输入读取几行输入。每行输入都要打印到标准输出上,前面加上行号。在编写这个程序的时候要使这个程序能够处理的输入行的长度没有限制。    这个代码之前写过,可是今天再次编写的时候还是遇到了一些困难。我发现自己对于while语句的使用理解还是不够深刻。putchar的位置搞了半天。    代码如下:#includeint main(){ int line =

2016-06-23 16:17:52 207

原创 2015-12-16 一些学习感想

今天复习了之前写过的一些代码,发现许多知识以及淡忘了,看来以后不仅要向后看也要向前看。  比如,我复习求ax^2+bx+c=0二元一次方程的根,我编写代码的时候定义a,b,c三个局部变量定义成了整形,这根本就是错的。我还复习到float型变量跟零进行比较的时候需要与一个特别小的数代替零。比如0.0000000001比如1e-6,我就想是为什么,我查阅了资料,发现是因为实数在计算和存储过程中会有一些

2016-06-23 16:17:49 261

原创 简单的猜数游戏

#include#includeint main(){ int k = 0; int count = 0; srand((unsigned)time(NULL)); int a = rand() % 100; int i = rand() % 100; for (k = 0; k<2; ) { count++; int j = 0; printf("请输入一个0~9

2016-06-23 16:17:46 282

原创 输出一个整数的每一位

#includeint main(){ int i = 0,n = 0; printf("请输入数字:"); scanf("%d", &i); while (i) { n = i % 10; i = i / 10; printf("%d ", n); } system("pause"); return 0;}

2016-06-23 16:17:43 361

原创 求1!+2!+·····10!

#includeint main(){ int i = 0, sum = 0, n = 1,tmp=1; for (n = 1; n { tmp = 1; for (i = 1; i { tmp *= i; } sum += tmp; } printf("%d\n", sum); system("pause"); return 0;}这个代码很罗嗦  非常不好可以优化为#incl

2016-06-23 16:17:40 394

原创 简单的三子棋游戏

简单的三子棋游戏,我能力有限把电脑玩家的走子写的比较简单。#includevoid qipan(){ printf("_ _|_ _|_ _\n"); printf("_ _|_ _|_ _\n"); printf("_ _|_ _|_ _\n");}void player_and_pcdo(){ int i = 0, j = 0; static char a[3][3] = { ' ', ' '

2016-06-23 16:17:37 382

原创 简单的密码登陆

#includeint main(){ char *mima = "123"; char ch[10] ; int i = 0; printf("请输入密码"); for (i = 1; i < 4; i++) { scanf("%s", ch); printf("还有%d次输入机会\n", 3 - i); if (*mima == *ch) { printf

2016-06-23 16:17:34 528

原创 让我想输出的字符串 从两端向中间汇聚

#include#includeint main(){ char ch[] = "          "; char a[] = "1234567890"; int i = 0, j = 9; while (i <= j) { ch[i] = a[i]; ch[j] = a[j]; printf("%s\n", ch); Sleep(2000); i++;

2016-06-23 16:17:32 231

原创 编写程序输出杨辉三角

#includeint main(){   int i,j;   int a[100][100];   int row;   printf("row=");   scanf("%d",&row);   for(i=1;i<=100;i++)   {      a[i][0]=1;      a[i][i]=1;   }   for(i=2;i<=100;i++)   {

2016-06-23 16:17:29 2089

原创 一直接受键盘字符 接收小写字符出输出大写 接受大写输出小写 数字不输出

#includeint main(){ int ch = ' '; while ((ch = getchar()) != EOF) { if (ch >= 'a' && ch <= 'z') { putchar(ch - 32); } else if (ch >='A' && ch <= 'Z') { putchar(ch + 32); } els

2016-06-23 16:17:26 283

空空如也

空空如也

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

TA关注的人

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