统计输入中的行数,单词数,字符数

   源于《The C Programming Language》P14的一道例题:

 

   统计输入中的行数,单词数,字符数(单词的定义:其中不包括空格,制表符,换行符的字符序列)    

 

     #include <stdio.h>

 

     #define   IN      1

     #define   OUT   0

 

     int main()

     {

 

            int c, nl, nw, nc, state;

 

            state = OUT;

            nl = nw = nc = 0;

            while((c = getchar()) != EOF)

                    ++nc;

                    if(c == '/n')

                           ++nl;

                    if(c == ' ' || c == '/t' || c == '/n')

                           state = OUT;

                    else if(state == OUT)

                    {

                           state = IN;

                           ++nw;

                    }

 

            return 0;

 

     }

 

     1,  对于第二个if语句,当出现这些字符时,认定一个单词已经结束,故将state赋值为OUT,这一点在设计的时候不太容易想到。

 

     2,  用两个分开的if语句的清晰度高于一个if-else语句(谨针对本例),因为第二个if语句是个if-else语句,如果在第二个ifz之前加上else

          会增加阅读的难度。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值