编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。
当前输入字符可以分为两种情况:
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; } }