问题:编写一个将输出复制到输入的程序,并将其中的连续的多个空格用一个空格代替。
本例关键是要认识如何更新前一个字符及if-else语句,逻辑或的运用!
if语句实现:
#include <stdio.h>
#define NOBLANK 'a'
/* replace string of blanks with a single blank */
int main()
{
int c, lastc;
lastc = NOBLANK;
while((c = getchar()) != EOF) {
if(c != ' ') //输出非空格字符
putchar(c);
if(c == ' ') //处理空格字符
if(lastc != ' ') //检查当前的空格字符究竟是一个单个的空格还是一串空格中的第一个空格
putchar(c);
lastc = c; //更新上一个字符
}
return 0;
}
if-else实现:
#include <stdio.h>
#define NOBLANK 'a'
/* replace string of blanks with a single blank */
int main()
{
int c, lastc;
lastc = NOBLANK;
while((c = getchar()) != EOF) {
if(c != ' ') //输出非空格字符
putchar(c);
else if(lastc != ' ') //若上一个字符非空格则输入本字符
putchar(c);
lastc = c; //更新上一个字符
}
return 0;
}
逻辑或(OR)操作符 | | 实现:
#include <stdio.h>
#define NOBLANK 'a'
/* replace string of blanks with a single blank */
int main()
{
int c, lastc;
lastc = NOBLANK;
while((c = getchar()) != EOF) {
if(c != ' ' || lastc != ' ') //本字符不是空格或者前一个字符不是空格则输出
putchar(c);
}
return 0;
}