摘要:
2010-7-21minicom的 使用 Minicom是基于窗口的。要弹出所需功能的窗口,可按下Ctrl-A,然后再按各功能键(a-z或A-Z)。先按C-A,再 按'z',将出现一个帮助窗口,提供了所有命令的简述。A 切换"Add Linefeed"为on/off。若为on,则每上回车键在屏幕上 显示之前,都要加上一个linefeed。B 为你提供一个回卷(scroll back)的缓冲区。可以按u上卷,按d下卷,按b上翻一页,按f下翻一页。也可用箭头键和翻页键。可用s或 S键 (大小写敏感)在缓冲区中查找文字串,按N键查找该串的下一次出现。按c进入引用模 阅读全文
摘要:
2011-5-20Abstract 一想到排序,你會想到什麼?Bubble sort?事實上ANSI C的library就帶了一個超快的排序法:Quick Sort!!Introduction 若談到排序,大概有兩種想法,學術派的會想到資料結構所教的一堆排序法,如Bubble sort...,熟悉C++的會想到STL的sort() algorithm,其實ANSI C的stdlib.h就已經自帶一個Quick Sort演算法,由於是ANSI C的標準函式庫,跨平台不是問題。 编译平台:Eclipse cdt 程序如下:#include #include #include #define ARR 阅读全文
摘要:
2011-5-17C/C++並沒有提供內建的int轉string函數,這裡提供幾個方式達到這個需求。 若用C語言,且想將int轉char *,可用sprintf(),sprintf()可用類似printf()參數轉型。 标准C中实现为:1 9#include"stdio.h"1011voidint2str(int,char*);1213intmain(){14inti=123;15chars[64];16int2str(i,s);17puts(s);18}1920voidint2str(inti,char*s){21sprintf(s,"%d",i);2 阅读全文
摘要:
2011-5-6C 语言中的指针和内存泄漏 引言 对于任何使用 C 语言的人,如果问他们 C 语言的最大烦恼是什么,其中许多人可能会回答说是指针和内存泄漏。这些的确是消耗了开发人员大多数调试时间的事项。指针和内存泄漏对某些开发人员来说似乎令人畏惧,但是一旦您了解了指针及其关联内存操作的基础,它们就是您在 C 语言中拥有的最强大工具。 本文将与您分享开发人员在开始使用指针来编程前应该知道的秘密。本文内容包括: 导致内存破坏的指针操作类型 在使用动态内存分配时必须考虑的检查点 导致内存泄漏的场景 如果您预先知道什么地方可能出错,那么您就能够小心避免陷阱,并消除大多数与指针和内存相关的问题。... 阅读全文
摘要:
2011-5-2 最近又写了一个检查点在多边形内部的程序,主要还是为了XX公司那边的一个项目做点小事情。好了,下面开始讲解原理。 射线法检测,其实就是在已知点内,固定好该点的X或者Y坐标,然后对任意X或者Y轴做垂线(固定X对Y轴做垂线,固定Y对X轴做垂线)。垂线和线段如果相交的次数是奇数,证明点在多边形内部,如果是偶次,说明点在多边形外部。 但是,要讨论的是凸多边形会有特殊情况。上图,P1的时候做射线,交了3点,但是在多边形外,P2交了2点,但是在多边形内部。还有的情况就是和上边的类似,只是在程序处理上,坐标y一个是从高到低,一个低到高遇到这两种情况,只能当做相交了一次,在那个拐弯点。用程序处 阅读全文
摘要:
2011-4-25 这几天,XXX的项目让我做了一个运动轨迹检测的程序,主要用来检测汽车和给定路线的偏移问题,和定位汽车主要在什么路段上。 如下图下面是一些算法和资料:首先,要确定移动的点,也就是汽车和线段之间的距离,不能直接理解成点到直线的距离,因为当出现下面的情况的时候,点P到BC和到A的距离都是一样的,这样就区分不点到底靠近哪条线上了。很显然,点固然靠近的应该是线段AB,所以我对这种情况进行了一些改进,如果遇到这种情况,那么直接计算P点到B之间的距离。其实这个程序的关键都是算点到线段的距离,而不是点到线段的高,这些要分清楚。点到线段距离的计算:点到直线的距离可以直接做垂线求取,但线段是有 阅读全文
摘要:
在一个二维平面上给定两个圆的圆心横纵坐标、半径共6个参数, 求交点. 这个问题无非是解二元二次方程组. 普通二元二次方程联立消元求解的困难在于, 中间过程里的系数会变得非常复杂, 从而导致容易出错---因为公式毕竟还是要人来推导, 人的出错率比计算机要高得多得多---改用圆的参数方程求解, 可以在显著地减轻这个负担. 现在谈谈这问题的求解过程. 选择圆的参数方程的好处是方程是一次的, 化简方便, 虽然是三角函数方程并且既有正弦也有余弦, 不过到最后可以很方便地求出来. (下面分析中x^y表示x的y次方) 大家还记得圆的参数方程吧, 圆心 (x0, y0), 半径为 ... 阅读全文
摘要:
在c++中 struct 和class这两个关键字定义类的区别只有一个: 如果使用class在定义,那么定义在第一个访问标号前的任何成员都隐式指定为private;如果是使用struct关键字,那么这些成员都是public。使用class 还是 struct关键字来定义类,仅仅影响默认的初始化访问级别。 阅读全文
摘要:
排列组合问题的通用算法尽管排列组合是生活中经常遇到的问题,可在程序设计时,不深入思考或者经验不足都让人无从下手。由于排列组合问题总是先取组合再排列,并且单纯的排列问题相对简单,所以本文仅对组合问题的实现进行详细讨论。以在n个数中选取m(0=m; i--) //注意这里的循环范围{ b[m-1] = i -1; if (m> 1)combine(a,i-1,m-1,b,M);else// m == 1, 输出一个组合{for(int j=M-1; j>=0; j--)cout n ? n : m;int* order = newint[m+1];for(int i=0;i<=m 阅读全文
摘要:
今天想用C语言实现下数学上的组合和排列,一直很郁闷。 上网搜索到一个例子:#include #include //从n个元素的数组a中,取m个元素的组合bool zuhe(char a[],int n,int m){//p[x]=y 取到的第x个元素,是a中的第y个元素 int index,i,*p; p=(int*)malloc(sizeof(int)*m); if(p==NULL) { return false; } index=0; p[index]=0;//取第一个元素 while(true) { if(p[index]>=n) {//取到底了,回退 if(index==0) { 阅读全文
摘要:
昨日曹兄问我一个问题,想出了一个动态分配二维数组的ANSI C程序。 其实思想很简单,我一开始就想到了,肯定是先建立指针数组,然后每个指针数组再分配连续的空间。 画了个草图,可能看起来不怎么好看。。。 先定义一个指向指针的指针P,char**p,然后动态分配指针数组*p[row],就是二维数组的行,最后给每个指针数组又动态分配空间p[i][col],其实就是二维数组的列。这样就完成了动态数组的分配。伪代码:ParrayRow =动态分配行数组指针,即动态分配指针数组。for(i = 0; i #include #include #include #include char **array_.. 阅读全文
摘要:
C Standard LibraryContents : Diagnostics : Character Class Tests : Error Codes Reported by (Some) Library Functions : Implementation-defined Floating-Point Limits : Implementation-defined Limits : Locale-specific Information : Mathematical Functions : Non-local Jumps : Signals : V... 阅读全文
摘要:
今日阅读一本不错的书,叫《C语言深度解剖》 做一些读书笔记: 关于register修饰符注意点:虽然寄存器速度非常快,但是用register修饰符也有一些限制的:register变量必须是能被CPU寄存器所接受的类型。意味着register变量必须是一个单个的值,并且其长度应小于或者等于整型的长度。而且register变量可能不存放在内存中,所以不能用取地址运算符“&”来获取register变量的地址。 关于sizeof:sizeof在计算变量所占空间大小时,括号可以省略,而计算类型(如int)大小时不能省略。一般情况下,不要偷懒,乖乖加上括号,继续假装它是一个函数。严重提醒,size 阅读全文
摘要:
今天发现Eclipse的一个BUG 就是在输入函数scanf后,发现前面的东西都不能打印在console里边,只有先输入东西以后才行,上网搜索以后发现一个帖子。 Nikos Panagos wrote: Hello everybody, Theeclipse console has weird behaviour when used for input with Cprograms.I teach C to first year undergraduates and I want them to learntheir way through eclipse. But the small si. 阅读全文
摘要:
用sprintf函数出现了点问题,上网学习了一下 下面是笔记 在将各种类型的数据构造成字符串时,sprintf 的强大功能很少会让你失望。由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sprintf 比printf 有用得多。sprintf 是个变参函数,定义如下:int sprintf( char *buffer, const char *format [, argument] ...);除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数:格式化字符串上。prin... 阅读全文
摘要:
今天遇到一个问题,下面这个程序:#include void main(void){int a;char c ='a';scanf("%c",&a);printf("asdfasdf %c\n",a);scanf("%c",&c);printf("asdfasdf %c\n",c);} 看起来好像很简单,但是我在VC和在GCC编译以后,都遇到一个问题。就是在执行到红色的语句的时候,直接跳转到后边的printf。意思就是直接跳过了scanf。为什么会这样呢? 经过上网搜索和询问super 阅读全文
摘要:
配置GNURADIO的软件平台在UBUNTU10.4下配置的总算弄完了下面写写总结1. 去http://gnuradio.org/点击Getting Started2. 按照英文步骤一步步做,我出现点问题,我用git的时候,搞下来的GNURADIO估计是不稳定版本,编译不过,然后我直接去download一个gnuradio3.3.0的稳定版本,解压后make,通过。3. 按照网上,测试一下,打开gnuradio-companion,无奈出现:Error: "ImportError: libgnuradio-core-3.3.0.so.0: cannot open shared obj 阅读全文
摘要:
来自:http://www.kuqin.com/docs/diveintopythonzh-cn-5.4b/html/power_of_introspection/index.html第四章 自省的威力 本章论述了Python众多强大功能之一:自省。正如你所知道的,Python中万物皆对象,自省是指代码可以查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。4.1.概览下面是一个完整可运行的Python程序。大概看一下这段程序,你应该可以理解不少了。用数字标出的行阐述了 阅读全文