TCPL——练习1.9

  打算这段时间重新拜读TCPL这本经典著作,并把后面的习题都做一遍。结果,发现我的决定是多么的正确,多么有必要。

  原因在于下午一道练习题,很简单:编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格来表示。

  很简单,本来前几章的练习都不打算写,因为之前国庆回家正好带回了一本《The C Answer Book》,就打算写写然后看看答案。不假思索我就写了一个程序:

 

代码
 
   
#include < stdio.h >

#define FALSE 0
#define TRUE 1

int main( void )
{
int c;
int flag = FALSE;

while ((c = getchar()) != EOF)
{
if (flag == FALSE)
{
putchar(c);
if (c == ' ' )
flag
= TRUE;
}
else
{
if (c != ' ' )
{
flag
= FALSE;
putchar(c);
}
}
}
return 0 ;
}

这当然能正确运行。但是,我看TCAB,里面有3种简单的解法。地一种和我差不多,可是第三种明显简洁很多,真是相形见绌了。下面就是第三种方法:

 

 

代码
 
   
#include < stdio.h >

#define NONBLANK 'a'

int main( void )
{
int c, lastc;

lastc
= NONBLANK;
while ((c = getchar()) != EOF)
{
if (c != ' ' || lastc != ' ' )
putchar(c);
lastc
= c;
}
return 0 ;
}

 

这个例子告诉再一次提醒我:永远不要小看一个简单的程序,里面蕴含的道理很有可能能影响到你以后的水平。程序就是要尽量简洁,虽然我们大家都明白这个道理,但是到了实际工作,你能保证你的程序永远都是那么简洁么?

 

转载于:https://www.cnblogs.com/python_newbie/archive/2010/10/31/1865658.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值