这是c程序设计(第2版)第一章 1.5.4节的,题目如下:
我们将介绍的第4个实用程序用于统计行数、单词数与字符数。这里对单词的定义比较宽松,它是任何其中不包含空格、制表符或换行符的字符序列。下面这段程序是UNIX系统中wc程序的骨干部分:
- 1 #include <stdio.h>
- 2
- 3 #define IN 1 /* inside a word */
- 4 #define OUT 0 /* outside a word */
- 5
- 6 /* count lines, words, and characters in input */
- 7 main()
- 8 {
- 9 int c, nl, nw, nc, state;
- 10
- 11 state = OUT;
- 12 nl = nw = nc = 0;
- 13 while ((c = getchar()) != EOF) {
- 14 ++nc;
- 15 if (c == '/n')
- 16 ++nl;
- 17 if (c == ' ' || c == '/n' || c = '/t')
- 18 state = OUT;
- 19 else if (state == OUT) {
- 20 state = IN;
- 21 ++nw;
- 22 }
- 23 }
- 24 printf("%d %d %d/n", nl, nw, nc);
- 25 }
从17行之后,我就理解不流畅,还有不懂得为什么要引入state,怎么想到引入state这个变量的,问问各位老师和同学你们当初学这程序的时候好理解吗?要是没有这个答案,我第一步要怎么去想,怎么去解决这个问题。困扰中,求救老师和同学!!