《c程序设计语言》练习1-12
生活随笔
收集整理的這篇文章主要介紹了
《c程序设计语言》练习1-12
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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年出版的)。因為最后的兩種情況完全可以合并。
所以另一個網站 給出的答案如下:
?
這樣看起來好一些,但是還顯得不夠簡練,不過c程序設計語言中給出的程序(課本1.5.4單詞計數的程序,跟這個程序以及習題1-9其實都是同一類問題)簡練。這個程序雖然表面上看起來很簡單,但是以我的笨腦子,最先想到的是找個字符數組來存儲每個單詞并將之輸出。后來仔細想了想,直接用putchar就可以了。這個算法根據前一個字符和當前字符的值(每個值都可能是空白字符或者單詞字符)分成四種情況。而根據其值的特殊性有些情況下是不需要做任何操作,所以可以合并成兩種情況就可以了,這樣看起來邏輯也更清晰一些。
我寫的代碼如下:
總結
以上是生活随笔為你收集整理的《c程序设计语言》练习1-12的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python禁止最大化按钮和禁止拉伸窗口
- 下一篇: 宝塔LNMP使用步骤nginx+php