[K&R学习]单词记数
2012-09-11 00:00
141 查看
/* * filename: wc.c * function: UNIX系统中统计行数,字数及字节数 * date: 2012年 09月 11日 星期二 13:38:10 CST */ #include <stdio.h> #define OUT 0 /* outside a word */ #define IN 1 /* inside a word */ int main(void) { int c, nl, nw, nc, state; state = OUT; nl = nw = nc = 0; while((c = getchar()) != EOF){ /* 备注:EOF在linux下按Ctrl+D;Windows下按Ctrl+Z */ ++nc; /* character + 1 */ if(c == '\n') ++nl; if(c == ' ' || c == '\t' || c == '\n') state = OUT; else if(state == OUT){ state = IN; ++nw; } } printf("nl = %d, nw = %d, nc = %d\n", nl, nw, nc); return 0; }
以上代码摘自K&R的<<C程序设计语言>>.
大师的代码果然有启发性,连一句简单的if else都设计得如此巧妙.
在判断单词数加1时,若我的思路必然是先判断nw++(即ch != ... && (ch_pre == ...)
而大师的思路则恰好相反,将简单的逻辑放在if上而else + if构造出一个复杂逻辑的同时让代码更简洁
再加上状态判断state的利用,让代码如此简单而清晰,赞!
学习之......
相关文章推荐
- java零基础,java入门、java学习:java中的英语单词分类
- 【算法学习笔记】02.wikioi1205 单词翻转
- 需要学习的单词
- 学习1368个单词 - 有关物和人的名词
- 背单词是学习英语的最好选择
- 单词学习PQ
- php英语单词,php常用英语单词,快速学习php编程英语(3)
- 《征服c指针》学习笔记-----统计文本单词数目的程序word_count
- VIM学习手记1-从命令模式直接进入单词替换修改
- 英语单词学习
- 计算机学习遇到的单词缩写
- 单词学习R
- php英语单词,php常用英语单词,快速学习php编程英语(4)
- 计算机英语单词学习
- 英语学习——单词之道
- 学习外贸英语单词--通过速卖通来学习句子和单词的含义
- 今天学习的单词
- c++学习笔记——个单词转换的map程序详解
- 学习C/C++语言:字符数组的使用,统计字符串中单词个数
- 单词学习A