- 博客(35)
- 收藏
- 关注
原创 进程调度算法
一,进程调度的原因无论是在批处理系统还是分时系统中,用户进程数一般都多于处理机数、这将导致它们互相争夺处理机。另外,系统进程也同样需要使用处理机。这就要求进程调度程序按一定的策略,动态地把处理机分配给处于就绪队列中的某一个进程,以使之执行。二,进程调度方式1. 非抢占式优先权算法在这种方式下,系统一旦把处理机分配给就绪队列中优先权最高的进程后,该进程便一直执行下去,直至完成;或
2016-06-17 14:59:27 713
原创 我的第一个Linux小程序(进度条)
一,预备知识 在写进度条之前,先要对printf函数有一个更深的理解与认识,看一个简单的程序:(1)运行后先输出“hello world”,再睡眠三秒(2)去掉\n以后,按照预期,应该先输出hello world,再睡眠3秒,可是结果却是睡眠3秒后再输出hello world,这是为什么呢?其实呢printf函数是先把内容写到行缓冲区,遇到\n或者是行缓
2016-06-02 20:04:06 3852
原创 make,makefile和程序的编译链接过程
一,Linux下程序运行过程 1,在一个目录下新建三个文件:main.c hello.c hello.h分别编写他们如下图: 2,想要让这个程序执行起来,就必须对上面的三个文件分别进行编译链接执行,如下图: 通过上面这个过程。我们可以大致总结一下gcc编译器把目标文件经过预处理,编译,汇编,链接生成可执行文件的过程和命令: (1)预处理(宏替换,删除注释和多余的空白字
2016-06-02 12:00:18 14953 2
原创 Centos中vim的配置
一,vim简介 多模式编辑器,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。1、vim的基本概念 基本上vim可以分为三种状态(其实有好多模式,目前掌握这3种即可),分别是命令模式、插入模式和底行模式,各模式的功能区分如下:1) 命令行模式command mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert
2016-06-02 10:45:34 478
原创 文件名查找指令find
一,文件查找命令 在linux下有相当优异的查找命令。那怎么查找一个文件的存放路径呢?通常我们会用到下面这三个命令: which 查看可执行文件的位置。 whereis 查看文件的位置。 locate 配合数据库查看文件位置。 find 实际搜寻硬盘查询文件名称。 通常我们先使用前面三个命令来进行查找,如果真的找不到。再使用find命令来查找。因
2016-06-02 10:45:31 776
原创 Linux基础(一)
第一部分:计算机1,计算机硬件的五大单元:(1)输入单元:包括键盘,鼠标,扫描仪,手写板等。(2)中央处理器(CPU):含有算术逻辑,控制,记忆等单元。(3)输出单元:显示器,打印机。2,计算机的处理过程:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/7F/FA/wKiom1czAPHhHTLdAAASWj65LCs555.pn
2016-06-02 10:45:28 332
原创 栈求解迷宫问题
求迷宫从入口到出口的所有路径是一个经典的程序设计问题。一般的设计思想就是从入口出发,顺着某个方向向下探索,探索分为上下左右四个方位,哪个方向是通的就将向下走,如果每个方向都走不下去就进行原路“回退”。所以需要一个后进先出的结构来保存从入口到出口的路径。所以运用栈来实现是非常方便的,沿着某个方向走,将每个可通的位置进行入栈标记,再切换到下个位置;如果都不通,则栈顶出栈取消标记,再寻找。下来呢就实现一
2016-06-02 10:45:25 666
原创 智能指针和异常
今天让我们来分析一下C++中的智能指针和异常,首先呢先普及一下概念!(1)智能指针:智能或者自动化的管理指针所会向的动态资源的释放。(2)异常:当一个函数发现自己无法处理的错误时,让函数的调用者直接或间接的处理这个问题。(3)RAII:资源分配即初始化。构造函数完成对象的初始化,析构函数完成对象的清理,而不是删除。在实际写代码过程中,我们很容易写出存在异常的代码,不信来看看下面几个例子 :void
2016-06-02 10:45:22 641
原创 数组和指针再次来袭
1,数组和指针的定义于声明:定义:只能出现一次,用来确定对象的类型和大小,并为其分配空间。声明:可以出现多次,描述对象的类型,用于指定其他地方定义的对象,不为对象分配空间。所以说extern char a[]与extern char a[10]等价,因为这是声明,不分配空间。看一个关于数组指针的例子:例1:#includeint main(){ char a[5] = { 'A', 'B',
2016-06-02 10:45:19 291
原创 数组和指针
1,一维数组 先看一下一个整型数组关于数组名的表达式在内存中所占的字节数#include#includeint main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeof(a)); // 16 在sizeof中,数组名a不发生降级,代表整个数组 printf("%d\n", sizeof(a+0)); // 4 在sizeo
2016-06-02 10:45:16 340
原创 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
1,模拟实现strstrstrstr为字符串查找函数,其原型为:char *strstr( const char *string, const char *strCharSet );这个函数就是在string中寻找是否含有子字符串strCharSet,寻找过程两个都不需要发生改变,所以将它们声明为const常量。返回值为char *这样可以方便链式访问。代码实现如下:#include#inclu
2016-06-02 10:45:14 454
原创 模拟实现strstr
模拟实现strstr:在系统库函数中,存在strstr函数,它用于查找子字符串。它的函数原型为:char *strstr( const char *string, const char *strCharSet );这个函数中是要从*string中查找*strCharSet子字符串。因为只是查找,这两个字符串都不用发生改变,所以将他们声明为常量字符串。模拟实现strstr:#include#inc
2016-06-02 10:45:10 356
原创 模拟实现strncat
模拟实现strncat:在系统库函数中,存在strncat这个函数,它用于字符串的追加,就是在一个字符串后面再追加一个字符串,它的函数原型为:char *strncat( char *strDest, const char *strSource, size_t count );在其中,*strDest为目标字符串,*strSource为源字符串,count为需要追加的字符串的个数,strncat就
2016-06-02 10:45:08 455
原创 判断一个字符串是否为另外一个字符串旋转之后的字符串。
判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAAAABCD右旋一个字符得到DAABCAABCD右旋两个字符得到CDAAB方法(1):用库函数实现,代码如下:#include#include#includeint
2016-06-02 10:45:05 414
原创 实现一个函数,可以左旋字符串中的k个字符
实现一个函数,可以左旋字符串中的k个字符例如:AABCD左旋一个字符得到ABCDAAABCD左旋两个字符得到BCDAA方法(1):采用循环移位,对需要旋转的k个字符按顺序进行旋转,先将要旋转的一个字符保存起来,将后面的往前挪动一位,再将保存起来的这个字符赋给最后一位,这样连续循环k次,就可以完成了。代码实现如下:#include#include#includevoid left_move(c
2016-06-02 10:45:02 984
原创 宏定义
可以使用#define伪指令定义一个宏,宏分为带参数的宏和不带参数的宏。宏定义以#define关键字后面第一个出现的第一个连续字符序列作为宏,剩下的部分作为宏体。宏定义具有文件作用域,不论宏定义出现在文件中的那个地方(如函数体内,类型定义内部,名字空间内部等),在它后面的任何地方都可以引用宏。宏的特点和注意事项:(1)宏定义的不是语句,因此不需要使用语句结束符“;”,否则它会被看做宏的一部分。#d
2016-06-02 10:44:59 353
原创 在屏幕上输出图案
在屏幕上输出图案:#define _CRT_SECURE_NO_WARNINGS#include #include int main(){int line = 0;int i = 0;scanf_s("%d", &line);for (i = 0; i < line; i++){int j = 0;for (j = 0; j < line - 1 - i; j++){pr
2016-06-02 10:44:56 424 1
原创 编写程序数一下1到100的所有整数中出现多少次数字9
编写程序数一下1到100的所有整数中出现多少次数字9:#define _CRT_SECURE_NO_WARNINGS#include #include int main(){int i = 0;int count = 0;for (i = 0; i <= 100; i++){if (i % 10 == 9){count++;}if (i / 10 == 9){coun
2016-06-02 10:44:53 438
原创 计算1/1-1/2+1/3-1/4+1/5...+1/99-1/100的值
计算1/1-1/2+1/3-1/4+1/5...+1/99-1/100的值分析:根据题意可以知道,这个必须设为浮点型。#define _CRT_SECURE_NO_WARNINGS#include #include int main(){int i = 0;double sum = 0.0;int flag = 1;for (i = 1; i <= 100; i++){sum
2016-06-02 10:44:50 791
原创 输出一个整数的每一位
输出一个整数的每一位:递归调用#define _CRT_SECURE_NO_WARNINGS#include#includevoid print(int num){if (num >= 10)print(num / 10);printf("%d", num % 10);}int main(){int num = 10;scanf_s("%d", &num);print(n
2016-06-02 10:44:47 342
原创 从键盘输入一个字符,按要求输出
从键盘输入一个字符,若输入为小写字符,输出对应的大写字符;若输入为大写字符,输出对应的小写字符;若输入数字,则不输出。分析:其中将ch定义为int型是因为这样它的返回值范围就够大,EOF在内存中存储时它的值为-1。#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){int ch = 0;while ((ch = getch
2016-06-02 10:44:44 2187
原创 求两个数的最大公约数
求两个数的最大公约数:用辗转相除法#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){int num1 = 0;int num2 = 0;scanf_s("%d%d", &num1, &num2);while (num1%num2){int r = num1%num2;num1 = num2;num2 = r;
2016-06-02 10:44:41 293
原创 将三个数从大到小输出
将三个数从大到小输出:方法1:创建临时变量#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){int a = 0, b = 0, c = 0;int tmp = 0;scanf_s("%d%d%d", &a, &b, &c);if (a < b){tmp = a;a = b;b = tmp;}if (a <
2016-06-02 10:44:38 552
原创 交换两个数组的内容
交换两个数组的内容:#define _CRT_SECURE_NO_WARNINGS#include#includeint main(){int arr1[10] = {1,2,3,4,5,6,7,8,9,0};int arr2[10] = {0,9,8,7,6,5,4,3,2,1};int i = 0;for (i = 0; i < sizeof(arr1) / sizeof(ar
2016-06-02 10:44:35 338
原创 求10个数中的最大值
求10个数中的最大值:求数组长度:sizeof(arr) / sizeof(arr[0])#define _CRT_SECURE_NO_WARNING#include#includeint main(){int arr[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };int i = 0;int max = arr[0];for (i = 1; i <
2016-06-02 10:44:32 450
原创 输出九九乘法口诀表
输出九九乘法口诀表#define _CRT_SECURE_NO_WARNING#include#includeint main(){int i = 0;int j = 0;for (i = 1; i <= 9; i++){for (j = 1; j <= i; j++){printf("%d*%d=%2d ", i, j, i*j);}printf("\n");}s
2016-06-02 10:44:29 536
原创 求100-200之间所有的素数
输出100-200之间的素数,素数就是其约数只有1和它本身的数。分析:为了尽量缩短循环的次数,通过分析可以得到只要对该数除以从2到该数开平方就可以判断出这个数是不是素数了。#define _CRT_SECURE_NO_WARNINGS#include #include #includeint main(){int i = 0;int count = 0;for (i = 101;
2016-06-02 10:44:26 899
原创 猜数字游戏
猜数字游戏,根据程序提示,程序自动生成一个0-100之间的数,用户输入0-100之间任意一个数,通过比较,输出“你猜大了”,“你猜小了”,“恭喜你,猜对了!”。#define _CRT_SECURE_NO_WARNINGS#include #include #include void print_menu(){printf("**********************\n");pr
2016-06-02 10:44:23 501
原创 模拟用户登录系统
模拟用户登录系统,并且只允许输入3次密码,如果输入正确,登录成功;如果输入错误,登录失败。分析:在这个程序中用到了字符串比较函数strcmp(s,t),根据s指向的字符串小于(st)》t指向的字符串的不同情况,分别返回负整数,0或正整数。在运用这个函数时要添加头文件#include。#define _CRT_SECURE_NO_WARNINGS#include#include#include
2016-06-02 10:44:20 1183
原创 输出一个数的二进制序列中的奇数位和偶数位
输出一个数的二进制序列中的奇数位和偶数位分析:(1)运用右移运算符‘>>’,右移一位相当于除以2,右移后并不会影响数值本身。(2)一个数占4个字节,32个bit位,将它右移偶数位后剩余的部分再与1进行按位与,得到奇数位。(3)将它右移奇数位后剩余的部分再与1进行按位与,得到偶数位。#define _CRT_SECURE_NO_WARNINGS#include#includeint main(
2016-06-02 10:44:17 571
原创 写一个函数返回参数二进制中1的个数
写一个函数返回参数二进制中1的个数分析:(1)输入一个数(2)判断它是否为0。(3)如果不为0,就对它进行模2取余,模2的过程就相当于把这个数向右移除了一位,如果余数为1,则证明移除的这一位为1,就将其记录下来。如果余数为0,就证明移除的这一位为0,就不记录。(4)经过第3步以后,对这个数进行除2取整,再进入到第2步中。如此循环,直到第3步中判断为0。注意:(1)对于负数,在内存中是以其补码形式存
2016-06-02 10:44:14 1591
原创 求一元二次方程的根
判别一元二次方程ax^2+bx+c=0根的情况并求根。分析:(1)当b^2-4ac=0,方程有两个相等的实根,x1=x2=-b/2a。(2)当b^2-4ac>0,方程有两个不相等的实根,x1=(-b+√(b^2-4ac))/(2a),x2=(-b-√(b^2-4ac))/(2a)。(3)当b^2-4ac需要注意:(1)方程的根可能是小数,所以在定义变量时不能用整型,可以用浮点型或者double型。
2016-06-02 10:44:11 956
原创 判断1000年-2000年之间的闰年
判断1000年-2000年之间的闰年(1)程序中定义了一个变量flag,当flag=1时,表示输入的年份是闰年;当flag=0时,表示输入的年份不是闰年。(2)程序中运用了“与”运算符&&,它表示同时满足前后两个约束。#includeint main(){int year;int flag=0;scanf("year\n");for(year=1000;year<=2000;year+
2016-06-02 10:44:08 560
原创 C语言基础知识
通过这两天对基础知识的学习,对C语言中一些基本的知识有了更多的理解。就所学的做以下小结:1,注释:/*.....*/ 在C语言中,注释比较灵活,可以放在任何位置,在预处理时注释被替换成一个 空格,所以并不会影响整个程序的执行。但值得注意的是,注释是不能嵌套使用的。例如像这样的程序是错误的:例1:#includeint main(){/*/*注释*/int a=0;*/return
2016-06-02 10:44:05 601
原创 交换两个数的C语言程序
今天是第一次接触C语言,之前有一点C++的基础,所以学习起来还挺顺手的。下来分享一下写的一个关于交换两个数的C语言代码。可能这些还存在很大的问题,希望大家可以指正。方法一:允许创建第三个变量#includeint main(){ int a=10; int b=20; int tmp=a; a=b; b=tmp; printf("
2016-06-02 10:44:02 892
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人