
C语言
文章平均质量分 69
RiderOnStorm
这个作者很懒,什么都没留下…
展开
-
一个位运算的问题
据说是一道面试题。有一个16位的整数,每4位为一个数,写函数求他们的和。例如整数为1101010110110111时,和为1101+0101+1011+0111。我的源码:char SumOfQuarters(unsigned short n){ char c = 0; int i = 4; do { c += n & 15; n =原创 2006-02-15 21:47:00 · 2010 阅读 · 1 评论 -
读《The C Programming Language》(8)
第六章讲的是结构体,包括structure, union和bit-fields。除了介绍基本知识,作者在举例子的时候牵扯了一些数据结构的知识,比如二叉树、哈希表等,学起来很有意思。这章的内容上大学学C语言时好像没有作为重点,学得稀里糊涂,出来之后才发觉很有用。第一节 结构体基本知识这节一个要注意的地方是,在结构体struct point { int x; int y;};原创 2006-02-21 16:24:00 · 1831 阅读 · 0 评论 -
不要返回指向局部变量的指针
有两种情况,函数会返回指向局部变量的指针: 返回由malloc动态分配的内存指针。这种情况是合法的,但它假设调用者会释放动态分配的内存。在这种情况下通常会有另一个函数提供释放内存的功能。 返回指向局部变量的指针。局部变量占用的内存会在函数返回时被系统自动回收,因此系统可以随时将其它数据写入这块内存。在这种情况下函数可以编译通过,但不能保证运行正确。 这种函数通常可翻译 2006-02-21 14:39:00 · 2924 阅读 · 0 评论 -
读《The C Programming Language》(10)
不觉文章已写到了第十回,书也快看完了,就剩了最后一章。这第八章讲的是UNIX的系统接口,并没有新的语言特性要介绍。这次学习的目的主要是语言,UNIX系统的知识虽然很有兴趣,但不是当务之急,也没有实际需要,所以这章权且放弃。这样一来,本文就成了一篇小结,我随便说几句看完这本书后的感受。这本书很薄,不算后面的附录才167页。作者在序言里说到,C不是一门很复杂的语言,不需要一本很厚的书来介绍。就是在原创 2006-02-24 15:40:00 · 1615 阅读 · 0 评论 -
猴子偷桃问题
还是C语言版的问题,还是一个用递归的问题,很有意思。五只猴子采得一堆桃子,猴子彼此约定隔天早起后分食。不过就在半夜里,一只猴子偷偷起来,把桃子平均分成五堆后,发现还多一个,它吃掉这个桃子,并拿走了其中的一堆。第二只猴子醒来,又把桃子平均分成五堆后,还多一个,它也吃掉这个桃子,并拿走了其中的一堆,第三只,第四只,第五只猴子都如此分食桃子,那么这堆桃子最少该有几个?我的源码如下:#incl原创 2006-02-14 19:36:00 · 4726 阅读 · 0 评论 -
指针变量也是传值调用的(C语言)!
先看看下面一段代码:#include #include void F(int *pi){ pi = (int *)malloc(sizeof(int));}main(){ int *pi = NULL; F(pi); printf("%d/n", pi == NULL);}如果你指望函数F能帮你改变pi的值,那你就错了,运行上面这段代码,你会发现输出是1。刚原创 2006-03-21 10:59:00 · 3014 阅读 · 0 评论 -
三个水杯问题
昨天在优快云社区的C语言版看到了这样一个问题:有3个水杯A、B、C,容量分别为80L,50L,30L。现在有80L水装入A(B和C杯为空),A可以向B或C倒水。倒水要求:要么把别的杯子倒满,要么就自己倒空,倒水方向任意。最后要达到的目的是A杯有40L水,B杯有40L水,C杯无水。看完以后很有兴趣,就写了自己的算法。虽然代码行数很多,但思路其实很简单: 找出当前状态下所有可能原创 2006-02-13 20:17:00 · 4159 阅读 · 0 评论 -
读《The C Programming Language》(2)
读完了第一章。这章主要是从整体上介绍了C语言,并不牵扯太多细节,试图给读者一个整体的印象,并能让读者马上写一些不复杂的C程序。这点很重要,作者一开篇就明确指出,"The only way to learn a new programming language is by writing programs in it." 这和当年小强的思路完全不同,我当年学完这门课,考过试,得了80多分,整个过程也原创 2006-02-07 15:10:00 · 1871 阅读 · 0 评论 -
读《The C Programming Language》(5)
第三章讲的是流程控制,对于经常使用类C语言的人来说,这章的内容应该是烂熟于胸。其中引起我注意的地方有下面几点: 给你一个字符串,让你写一个小程序把它反转,大概很多人在应聘时都遇到过类似的小问题。作者在这里给出了他的实现,这段程序写得干净漂亮,让我忍不住把它贴在这里:#include /* reverse: reverse string s in place */void原创 2006-02-09 21:37:00 · 1382 阅读 · 0 评论 -
读《The C Programming Language》(6)
第四章主题是函数和程序结构,内容越来越深入了,收获也越来越大。我前面写了一篇“程序应构思到什么地步再开始写”的文章,提到了程序的设计问题。本章4.1小节作者就给出了程序构思的例子。对于一个将输入中包含特定字符串的行打印出来的程序,作者把它分成了三部分:while (theres another line) if (the line contains the pattern)原创 2006-02-11 20:26:00 · 2417 阅读 · 1 评论 -
读《The C Programming Language》(4)
读完了第二章:类型,运算符和表达式。下面列举一些有启发的点: 关于类型(Type),作者用一句话很精辟地作了概括:"The type of an object determines the set of values it can have and what operations can be performed on it."一个对象的类型决定了它能够取值的集合以及能对它进行的操作原创 2006-02-09 16:59:00 · 1713 阅读 · 0 评论 -
读《The C Programming Language》(3)
做了第一章的几个练习题。Exercise 1-20. Write a program detab that replaces tabs in the input with the proper number of blanks to space to the next tab stop. Assume a fixed set of tab stops, say every n columns.原创 2006-02-08 21:05:00 · 1916 阅读 · 0 评论 -
读《The C Programming Language》(1)
为参加一次机试,我不得不重拾自从大学毕业后就再没用过的C。还好是机试,我可以自己选一本书研读,不用忍受小强的唠里唠叨。说到选书,不禁又想起了大学时代K小强书的情景。小强的书讲的是真细,一不小心就掉入细节的汪洋大海中,爬都爬不出来。小强秉承了中国老师的一贯作风,对学生真是心贴心、手把手,硬是把一门编程语言嚼成一口一口的知识点,生怕学生们犯错。而且这种书巨好出题考你,甭管你程序写得怎么样,把小强的知识原创 2006-02-06 17:25:00 · 1731 阅读 · 0 评论 -
读《The C Programming Language》(7)
第五章讲的是指针和数组。指针是C语言的精华,但同时也是最难和最容易混淆的地方。读这一章真是如履薄冰,小心翼翼。从第一节到第十二节,难度依次增大,如果前面放过了一些不清楚的地方,到后面看到char (*(*x[3])())[5]这样的东西就只有哭的力气了。本章一开始作者就告诉了你指针是什么,"A pointer is a variable that contains the address of原创 2006-02-16 11:43:00 · 2618 阅读 · 0 评论 -
读《The C Programming Language》(9)
第七章主要介绍了有关输入输出的库函数。在提到库函数时作者说到,"Programs that confine their system interactions to facilities provided by the standard library can be moved from one system to another without change." 由此可见,程序中和操作系统打交道原创 2006-02-23 18:22:00 · 1719 阅读 · 0 评论