上一页 1 2 3 4 5 6 7 8 ··· 19 下一页
摘要: 编写函数expand(s1,s2), 将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc……xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与a-z等类似的情况。作为前导和尾随的字符原样复制 1 #include 2 #include 3 #include 4 5 int judge(char a, char b) //判断'-'两端的字符是否符合速记符号扩展的要求 6 { 7 if(isdigit(a) && isdigit(b)) 8 { 9 if(a < b) return 1;10 ... 阅读全文
posted @ 2013-10-14 01:54 cpoint 阅读(462) 评论(0) 推荐(1) 编辑
摘要: 编写函数itob(n,s,b),将整数n转换为以b为底的数,并将转换结果以字符的形式保存到字符串s中。e.g.itob(n,s,16)把整数n格式化为十六进制整数保存在s中。 1 #include 2 #include 3 #include 4 5 void swap(char *a, char *b) 6 { 7 int t; 8 t = *a; 9 *a = *b;10 *b = t;11 }12 13 void reverse(char *s) //倒置串s14 {15 int c, i, j;16 i = 0;17 j = s... 阅读全文
posted @ 2013-10-14 01:53 cpoint 阅读(390) 评论(0) 推荐(0) 编辑
摘要: 统计行数、单词数,字符数的程序: 1 #include 2 3 #define IN 1 /*在单词内*/ 4 #define OUT 0 /*在单词外*/ 5 6 int main() 7 { 8 int c, nl, nw, nc, state; 9 10 state = OUT;11 nl = nw = nc = 0; //nl:行数 nw:单词数 nc:字符数12 while((c = getchar()) != EOF) {13 ++nc;14 if(c == '\n')15 ... 阅读全文
posted @ 2013-10-14 01:35 cpoint 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 在看minix中bsearch实现的源代码之前,先学习一下C 语言中void类型以及void*类型的使用方法与技巧。void的含义:void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义:void a;这行语句编译时会出错,提示“illegal use of type 'void'”。即使void a的编译不会出错,它也没有任何实际意义。 众所周知,如果指针p1和p2的类型相同,那么我们可以直接在p1和p2间互相赋值;如果p1和p2指向不 阅读全文
posted @ 2013-10-14 00:56 cpoint 阅读(604) 评论(0) 推荐(0) 编辑
摘要: 在minix2.0源代码中,有将字符串类型转换为int、long、double类型的函数实现,相关的实现函数分别在atoi.c、atol.c、atof.c文件中,我们来逐一学习其中的源码:1、int atoi(register const char *nptr) :将字符串类型转换为int类型int atoi(register const char *nptr){ int total = 0; int minus = 0; //记录正负的变量(0:'+',1:'-') while (isspace(*nptr)) nptr++; //滤去前导空格字符 if (* 阅读全文
posted @ 2013-10-14 00:49 cpoint 阅读(1645) 评论(0) 推荐(0) 编辑
摘要: 在minix2.0源代码中,有相当经典的时间转换函数实现(src\ src\ lib\ ansi\ asctime.c),今天我们就来分析一下asctime.c中的源码首先引入几个相关的头文件:1、time.h 主要的结构体与相关定义:struct tm { int tm_sec; /* 分钟后面的秒[0, 59] */ int tm_min; /* 小时后面的分钟[0, 59] */ int tm_hour; /* 距离凌晨00:00点的小时数[0, 23] */ int tm_mday; /* ... 阅读全文
posted @ 2013-10-14 00:46 cpoint 阅读(680) 评论(0) 推荐(0) 编辑
摘要: 基本概念折半插入排序(binary insertion sort)是对插入排序算法的一种改进,由于排序算法过程中,就是不断的依次将元素插入前面已排好序的序列中。由于前半部分为已排好序的数列,这样我们不用按顺序依次寻找插入点,可以采用折半查找的方法来加快寻找插入点的速度。算法思想在将一个新元素插入已排好序的数组的过程中,寻找插入点时,将待插入区域的首元素设置为a[low],末元素设置为a[high],则轮比较时将待插入元素与a[m],其中m=(low+high)/2相比较,如果比参考元素大,则选择a[low]到a[m-1]为新的插入区域(即high=m-1),否则选择a[m+1]到a[high] 阅读全文
posted @ 2013-10-09 12:25 cpoint 阅读(380) 评论(0) 推荐(0) 编辑
摘要: 直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3. i++并重复第二步直到i==n-1。排序完成。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 void InsertSort(int *a, int n) ... 阅读全文
posted @ 2013-10-09 11:41 cpoint 阅读(430) 评论(0) 推荐(0) 编辑
摘要: assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: 1 #include 2 #include 3 #include 4 int main( void ) 5 { 6 FILE *fp; 7 8 fp = fopen( "test.txt",... 阅读全文
posted @ 2013-10-04 23:58 cpoint 阅读(46276) 评论(0) 推荐(3) 编辑
摘要: 1、炮弹一样的球状物体,能够堆积成一个金字塔,在顶端有一个炮弹,它坐落在一个4个炮弹组成的层面上,而这4个炮弹又坐落在一个9个炮弹组成的层面上,以此类推。写一个递归函数CannonBall,这个函数把金字塔的高度作为参数,并且返回它所包括的炮弹数量。函数必须按照递归方式实现,不可以使用迭代结构,例如while或for。 1 int CannonBall(int h) 2 { 3 if(h == 1) return 1; 4 else 5 return CannonBall(h-1) + pow(h,2); 6 } 7 8 int main(void) 9 {1... 阅读全文
posted @ 2013-10-02 16:44 cpoint 阅读(6701) 评论(0) 推荐(3) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 19 下一页
浏览次数:travelocity promotion codes