)
练习1-12 编写一个程序以每行一个单词的形式打印其输入。ChapterOneExerciseTwelveOne.cpp#include stdio.h #define IN 1 /* inside a word */ #define OUT 0 /* outside a word */ /* print input one word per line */ main() { int c, state; state OUT; while((c getchar()) ! EOF){ if(c || c \n || c \t){ if(state IN){ putchar(\n); /* finish the word */ state OUT; } }else if(state OUT){ state IN; putchar(c); /* beginning of word */ }else putchar(c); /* inside a word */ } }整型变量state是一个布尔值用于记录程序的处理过程是否正处于某个单词的内部。在程序刚开始运行的时候变量state将被初始化为OUT。表明尚未处理任何数据。第一条if语句if(c || c \n || c \t)判断变量c是否是一个单词分隔符。如果是则第二条if语句if(state IN)将判断这个单词分隔符是否表示某个单词结束。如果是就输出一个换行符并修改变量state的值如果不是则不进行任何操作。如果c不是一个单词分隔符那么它将或者是某个单词的第一个字符或者是一个单词中除第一个字符之外的其他字符。对于第一张情况c是某单词的第一个字符程序将修改变量state的值并输出这个字符对于第二种情况c是某个单词中的其他字符程序直接输出这个字符。