编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。

  当前输入字符可以分为两种情况:

  1、当前输入字符不为空,则直接输出这个字符即可;

  2、当前输入字符为空,这种情况又可以分为两种情况:

  ①、上一个输入字符也为空,则忽略此次输入的空格即可;

  ②、上一个输入字符不为空,则直接输出这个字符即可。

 基本思想是:
  设置两个变量,分别记录当前输入的字符和上一次输入的字符,“上一个字符”初始化为EOF。
  如果当前输入字符为空,上一个输入字符也为空,则忽略当前输入的字符。

View Code
#include <stdio.h>


main()
{
    int c, pc;    /* c = character, pr = previous character */

    /* set pc to a value that wouldn't match any character, in case
    this program is over modified to get rid of multiples of other
    characters */
    pc = EOF;

    while ((c = getchar()) != EOF)
    {
        if (c == ' ')
            if (pc != c)    /* or if (pc != ' ') */
                putchar(c);
        /* We haven't met 'else' yet, so we have to be a little clumey */
        if (c != ' ')
            putchar(c);
        pc = c;
    }
}
View Code
#include <stdio.h>

main()
{
    int c;    /* 用于存放当前输入的字符 */
    int pc;    /* 用于存放当前输入的上一个字符 */
    
    while((c = getchar()) != EOF)
    {
        if (c != ' ')
        {
            putchar(c);
        }
        else if (pc != ' ')
        {
            putchar(c);
        }

        pc = c;
    }

}

 

 

posted @ 2012-12-02 12:01  waynewuzhenbo  阅读(4677)  评论(1编辑  收藏  举报