- 博客(11)
- 收藏
- 关注
原创 哲学家问题
问题描述:有五个哲学家绕着圆桌坐,每个哲学家面前有一盘面,两人之间有一支筷子,这样每个哲学家左右各有一支筷子。哲学家有2个状态,思考或者拿起筷子吃饭。如果哲学家拿到一只筷子,不能吃饭,直到拿到2只才能吃饭,并且一次只能拿起身边的一支筷子。一旦拿起便不会放下筷子直到把饭吃完,此时才把这双筷子放回原处。如果,很不幸地,每个哲学家拿起他或她左边的筷子,那么就没有人可以吃到饭了。哲学家进餐问题是一个多线程运用的经典例子,涉及到线程同步/互斥,临界区访问问题以及死锁问题。问题思考:哲学家依次编号为:1,2,3,4
2020-06-01 19:11:21
306
原创 生产者消费者问题
问题描述:生产者消费者共享缓冲区,生产者向缓冲区中放数据,消费者从缓冲取中取数据,当缓冲区中被放满时,生产者进程就必须进入挂起状态,直到消费者从缓冲中取走数据时,生产者才能继续向缓冲区中存放数据,同样当缓冲取中没有数据时,消费者进程就必须进入挂起休眠状态,直到生产者向缓冲区中放入数据时,消费者才能被唤醒继续从缓冲区中取走数据。生产者消费者问题,也称有限缓冲问题,是一个多线程同步问题的经典案例。解决方案:解决此问题的关键是要为线程加锁,生产者与消费者线程竞争资源,当一个线程抢到资源时,为资源加锁,等操
2020-05-31 20:52:16
377
原创 Linux下的文件压缩
Linux系统的文件压缩主要依赖三个压缩命令——gzip,bzip2,xz以及一个打包命令——tar。gzip命令:gzip是Linux系统下应用非常广泛的一个压缩命令,gzip可以解开compress,zip,gzip等软件所压缩的文件,而gzip所建立的压缩文件通常后缀名为*.gz。gzip的语法:gzip [ -cdtvk1~9 ] [ name ]参数意义: -c :...
2020-04-05 18:03:52
203
原创 2019题目
2019int main(int argc, char *argv[]) {for (unsigned int i = 3; i >= 0; i--)putchar('=');}因为i为无符号数,所以i的值永远大于等于0,将无法退出循环。3.void f() {printf("%d\n", X*X);static int a = 0;int b = 0;prin...
2020-02-20 17:49:22
180
原创 2018题目
20181.int main(int argc,char *argv[]){ int nums[3][3] = {1,2,3,4,5,6,7,8,9}; printf("%d\n",nums[1][-2]); printf("%d\n",(-1)[nums][5]); printf("%d\n",-1[nums][5]); return 0;}二维数组nums可以看作一个...
2020-02-19 18:37:21
158
原创 2017题目总结
20171.int main(int argc, char argv[]){int t = 4;printf("%lu\n", sizeof(t–));printf("%lu\n", sizeof("ab c\nt\012\xa12"));return 0;}sizeof的作用是计算数据所占的字节数;t是int型变量,占4个字节;“ab c\nt\012\xa12"是一个字符...
2020-02-18 14:22:26
185
原创 建立单向链表
建立单向链表链表本质上是用指针链接起来的多个结构体,所以建立链表的第一步就是定义一个结构体变量如struct libi {int data; struct libi *next; }第二步定义头节点与结构体指针struct libi *head,*p,*p1;第三步为其申请空间,使用malloc函数(包含在stdlib.h函数库中)head=p=(struct libi*)malloc(...
2019-12-30 20:25:49
405
原创 C语言输出杨辉三角
C语言输出杨辉三角用C语言实现输出指定行数的杨辉三角,可使用二维数组A[i][j],A[i+1][j]=A[i][j]+A[i][j-1]。代码如下:#include<stdio.h>int main(){ int n=0,q,w,e,ctr,num[100][100],num1[100]; while(1){ scanf("%d",&num1[n]);...
2019-12-23 19:20:09
522
原创 C语言处理大数相加
C语言处理大数相加在C语言中,当两个数超过长整形即long int的数据上限时,要完成求和,就无法用简单的运算符进行计算,此时要将其用字符串处理。代码如下:#include<stdio.h> #include<string.h> int powe(char str3[]) { int m,n,j,k; m=strlen(str3); char *p=str3; for...
2019-12-16 20:42:23
470
原创 用指针实现数组长度的改变
用指针实现数组长度的改变在一些问题中,我们常常要对数组的长度和元素进行改变,例如在比较两个实数A与B的值是否相等。当A与B的值都非常大的时候,仅仅使用关系运算符来比较是无法完成的。这时候,我们就要将A与B用字符数组的形式进行存储。我们可以定义char num1[100000],num2[100000]来分别存储A与B的值。在使用strcmp(num1,num2)来进行比较。但有时候A与B的值...
2019-12-09 19:52:04
1046
原创 在linux环境下编写C程序
在linux环境下编写C程序 在linux环境下编写C程序一般使用文本编辑器vim,vim是linu下的老牌编辑工具vi的升级版本,其功能更加强大,更适合用来 编辑C程序。在一些linux的发行版本如deepin等都是自带vi的,用户可以直接使用;而在另一些发行版本如ubuntu等则是 只有vi而没有vim的,这时候就需要我们自己去完成vim的安装。 vim...
2019-12-09 19:09:56
718
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人