一.
1.这道题很有意思,需要让我们统计单词个数,一共有三种理解方式,先来理解上面这种
(1)首先,我们分析题目可以近似理解成统计空格的数量,那么我们怎么统计呢 ?如果理解成统计前面的空格数,那么会出现一个问题如果第一个字母前面没有空格就会忽略一种情况
(2)然后,还有一种可能的情况就是两个字母之间有多个空格,所以我们不能通过空格的数量来输出字符个数这显然是靠不住的,因此转换成程序的话就是,程序读出' '的时候不输出个数,而是得到下一个字符才输出+1
(3)最后呢,就是题干简化了我们的工程量只让我们算一行(假如不是我们后面再说,会有解释),意思就是遇到'\n'则循环结束,
2.现在思路大概写完了,我们开始分析代码
(1)在1.(2)中我们说过读空格我们不让他输出而是到下一个字符才输出,因此我们if()里面的结果应该是同时读到一个空格和一个非空格,因此我们需要两个变量去进行保存数值以及继续获得数值,于是就有a,b.两个变量就出现了代码16 与17 两行的情况
(2)上面说了,一个字符与一个空格才输出,于是就有14 15行的东西
(3)因为我们知道1.(1)这个特殊情况,因此我们设a初始值为空格(9行)
二.
1.(1)这种方法和上面大致意思一样就是空格照常输入(17~20),只计算字符后面的' ',比较好理解
三.
1.(1)这个就比较好玩了,我们通过给空格挂flag来影响下次是否计数
总结;三种方法大同小异,只要理解透上面提到的问题就好
(我们现在在来讨论一下如果去除整行应该怎么算 ,我们做的是一行计数,所以我想让他重启这个代码然后总求和来进行,所以我想用一个#来代表文本输出结束从而在外面多加一个循环,)
但是我又发现他并不是单行才可以运行的,多行仍然可以,为什么呢,其实很简单,只有你刻意去输出'\n'才会终止