日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《c程序设计语言》练习1-12

發(fā)布時(shí)間:2025/3/11 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《c程序设计语言》练习1-12 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

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)站 給出的答案如下:

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, don't print anything */ 18. } 19. else 20. { 21. inspace = 0; 22. putchar(c); 23. } 24. } 25. return 0; 26. } ?

?

這樣看起來(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)邏輯也更清晰一些。
我寫的代碼如下:

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. }

總結(jié)

以上是生活随笔為你收集整理的《c程序设计语言》练习1-12的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。