《c程序设计语言》练习1-12
c程序設(shè)計(jì)語(yǔ)言練習(xí)1-12:編寫一個(gè)程序,以每行一個(gè)單詞的形式打印其輸入。
此處單詞是指除空格,TAB鍵,換行字符和文件結(jié)束符號(hào)(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. } ?
這個(gè)程序能夠解決這個(gè)習(xí)題,但是整個(gè)程序看起來(lái)卻有點(diǎn)冗余(畢竟這本書是1988年出版的)。因?yàn)樽詈蟮膬煞N情況完全可以合并。
所以另一個(gè)網(wǎng)站 給出的答案如下:
?
這樣看起來(lái)好一些,但是還顯得不夠簡(jiǎn)練,不過(guò)c程序設(shè)計(jì)語(yǔ)言中給出的程序(課本1.5.4單詞計(jì)數(shù)的程序,跟這個(gè)程序以及習(xí)題1-9其實(shí)都是同一類問(wèn)題)簡(jiǎn)練。這個(gè)程序雖然表面上看起來(lái)很簡(jiǎn)單,但是以我的笨腦子,最先想到的是找個(gè)字符數(shù)組來(lái)存儲(chǔ)每個(gè)單詞并將之輸出。后來(lái)仔細(xì)想了想,直接用putchar就可以了。這個(gè)算法根據(jù)前一個(gè)字符和當(dāng)前字符的值(每個(gè)值都可能是空白字符或者單詞字符)分成四種情況。而根據(jù)其值的特殊性有些情況下是不需要做任何操作,所以可以合并成兩種情況就可以了,這樣看起來(lái)邏輯也更清晰一些。
我寫的代碼如下:
總結(jié)
以上是生活随笔為你收集整理的《c程序设计语言》练习1-12的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python禁止最大化按钮和禁止拉伸窗口
- 下一篇: 算法复习第五章贪心法