C Linux
旗舰111
某为的一个小小程序员
展开
-
ubuantu kylin 如何关闭触摸板
ubuntu禁用触摸板:sudo add-apt-repository ppa:atareao/atareaosudo apt-get updatesudo apt-get install touchpad-indicator转载 2014-12-14 22:31:34 · 1101 阅读 · 0 评论 -
使用预处理命令注释代码
使用/* */注释多行代码时,有可能遇到注释嵌套的问题,现在使用预处理命令,就可以解决这样的问题了。代码如下:#if 0 code/statements#endif原创 2013-08-30 11:27:22 · 742 阅读 · 0 评论 -
求1~1000的质数(素数)
题目:求1~1000的质数(素数)思路:素数、即质数,是在大于1的整数中只能被1和其自身整除的数。检查一个正整数N是否为素数,最简单的方法就是试除法,将该数N用小于等于根号N的所有素数去试除,若均无法整除,则N为素数。代码:#include #include #define MAXSIZE 1000int main(){ int prime[500]; in原创 2013-08-30 10:08:37 · 4270 阅读 · 0 评论 -
约瑟夫环的解决
约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 自己编写的:#include struct ysf_node{ struct ysf_node* prev;原创 2013-08-29 11:47:58 · 429 阅读 · 0 评论 -
长度为0的数组——C语言的非标准用法之一
在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来的好。在GNU的指南中,它是如此写道:struc转载 2013-08-27 22:23:03 · 600 阅读 · 0 评论 -
二项堆的实现
#include #include #define SUCCESS 1#define FAIL 0struct bheap{ struct bheap* parent; long key; int degree; struct bheap* child; struct bheap* sibling;};typedef struct bhea原创 2013-07-31 10:40:22 · 658 阅读 · 0 评论 -
Linux2.6.36内核分析之CONFIG_SCHEDSTATS
CONFIG_SCHEDSTATS: Collect scheduler statistics收集调度信息If you say Y here, additional code will be inserted into the scheduler and related routines to collect statistics about scheduler behavior原创 2013-07-31 14:52:29 · 1700 阅读 · 0 评论 -
问题:注释嵌套
/*/*/0*/**/1,注释不嵌套的编译器对此的解释是什么?原创 2013-06-30 22:56:09 · 641 阅读 · 0 评论 -
getchar()、getch()、getche()的区别
C程序设计语言中有一道题是这样的:编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,把回退符替换为\b,把反斜杠替换为\\。代码如下:#include int main(){ char c; while((c=getch())!='\r')//如果使用getchar,结束条件,即回车符判断条件为等于'\n' { if(c原创 2013-06-27 20:47:56 · 802 阅读 · 0 评论 -
C程序中数据段的问题
代码:#include int main(){ char a[] = "123456789"; char b[]="1234"; strcpy(b,a); printf("%s\n%s",a,b); return 0;}问题:最终打印什么?答:原因:程序的数据段的存储问题:程序中的数据存放在数据段,并且从高到低依次存取,所以a原创 2013-06-27 09:39:36 · 610 阅读 · 0 评论 -
bochs中加载linux0.11版本遇到的一些问题
转载:http://linux.chinaitlab.com/unix/794148.htmlbochs2.6不识别ips选项了,需要改为cpu:count=1,ips=15000000。以下是根据资料写的linux0.11的配置文件:megs:32romimage:file=$BXSHARE/BIOS-bochs-latestvgaromimage:file=$BXSHARE/V转载 2013-06-26 15:11:32 · 1079 阅读 · 0 评论 -
算法之合并排序【分治法】【C语言】
分治法思想:1、分解:将原问题分解成一系列子问题;2、解决:递归地解决各个子问题。若子问题足够小,则直接求解。3、合并:将子问题的结果合并成原问题的解。循环不变式的证明在《算法导论》中P19。最坏时间复杂度为O(nlgn).#include #define MAXSIZE 10void print(int array[]);void merge_sort(i原创 2013-06-25 17:45:41 · 2186 阅读 · 1 评论 -
类型强制转换的问题
存在BUG的代码:#include int array[]={23,34,12,17,204,99,16};#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))int main(){ int d=-1,x; if(d<=TOTAL_ELEMENTS - 2) x=array[d+1];原创 2013-08-30 16:14:42 · 614 阅读 · 0 评论 -
《编程之美》1.2象棋问题
题目略。思路:根据规律,将帅所在位置代号之差整除3后不等于0的情况下,说明两者不在同一纵列,否则在一纵列。代码如下:【未写注释】#include int main(){ unsigned char ab; for(ab = 0x11;ab<=0x99;ab = ab + 0x10) { ab = (ab & 0xf0) | 0x01;原创 2013-08-30 19:20:10 · 576 阅读 · 0 评论 -
void main(void) - the Wrong Thing
http://users.aber.ac.uk/auj/voidmain.cgi void main(void) - the Wrong ThingThe newsgroup, comp.lang.c, is plagued by an almost continuous discussion of whether we can or cannot usevoidas a retu转载 2014-06-09 11:14:32 · 685 阅读 · 0 评论 -
[OJ]sscanf,sscanf_s及其相关用法
参考:http://www.cnblogs.com/kex1n/archive/2011/06/09/2076501.html转载 2014-06-06 22:33:10 · 1083 阅读 · 0 评论 -
[OJ]同构数
同构数是会出现在它的平方的右边的数。参考转载 2014-06-06 17:15:47 · 815 阅读 · 0 评论 -
[记录]OJ题目:求子数组的最大和
求一个整数数组中,连续子数组的最大和值。转载 2014-06-05 23:21:39 · 632 阅读 · 0 评论 -
如何选择Linux服务器操作系统
http://www.linuxidc.com/Linux/2013-06/86315.htm Linux的发行版有上百种,如何选择也是一种难题。以下为收集的资料,仅供参考。一、Ubuntu Desktop 和 Ubuntu Server这个是最方便,也是最快捷的方式。如果刚开始使用Ubuntu,且不太熟悉命令行的可以选用Ubuntu Desktop来学习。继而转为Ubuntu S转载 2014-03-10 13:43:32 · 903 阅读 · 0 评论 -
求最大公约数的伪代码
If y is equal to 0, then gcd(x, y) is x; otherwise,gcd(x,y) is gcd(y,x % y), where % is the modulus operator.代码: #include using namespace std;int gcd(int x, int y){ if(y == 0)原创 2013-12-05 15:58:25 · 5539 阅读 · 0 评论 -
编程珠玑-第2章课后习题8:如何快速确定一个集合中其元素之和不超过某值【未完成】
问题:给定一个n元实数集合、一个实数t和一个整数k,如何快速确定是否存在一个k元子集,其元素之和不超过t思路:尚无。代码:尚无。原创 2013-09-03 10:20:19 · 999 阅读 · 0 评论 -
编程珠玑2章B问题--n元一维向量向左旋转i个位置
问题:将一个n元一维向量向左旋转i个位置,要求使用一个n元的中间向量在n步内完成该工作,仅使用数十个额外字节的存储空间,在正比于n的时间内完成向量的旋转。思路:想法1:移动x[0]到临时变量t,然后移动x[i]至x[0],x[2i]至x[i],以此类推(将x中的所有下标对n取模),直至返回到取x[0]中的元素,此时改为从t取值然后终止过程。以此类推,直至把x[0]至x[i-1]个变量移动。原创 2013-09-02 22:44:45 · 772 阅读 · 0 评论 -
C语言清空输入缓冲区的N种方法对比
源文章地址:http://www.cnblogs.com/codingmylife/archive/2010/04/18/1714954.htmlC语言中有几个基本输入函数://获取字符系列int fgetc(FILE *stream);int getc(FILE *stream);int getchar(void);//获取行系列char *fgets(char * restr转载 2013-09-02 20:16:29 · 616 阅读 · 0 评论 -
《编程之美》一摞烙饼的排序
题目:盘子中一堆烙饼,杂乱放着。一位有强迫症的顾客看到后,心里很不舒服,打算把这些饼给从小到大、从上到下放好。他注意到这些烙饼大小不一,心想该如何把它们放好。想了半天,他一手托着盘子,一手抓住最上面的几块饼,把它们上下颠倒个个,几次之后,顺序排列好了。他心里也舒服多了。假如用程序描述这位强迫症顾客的行为,该如何描述?尽量优化。想法:1、先找大的:由于一次要翻转最上面的几块饼,并且是颠倒原创 2013-08-30 22:37:28 · 683 阅读 · 0 评论 -
数组名a是地址,那么&a是什么?
数组名a是地址,那么&a是什么?也是地址。验证如下:#include int main(){ int a[2] = {0,1}; printf("%p\n%p\n",a,&a); return 0;}结果:两者一致。原创 2013-08-31 11:33:13 · 901 阅读 · 0 评论 -
算法之二分查找【C语言】
下面是递归的方法:#includeint binary_search(int array[],int start_p,int end_p,int value){ int middle = -1; int position = -1; int tmp_position = -1; if(start_p < end_p) {原创 2013-05-27 16:04:05 · 599 阅读 · 0 评论 -
Linux 2.6.36版本内核分析之sched_get_priority_max与sched_get_priority_min
sched_get_priority_max()获取实时优先级的最大值【在kernel/sched.c中】/** * sys_sched_get_priority_max - return maximum RT priority. * @policy: scheduling class. * * this syscall returns the maximum rt_prior原创 2013-07-09 17:51:41 · 7858 阅读 · 0 评论 -
Linux添加系统调用(2.6.36版本)--添加到不同的文件
在LINUX系统调用的添加(2.6.36版本)中,找到了加载系统调用的一般方法,即1)在kernel/sys.c中写系统函数;2)加系统调用表项;3)添加系统调用号;4)重新编译内核。但是,如果打算不在已有的C文件中写系统调用函数,而是在新文件中添加系统调用函数呢?其中2、3步骤肯定不变,1、4步骤需要仔细考虑。一、在新文件中添加系统调用函数根据系统调用原理,只要系统调用号和系统调用表项固原创 2013-05-03 17:56:45 · 789 阅读 · 0 评论 -
likely\unlikely\__builtin_expect
注:Linux内核版本2.6.36在查看kernel\sched.c中内联函数rt_policy时,遇到了unlikely,如下:static inline int rt_policy(int policy){ if (unlikely(policy == SCHED_FIFO || policy == SCHED_RR)) return 1; return 0;}原创 2013-04-23 11:08:03 · 674 阅读 · 0 评论 -
LINUX系统调用的添加(2.6.36版本)
系统调用的添加LINUX内核:2.6.36步骤:1、 在kernel/sys.c中添加系统调用函数,必须是以sys_开头的,如sys_mycall。2、 在arch/x86/kernel/syscall_table_32.S中最后添加 .long sys_XXX 如 .long sys_mycall3、在arch/x86/include/as原创 2013-04-21 19:47:48 · 607 阅读 · 0 评论 -
ubuntu su 密码
原文地址:http://www.cppblog.com/farvelocity/archive/2010/01/04/104772.html偶尔用回到ubuntu系统,想切换到su,总是显示不成功,也许是初次使用,即需要设定一下:使用sudo$:sudo passwd系统提示输入密码,即安装时的用户密码,然后,系统提示输入两次新密码,输入完毕后,$:su 即可进入su,具备转载 2013-04-07 10:57:22 · 842 阅读 · 0 评论 -
稀疏数组或稀疏矩阵
稀疏数组:数组中大部分的内容未被使用或为0。由于在数组中仅少部分空间使用,造成内存空间浪费。为节约空间,采用一种压缩方式来存储这类数组。压缩方式:数组第一部分记录原数组中列数和行数及元素使用个数,第二部分记录原数组中元素的位置及内容。这种压缩方式的效果怎么样呢?假设原数组n*m,有a个数据,同时原数组每个数据所占用空间与压缩后每个数据的占用空间一样,则新老空间比为3*(a+1)/n*m。因转载 2013-04-03 16:05:48 · 1155 阅读 · 0 评论 -
C的一些知识【持续更新】
1、要显示八进制、十六进制前缀,使用%#o、%#x、%#X,分别显示o、0x、0X前缀。2、C语言程序要特别注意数据类型的实际字节数,在某些系统中,char不一定是8位,int不一定是32位等等。C99提供了inttype.h头文件,可以提供确切的字节数数据类型,例如uint32_t表示32位无符号整数类型。注意,要使用inttype.h,环境必须支持C99。3、C语言中浮点数精度问题:f原创 2013-03-28 22:58:11 · 720 阅读 · 0 评论 -
编写程序求n!--C语言中数组的使用
注:部分内容摘自《数据结构》,黄国瑜,叶乃菁编著,清华大学出版社。需求:编写程序求n!。分析:数字相乘可以分解为各个阶位相乘,比如百位数A*B可分解为A100*B+A10*B+A1*B,然后从小位到大位分析,如果某一位的值大于等于10,则需要向高位进位,并对该位除以10,余数为该位的值。比如24*5,等价于(2*5)*10+(4*5)*1,因为4*5=20大于10,则从个位向十位进2,余0原创 2013-03-30 22:41:18 · 3979 阅读 · 0 评论 -
C语言浮点数存储-VC6.0和CCS环境
C语言中浮点数存储方式与整形数存储方式不同,因此本文将解释一个问题:1、浮点数存储。1、浮点数存储整形数据存储按照进制转换(十进制转换为二进制)存储,并结合用原码、反码和补码的形式表示有符号数。C语言使用补码的形式表示有符号数,例如10与-10,在C语言中存储形式分别为0x0000000a,0xfffffff6。其中细节与本文无关,不进行讨论。浮点数存储则不一样,其结合科学计数法进行存原创 2013-03-29 18:41:34 · 3174 阅读 · 0 评论 -
指向字符串指针的一个知识点
#include int main(void){ char *p = "Hello"; p[0] = "A"; printf("Hello"); printf(", how are you? %s?\n", "Hello"); return 0;}以上代码编译的时候出现警告(3,13):不建议使用从字符串常量到‘char*’的转换。执行的时候报错:段错误(co原创 2013-03-02 10:45:16 · 1758 阅读 · 0 评论 -
C编程-求计算次数最少【未解决】
问题出处:http://bbs.csdn.net/topics/39037014610为基数通过一系列乘以1.2、0.9(也就是说不是乘以1.2就是乘以0.9)得到5000000.0且每次算完保留一位小数点遵循四舍五入原则,且中间得到的数不得大于5000000.0。。。。。。求编程算出怎样计算可以使乘的次数最少~~而且最好可以打印出步骤~~原创 2013-02-22 16:59:48 · 603 阅读 · 0 评论 -
C下内存分配的一些知识【VS2010下测试】
struct中内存分配的问题,大概为一下几种情况【VS2010】(一般情况下,在VS2010下分配内存最小单位为4个字节)。1、如果一个类型所占字节不满4个字节,则从低位向高位占用该字节,如char类型;2、如果一个类型所占用字节大于4个字节,则求该类型占用字节除以4,然后加1,即为所占字节数;3、如果一个类型没有占满4个字节,而且接下来的数据类型占用字节数和前一个类型占用字节数之和也原创 2013-02-22 16:42:06 · 1170 阅读 · 0 评论 -
强制类型转换-值和地址
今天遇到一个强制类型转换的问题:一个是对值进行强制类型转换,一个是对值的地址进行强制类型进行转换后再次读取。得到的结果当然不相同。对变量的值进行强制类型转换,是把值按照另外一种类型进行存储后读取,变量在内存中的存储形式发生变化;而对变量的地址进行强制类型转换,是变量在内存中的存储形式未发生变化,而在变量读取时读取的方式发生变化。例子如下: #include int main()原创 2013-05-23 22:37:37 · 2588 阅读 · 0 评论 -
Linux 2.6.36版本内核分析之schedule()
/** schedule() is the main scheduler function.调度主函数,又称主调度*/asmlinkage void__schedschedule(void){ struct task_struct *prev, *next;//prev:换出进程标识符,next:换入进程标识符 unsigned long *switch_cou原创 2013-05-12 15:32:51 · 1253 阅读 · 0 评论