- 浏览: 70744 次
- 性别:
- 来自: 杭州
最新评论
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, don't 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. }
发表评论
-
最小c编译器
2011-11-08 14:09 1427最小c编译器(来源 (最好在linux下操作))代码有好几个 ... -
the development of c language(转)
2011-11-08 09:25 1122c语言之父Dennis Ritchie 写的关于c语言开发历 ... -
C语言,你真的弄懂了么?
2011-11-07 12:42 1731程序(来源 ): #include <stdi ... -
pe文件格式实例解析
2011-11-07 10:05 0环境:windows xp 速龙3000+(即x86兼容32位 ... -
小型elf "Hello,World"程序
2011-11-06 23:59 1330参考链接:http://timelessname.com/el ... -
elf文件格式实例解析
2011-11-05 23:00 6287试验环境:archlinux 速龙3000+(即x86兼 ... -
高质量的c源代码
2011-11-03 10:18 1101现在自由软件及开源软件越来越流行,有大量的附带源程序 ... -
fltk 库
2011-09-26 19:47 1774fltk是一个小型、开源、支持OpenGL 、跨平台(win ... -
《Introduction to Computing Systems: From bits and gates to C and beyond》
2011-09-25 23:33 2125很好的一本计算机的入门书,被很多学校采纳作为教材,作者Yale ... -
csapp bufbomb实验
2011-09-16 14:21 4555csapp (《深入理解计算机系统》)一书中有一个关于缓冲区 ... -
the blocks problem(uva 101 or poj 1208)
2011-09-11 20:57 1805题目描述见:uva 101 or poj 1208 ... -
the blocks problem(uva 101 or poj 1208)
2011-09-11 20:56 0题目描述见:uva 101 or poj 1208 ... -
部分排序算法c语言实现
2011-09-02 14:51 993代码比较粗糙,主要是用于对排序算法的理解,因而忽略了边界和容错 ... -
编译器开发相关资源
2011-08-31 08:40 1173开发编译器相关的一些网络资源: how difficu ... -
zoj 1025 Wooden Sticks
2011-07-23 20:25 947题目见:zoj 1025 先对木棒按照长度进行排序,然后再计 ... -
zoj 1088 System Overload
2011-07-23 17:30 1139约瑟夫环 (josephus problem )问题, ... -
zoj 1091 Knight Moves
2011-07-23 09:05 820题目见zoj 1091 使用宽度搜索优先来求解, ... -
zoj 1078 palindrom numbers
2011-07-22 19:31 1122题目见zoj 1078 主要是判断一个整数在基数为2 ... -
zoj 1006 do the untwist
2011-07-22 13:24 904题目见zoj 1006 或poj 1317 简单 ... -
zoj 3488 conic section
2011-07-22 12:23 973题目见zoj 3488 很简单的题目,却没能一次搞定,因 ...
相关推荐
C语言程序设计练习题--程序填空.doc
《C程序设计语言<第2版新版>习题解答(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言<第2版新版>习题解答(原书第2版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言...
C++语言程序设计综合练习题 程序设计题 1. 利用递归函数求24与16的最大公约数。 2. 输入三角形的三边长 a,b,c,输出三角形的面积s。求面积的公式为: s=sqrt(L* (L-a)*(L- b)*(L-c)),其中L=(a+b+c)/2。 3. &&...
china-pub产品,高清,C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过...
C语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学)....
K&R 的C程序设计及课后练习答案 课后答案不是高清的,是影印的,书是高清文本格式
C程序设计语言(第2版·新版),C程序设计语言(第2版·新版)习题解答4份电子档,其中C程序设计语言(第2版·新版)习题解答是对Brian W.Kernighan和Dennis M.Ritchie所著的《c程序设计语言第二版》所有课后练习题...
《C程序设计语言习题解答(第2版新版)(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新版)》所有练习题的解答,是较佳的编程实战辅导书。K&R的著作是C语言方面的经典...
计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。课堂教学计划表 计算机程序设计(Java)-教案--...
C语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计...
c语言练习21程序设计语言.pdf
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。冯.诺依曼在1945年...
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。冯.诺依曼在1945年...
c程序设计语言and配套习题答案,是c语言创始人的作品哦,经典的哦~
C语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zip
《C程序设计语言第2版新版习题解答》(原书第2版)是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言方面的经典教材,而这...
华东理工大学《C语言程序设计》期末考试复习练习题(含答案)
但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。 本课程是零基础的入门课程,完成本...
C语言程序设计-编程练习及答案.pdf