【C语言及程序设计】项目1-36-3:消除多余的空格

问题描述:从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。
例如,输入:I   am     a            teacher.,输出I am a teacher.

笔者的code:

 1 #include "stdafx.h"
 2 
 3 int main()
 4 {
 5     char c('\0'), m('\0');
 6 
 7     do
 8     {
 9         c = getchar();
10         if ( (m == ' ') && (c == ' '))
11         {
12             putchar('\b');
13         }
14         putchar(c);
15         m = c;
16 
17     } while (c != '\n');
18 
19     return 0;
20 }

老师的code:

 1 #include <stdio.h>  
 2 int main( )  
 3 {  
 4     char c, frontIsSpace=0;  //frontIsSpace用于记忆前面的符号是否为空格,是空格,值为1,不为空格,为0  
 5     while ((c=getchar())!='\n')  
 6     {  
 7         if (c!=' ')  
 8         {  
 9             frontIsSpace=0;   //在读入下一个字符后,当前的字符,就是下一次所谓前一个,其值不是空格,故赋值为0    
10             putchar(c) ;   
11         }  
12         else if (frontIsSpace==0)  //如果前一个不是空格,当前的这个空格是要输出的  
13         {  
14             putchar(c);   //输出的是空格  
15             frontIsSpace=1;   //在读入下一个字符后,就需要知道,当前的字符,也就是下一次所谓前一个,其值是空格,故赋值为1  
16         }  
17     }  
18     return 0;  
19 }  

感想:

这道题第一次做,干想是很困难的。这个时候就可以写“伪代码”或画流程图,不要嫌麻烦,其实可以大大提高效率。比如本题在写代码之前就可以,写个伪代码:

输入字符》利用中间变量判断前一个字符是否为space》

1. 是:输出退格

2. 否:输出字符(数据处理)

》将字符存储至中间变量 》返回循环

=

猜你喜欢

转载自www.cnblogs.com/miyazakehime/p/9130133.html
今日推荐