`

《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年出版的)。因为最后的两种情况完全可以合并。
所以另一个网站 给出的答案如下:

   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语言程序设计练习题--程序填空.doc

    C语言程序设计练习题--程序填空.doc

    C程序设计语言(第2版·新版)习题解答.pdf

    《C程序设计语言&lt;第2版新版&gt;习题解答(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言&lt;第2版新版&gt;习题解答(原书第2版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言...

    C++程序设计综合练习题-程序设计题.doc

    C++语言程序设计综合练习题 程序设计题 1. 利用递归函数求24与16的最大公约数。 2. 输入三角形的三边长 a,b,c,输出三角形的面积s。求面积的公式为: s=sqrt(L* (L-a)*(L- b)*(L-c)),其中L=(a+b+c)/2。 3. &&...

    C语言程序设计(chinapub)

    china-pub产品,高清,C语言是目前流行的通用程序设计语言,是许多计算机专业人员和计算机的爱好者学习程序设计语言的首选。 本书共10章,分别介绍了C语言的算法基础、基本概念和如何利用C语言进行程序设计。通过...

    C语言程序设计第二阶段练习(江南大学).docx

    C语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学).docxC语言程序设计第二阶段练习(江南大学)....

    C程序设计语言pdf及练习答案

    K&R 的C程序设计及课后练习答案 课后答案不是高清的,是影印的,书是高清文本格式

    《c程序设计语言 第2版 新版》中英文电子档以及课后习题解答

    C程序设计语言(第2版·新版),C程序设计语言(第2版·新版)习题解答4份电子档,其中C程序设计语言(第2版·新版)习题解答是对Brian W.Kernighan和Dennis M.Ritchie所著的《c程序设计语言第二版》所有课后练习题...

    C程序设计语言(中英文)

    《C程序设计语言习题解答(第2版新版)(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新版)》所有练习题的解答,是较佳的编程实战辅导书。K&R的著作是C语言方面的经典...

    计算机程序设计(Java)-教案--单元二--Java语言开发基础.docx.docx

    计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。计算机程序设计(Java)-教案--单元二--Java语言开发基础全文共8页,当前为第1页。课堂教学计划表 计算机程序设计(Java)-教案--...

    C语言程序设计函数练习题及参考答案.pdf

    C语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计函数练习题及参考答案.pdfC语言程序设计...

    c语言练习21程序设计语言.pdf

    c语言练习21程序设计语言.pdf

    C语言程序设计课程练习.zip

    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。冯.诺依曼在1945年...

    C程序设计语言课后练习.zip

    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。冯.诺依曼在1945年...

    c程序设计语言and配套习题答案

    c程序设计语言and配套习题答案,是c语言创始人的作品哦,经典的哦~

    C语言程序设计练习题源码.zip

    C语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zipC语言程序设计练习题源码.zip

    《C程序设计语言》英文第2版课后答案.CHM

    《C程序设计语言第2版新版习题解答》(原书第2版)是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言(第2版·新版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言方面的经典教材,而这...

    华东理工大学《C语言程序设计》期末考试复习练习题(含答案).pdf

    华东理工大学《C语言程序设计》期末考试复习练习题(含答案)

    程序设计入门—C语言(完)-浙江大学-翁恺 视频.txt

    但是对于计算机专业的学生,本课程是向后续的计算机组成、操作系统、编译原理、体系结构等课程前进的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。 本课程是零基础的入门课程,完成本...

    C语言程序设计-编程练习及答案.pdf

    C语言程序设计-编程练习及答案.pdf

Global site tag (gtag.js) - Google Analytics