网站源码可以做淘宝客,橙色大气风格网站模板,网站推广服务商,免费建站平台的源码c程序设计语言练习1-12#xff1a;编写一个程序#xff0c;以每行一个单词的形式打印其输入。 此处单词是指除空格#xff0c;TAB键#xff0c;换行字符和文件结束符号#xff08;EOF#xff09;之外的其他字符。 我的代码如下#xff1a; 而《the c answer book》中的代…c程序设计语言练习1-12编写一个程序以每行一个单词的形式打印其输入。 此处单词是指除空格TAB键换行字符和文件结束符号EOF之外的其他字符。 我的代码如下 而《the c answer book》中的代码如下 1. #include 《stdio.h 2. 3. #define IN 1 4. #define OUT 0 5. 6. /* print input one word perl line*/ 7. main() 8. { 9. int c,state; 10. 11. state OUT; 12. while((c getchar()) !EOF){ 13. if(c ||c \n || c \t){ 14. if(state IN){ 15. putchar(\n); 16. state OUT; 17. } 18. } else if (state OUT){ 19. state IN; 20. putchar(c); 21. }else 22. putchar(c); 23. } 24. } 这个程序能够解决这个习题但是整个程序看起来却有点冗余毕竟这本书是1988年出版的。因为最后的两种情况完全可以合并。 所以另一个网站 给出的答案如下 1. #include stdio.h 2. int main(void) 3. { 4. int c; 5. int inspace; 6. 7. inspace 0; 8. while((c getchar()) ! EOF) 9. { 10. if(c || c \t || c \n) 11. { 12. if(inspace 0) 13. { 14. inspace 1; 15. putchar(\n); 16. } 17. /* else, dont print anything */ 18. } 19. else 20. { 21. inspace 0; 22. putchar(c); 23. } 24. } 25. return 0; 26. } 这样看起来好一些但是还显得不够简练不过c程序设计语言中给出的程序课本1.5.4单词计数的程序跟这个程序以及习题1-9其实都是同一类问题简练。这个程序虽然表面上看起来很简单但是以我的笨脑子最先想到的是找个字符数组来存储每个单词并将之输出。后来仔细想了想直接用putchar就可以了。这个算法根据前一个字符和当前字符的值每个值都可能是空白字符或者单词字符分成四种情况。而根据其值的特殊性有些情况下是不需要做任何操作所以可以合并成两种情况就可以了这样看起来逻辑也更清晰一些。 我写的代码如下 1. #include stdio.h 2. 3. #define TRUE 1 4. #define FALSE 0 5. 6. int main() 7. { 8. int c; /* a character variable */ 9. int b; /* a bool variable whose value is TRUE or FALSE 10. which indicates current character is in a word or out of a word*/ 11. 12. b FALSE; 13. while( (c getchar()) ! EOF) 14. if( c ! c ! \t c ! \n) 15. { 16. putchar(c); 17. b TRUE; 18. } 19. else if(b TRUE) 20. { 21. printf(\n); 22. b FALSE; 23. } 24. return 0; 25. }