能力值:
( LV13,RANK:260 )
|
-
-
2 楼

不知道你懂了没 呵呵 。。画个图就出来了。。
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
3 楼
结合楼上的流程图。
while循环,每次读入一个字符c。
1.如果c不为空格,则设置inspace为0,这样下一次读到空格时可以输出;
2.如果c为空格,则先判断inspace是否为0,不是则不输出,是则输出空格,设置inspace为1,这样下一次读到空格时就不再输出。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
4 楼
inspace是判断连续空格的标志,当读到第一个空格时就置inspace为1并输出,后面连续读到的空格因为inspace都为1了就不再输出。
当读到其他字符时,重置inspace标志为0。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
来学习了,实在不会
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
6 楼
是空格,如果是第一个则输出,不是第一个跳过;
不是空格,使inspace为零,输出c
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
7 楼
inspace就好比一个开关,一开始开关打开(inspace==0),当第一次读到空格时,输出这个空格,然后开关关闭(inspace=1),只有读到非空格时开关才打开(inspace=0)
|
能力值:
( LV15,RANK:670 )
|
-
-
8 楼
inspace 的目的是标识当前读取的字符是否是空白字符。
|
能力值:
( LV12,RANK:440 )
|
-
-
9 楼
个人认为楼上解释的不对,前几位解释的已经很详细了。相信楼主能够明白了吧。inspace实际上就是一个哨兵。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
10 楼
来学习了,实在帮不了忙!呵呵
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
11 楼
just here to learn.
觉得就是为了限制只输入一个空格,多则不输出吧?
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
12 楼
inspace这个变量记录输入“ ”的多少,如果“ ”>=2测inspace变为1并停止输入。。。。。。。。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
13 楼
打个比方,比如输入的字符串是:abc()()def,“()”代表空格。当你输完这个字符串加车时,字符串送出,getchar()开始获取,当取到第一个空格时,inspace变为1,并且输出这个空格,接下来又是一个空格,这时,inspace是1,那么因为if(inspace == 0)才可以输出,帮此时无法输出。略过了这个空格。下一个是d,这时,它不是空格,而if(c != ' ')时,inspace为0,故而下回碰到空格时又可以输出了。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
14 楼
if(inspace == 0)
{
inspace = 1;
putchar(c);
}
当接收到第一个空格后,inspace = 1,以后连续的空格都不进入此执行,就不会putchar(c)了。
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
15 楼
 恩!学习了!
|
能力值:
( LV2,RANK:10 )
在线值:

|
-
-
16 楼
这个很简单的啊~~
它其实就是一个标志罢了, 第一次有空格进来的时候,他输出空格
如果连续输入空格,后面的都被屏蔽了,因为标志为1,进不去if里,就不输出空格
当不输入空格了,标志就改为0,恢复原来了.
这样就满足了题目了~~
其实这种问题,自己写写程序,调试着跑一下,就很清楚了.
|
能力值:
( LV2,RANK:10 )
在线值:
|
-
-
17 楼
来学习了,实在不会
|
|
|