炎炎夏日,思考道C语言题来消暑

5 views
Skip to first unread message

vvoody

unread,
Jul 3, 2008, 1:58:43 AM7/3/08
to xiyou...@googlegroups.com
某小朋友写了一段程序,想要打印 99 个'#':

int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

但这显然是不对的。有如下问题:

1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
2.同样的限制条件, 使得只打印一个 '#'
3.同样的限制条件, 打印 100 个 '#'

可无视所有不合语言规范的东西.. 只要编译通过+答案正确就可以...

============================================================
很有意思啊:D

--
Your heart is free, have the courage to follow it.
I'm vvoody.

可可熊

unread,
Jul 3, 2008, 2:45:16 AM7/3/08
to vvoody, xiyou...@googlegroups.com


在08-7-3,vvoody <wxj.g.sh@gmail.com> 写道:
某小朋友写了一段程序,想要打印 99 个'#':

int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

但这显然是不对的。有如下问题:

1.请大家帮他改正, 但只允许  1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
2.同样的限制条件, 使得只打印一个 '#'



int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; main() { for(i=0; i<n; i--) ;{ printf("#"); } }                                        
                                                            ^
这个需要一点解释,(溢出)

可可熊

unread,
Jul 3, 2008, 2:47:03 AM7/3/08
to vvoody, xiyou...@googlegroups.com


在08-7-3,可可熊 <cocobear.cn@gmail.com> 写道:


在08-7-3,可可熊 <cocobear.cn@gmail.com> 写道:


在08-7-3,vvoody <wxj.g.sh@gmail.com> 写道:
某小朋友写了一段程序,想要打印 99 个'#':

int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

但这显然是不对的。有如下问题:

1.请大家帮他改正, 但只允许  1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }
                                                      ^


这个好像忘抄送了,不好意思。
 

2.同样的限制条件, 使得只打印一个 '#'
3.同样的限制条件, 打印 100 个 '#'

可无视所有不合语言规范的东西.. 只要编译通过+答案正确就可以...

============================================================
很有意思啊:D

确实很有意思,想不出来。

vvoody

unread,
Jul 3, 2008, 2:47:27 AM7/3/08
to cocob...@gmail.com, xiyou...@googlegroups.com
From: "可可熊" <cocob...@gmail.com>
Subject: Re: [XiYouLinux] 炎炎夏日,思考道C语言题来消暑
Date: Thu, 3 Jul 2008 14:45:16 +0800
Message-ID: <1babe9be0807022345k44...@mail.gmail.com>

> 在08-7-3,vvoody <wxj....@gmail.com> 写道:
> >
> > 某小朋友写了一段程序,想要打印 99 个'#':
> >
> > int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> >
> > 但这显然是不对的。有如下问题:
> >
> > 1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
> > 2.同样的限制条件, 使得只打印一个 '#'
>
>
>
>
> int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; main() { for(i=0; i<n; i--) ;{ printf("#"); }
> }
> ^
> 这个需要一点解释,(溢出)
>
是啊,还要等一会才出来结果。来,第三题吧^_^,虽然2还有解。

可可熊

unread,
Jul 3, 2008, 3:06:22 AM7/3/08
to vvoody, xiyou...@googlegroups.com


在08-7-3,vvoody <wxj.g.sh@gmail.com> 写道:
From: "可可熊" <cocobear.cn@gmail.com>
Subject: Re: [XiYouLinux] 炎炎夏日,思考道C语言题来消暑

Date: Thu, 3 Jul 2008 14:45:16 +0800
Message-ID: <1babe9be0807022345k44...@mail.gmail.com>


> 在08-7-3,vvoody <wxj.g.sh@gmail.com> 写道:

> >
> > 某小朋友写了一段程序,想要打印 99 个'#':
> >
> > int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> >
> > 但这显然是不对的。有如下问题:
> >
> > 1.请大家帮他改正, 但只允许  1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
> > 2.同样的限制条件, 使得只打印一个 '#'
>
>
>
>
> int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; main() { for(i=0; i<n; i--) ;{ printf("#"); }
> }
>                                                             ^
> 这个需要一点解释,(溢出)
>

是啊,还要等一会才出来结果。来,第三题吧^_^,虽然2还有解。

卡了…………

Jianjun Kong

unread,
Jul 3, 2008, 3:07:47 AM7/3/08
to vvoody, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
>某小朋友写了一段程序,想要打印 99 个'#':
>
>int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>
>但这显然是不对的。有如下问题:
>
>1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符

1)
?

2)
int i, n=99; main() { for(i=0; -i<n; i--) { printf("#"); } }
^
3)


int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }
^

int i, n=99; main() { for(i=0; i+n; i--) { printf("#"); } }
^
>2.同样的限制条件, 使得只打印一个 '#'

>3.同样的限制条件, 打印 100 个 '#'
>
>可无视所有不合语言规范的东西.. 只要编译通过+答案正确就可以...
>
>============================================================
>很有意思啊:D
>
>--
>Your heart is free, have the courage to follow it.
>I'm vvoody.
>
>>

--
Jianjun Kong | Happy Hacking
HomePage: http://www.kongove.cn
Gtalk: kongj...@gmail.com

可可熊

unread,
Jul 3, 2008, 3:12:55 AM7/3/08
to Jianjun Kong, vvoody, xiyou...@googlegroups.com


在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
>某小朋友写了一段程序,想要打印 99 个'#':
>
>int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>
>但这显然是不对的。有如下问题:
>
>1.请大家帮他改正, 但只允许  1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符


1)
?

2)

int i, n=99; main() { for(i=0; -i<n; i--) { printf("#"); } }

                               ^
3)
int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }

                                    ^
int i, n=99; main() { for(i=0; i+n; i--) { printf("#"); } }

                                ^

不知道你在做什么,哪个是哪个的解?

  全打印出来99个。
 

Jianjun Kong

unread,
Jul 3, 2008, 3:22:19 AM7/3/08
to 可可熊, vvoody, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 03:12:55PM +0800, 可可熊 wrote:
>
>
>在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
>
> On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
> >某小朋友写了一段程序,想要打印 99 个'#':
> >
> >int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> >
> >但这显然是不对的。有如下问题:
> >
> >1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变
> 一个字符
>
>
> 1)
> ?
>
> 2)
>
> int i, n=99; main() { for(i=0; -i<n; i--) { printf("#"); } }
>
> ^
> 3)
> int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }
>
> ^
> int i, n=99; main() { for(i=0; i+n; i--) { printf("#"); } }
>
> ^
>
> 不知道你在做什么,哪个是哪个的解?
>
>
> 全打印出来99个。
那说明我做的是对的,第一题就要求打印99个,而且我采用了规定的两种方法

共三个题,每个题有三种解法 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变
也就是说你刚才只做了 1/9, 后面两个题我正在做……
vvoody,我的理解对吗?

>
> >2.同样的限制条件, 使得只打印一个 '#'
>
> >3.同样的限制条件, 打印 100 个 '#'
> >
> >可无视所有不合语言规范的东西.. 只要编译通过+答案正确就可以...
> >
> >============================================================
> >很有意思啊:D

--

可可熊

unread,
Jul 3, 2008, 3:25:05 AM7/3/08
to Jianjun Kong, vvoody, xiyou...@googlegroups.com
这么主观,题里哪里提到每个问题有三种解法?

Jianjun Kong

unread,
Jul 3, 2008, 3:29:00 AM7/3/08
to 可可熊, vvoody, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 03:25:05PM +0800, 可可熊 wrote:
>
>
>在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
>
> On Thu, Jul 03, 2008 at 03:12:55PM +0800, 可可熊 wrote:
> >
> >
> >在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
> >
> > On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
> > >某小朋友写了一段程序,想要打印 99 个'#':
> > >
> > >int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> > >
> > >但这显然是不对的。有如下问题:
> > >
> > >1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符

这里提到了。
你做的符合第二个要求,增加了一个分号。

> > 1)
> > ?
> >
> > 2)
> >
> > int i, n=99; main() { for(i=0; -i<n; i--) { printf("#"); } }
> >
> > ^
> > 3)
> > int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }
> >
> > ^
> > int i, n=99; main() { for(i=0; i+n; i--) { printf("#"); } }
> >
> > ^
> >
> > 不知道你在做什么,哪个是哪个的解?
> >
> >
> > 全打印出来99个。
>
> 那说明我做的是对的,第一题就要求打印99个,而且我采用了规定的两种方法
>
> 共三个题,每个题有三种解法 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变
> 也就是说你刚才只做了 1/9, 后面两个题我正在做……
> vvoody,我的理解对吗?
>
>
> 这么主观,题里哪里提到每个问题有三种解法?

<....>

vvoody

unread,
Jul 3, 2008, 3:30:39 AM7/3/08
to kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com
From: Jianjun Kong <kongj...@gmail.com>
Subject: Re: [XiYouLinux] Re: 炎炎夏日,思考道C语言题来消暑
Date: Thu, 3 Jul 2008 15:22:19 +0800
Message-ID: <20080703072219.GB5624@ubuntu>

> On Thu, Jul 03, 2008 at 03:12:55PM +0800, 可可熊 wrote:
> >
> >
> >在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
> >
> > On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
> > >某小朋友写了一段程序,想要打印 99 个'#':
> > >
> > >int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> > >
> > >但这显然是不对的。有如下问题:
> > >
> > >1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变
> > 一个字符
> >
> >
> > 1)
> > ?
> >
> > 2)
> >
> > int i, n=99; main() { for(i=0; -i<n; i--) { printf("#"); } }
> >
> > ^
> > 3)
> > int i, n=99; main() { for(i=0; i<n; n--) { printf("#"); } }
> >
> > ^
> > int i, n=99; main() { for(i=0; i+n; i--) { printf("#"); } }
> >
> > ^
> >
> > 不知道你在做什么,哪个是哪个的解?
> >
> >
> > 全打印出来99个。
> 那说明我做的是对的,第一题就要求打印99个,而且我采用了规定的两种方法
>
> 共三个题,每个题有三种解法 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变
> 也就是说你刚才只做了 1/9, 后面两个题我正在做……
> vvoody,我的理解对吗?
>

三道题的限制都是一样的,但是不一定都有三种解法。
据我所知,第二题的解法目前为止都是一种方法的。

各题的“删除一个字符”想不出来。

可可熊

unread,
Jul 3, 2008, 3:33:26 AM7/3/08
to Jianjun Kong, vvoody, xiyou...@googlegroups.com
在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
On Thu, Jul 03, 2008 at 03:25:05PM +0800, 可可熊 wrote:
>
>
>在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
>
>    On Thu, Jul 03, 2008 at 03:12:55PM +0800, 可可熊 wrote:
>    >
>    >
>    >在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
>    >
>    >    On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
>    >    >某小朋友写了一段程序,想要打印 99 个'#':
>    >    >
>    >    >int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>    >    >
>    >    >但这显然是不对的。有如下问题:
>    >    >
>    >    >1.请大家帮他改正, 但只允许  1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符


这里提到了。
你做的符合第二个要求,增加了一个分号。



这就是你先入为主了,别人说的这只是条件要求,你就认为这是答案要求了。

 

Jianjun Kong

unread,
Jul 3, 2008, 3:38:39 AM7/3/08
to vvoody, cocob...@gmail.com, xiyou...@googlegroups.com

准确说叫三类解法。这是根据解题的方法(删除/增加/修改一个字符)来分类的,没类可能有多个解(如我给出的用“修改一个字符”打印99#)

>据我所知,第二题的解法目前为止都是一种方法的。
>
>各题的“删除一个字符”想不出来。

--

vvoody

unread,
Jul 3, 2008, 3:39:01 AM7/3/08
to kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com
From: Jianjun Kong <kongj...@gmail.com>
Subject: Re: [XiYouLinux] Re: 炎炎夏日,思考道C语言题来消暑
Date: Thu, 3 Jul 2008 15:29:00 +0800
Message-ID: <20080703072900.GA6089@ubuntu>

> On Thu, Jul 03, 2008 at 03:25:05PM +0800, 可可熊 wrote:
> >
> >
> >在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
> >
> > On Thu, Jul 03, 2008 at 03:12:55PM +0800, 可可熊 wrote:
> > >
> > >
> > >在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
> > >
> > > On Thu, Jul 03, 2008 at 01:58:43PM +0800, vvoody wrote:
> > > >某小朋友写了一段程序,想要打印 99 个'#':
> > > >
> > > >int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> > > >
> > > >但这显然是不对的。有如下问题:
> > > >
> > > >1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
>
> 这里提到了。
> 你做的符合第二个要求,增加了一个分号。
>
我的理解是,并不是每题都要求3种方法的。

可可熊

unread,
Jul 3, 2008, 3:42:04 AM7/3/08
to Jianjun Kong, vvoody, xiyou...@googlegroups.com



又在这里狡辩了, 这根本不叫三类解法,而是人家的要求,你的解法要遵循这个要求。

Jianjun Kong

unread,
Jul 3, 2008, 3:47:51 AM7/3/08
to vvoody, cocob...@gmail.com, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 03:30:39PM +0800, vvoody wrote:
<....>
>各题的“删除一个字符”想不出来。

我想到一个比较“恨”的招数,对于“删除一个字符”的要求,可以把每个字符挨个删除编译,试一遍。当然很明显错误的就不用试了,这个用脚本比较好。

nt i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

it i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
in i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int , n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, =99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=9; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=9 main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; ain() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; min() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; man() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; mai() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; main) { for(i=0; i<n; i--) { printf("#"); } }
……
……

BTW: 请就我和cocobear讨论的问题做题目要求问题,做解答 ;-)

可可熊

unread,
Jul 3, 2008, 3:56:32 AM7/3/08
to Jianjun Kong, vvoody, xiyou...@googlegroups.com
在08-7-3,Jianjun Kong <kongj...@gmail.com> 写道:
On Thu, Jul 03, 2008 at 03:30:39PM +0800, vvoody wrote:


<....>
>各题的"删除一个字符"想不出来。

我想到一个比较"恨"的招数,对于"删除一个字符"的要求,可以把每个字符挨个删除编译,试一遍。当然很明显错误的就不用试了,这个用脚本比较好。


nt i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
it i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

in i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
int , n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

int i n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

int i, =99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n99; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=9; main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=9 main() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; ain() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; min() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; man() { for(i=0; i<n; i--) { printf("#"); } }
int i, n=99; mai() { for(i=0; i<n; i--) { printf("#"); } }

int i, n=99; main) { for(i=0; i<n; i--) { printf("#"); } }

……
……

 

很有才

 

BTW: 请就我和cocobear讨论的问题做题目要求问题,做解答 ;-)

 这句话好难理解啊

vvoody

unread,
Jul 3, 2008, 3:57:36 AM7/3/08
to kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com
From: Jianjun Kong <kongj...@gmail.com>
Subject: Re: [XiYouLinux] Re: 炎炎夏日,思考道C语言题来消暑
Date: Thu, 3 Jul 2008 15:47:51 +0800
Message-ID: <20080703074751.GC6089@ubuntu>

> On Thu, Jul 03, 2008 at 03:30:39PM +0800, vvoody wrote:
> <....>
> >各题的“删除一个字符”想不出来。
>
> 我想到一个比较“恨”的招数,对于“删除一个字符”的要求,可以把每个字符挨个删除编译,试一遍。当然很明显错误的就不用试了,这个用脚本比较好。
>
> nt i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> it i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> in i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int , n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, =99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n99; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=9; main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=9 main() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; ain() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; min() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; man() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; mai() { for(i=0; i<n; i--) { printf("#"); } }
> int i, n=99; main) { for(i=0; i<n; i--) { printf("#"); } }
> ……
> ……
>
哈哈,这方法。。。good! 还是你来试吧:-)

> BTW: 请就我和cocobear讨论的问题做题目要求问题,做解答 ;-)
>

虽然题目限制有三种方法,但我还是不认为每小题都会有限制中提到的每种方法
来解(当然不排除都有的可能性)。也许有一小题用到的方法,比如“删除”,是其
他小题无法做到的。

原题目在这里:
http://linuxfire.com.cn/~alecs/fun/xiaoming.txt

准备去学校了,晚上再贴出一些别的答案:-)

WANG Cong

unread,
Jul 3, 2008, 4:54:37 AM7/3/08
to Jianjun Kong, vvoody, cocob...@gmail.com, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 03:47:51PM +0800, Jianjun Kong wrote:
>On Thu, Jul 03, 2008 at 03:30:39PM +0800, vvoody wrote:
><....>
>>各题的“删除一个字符”想不出来。
>
>我想到一个比较“恨”的招数,对于“删除一个字符”的要求,可以把每个字符挨个删除编译,试一遍。当然很明显错误的就不用试了,这个用脚本比较好。
>
>nt i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>it i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>in i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>int , n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>int i n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>int i, =99; main() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n99; main() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=9; main() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=9 main() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=99; ain() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=99; min() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=99; man() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=99; mai() { for(i=0; i<n; i--) { printf("#"); } }
>int i, n=99; main) { for(i=0; i<n; i--) { printf("#"); } }
>……
>……


恩,删除用脚本完成是很简单的。现在的问题是,添加和替换如何也用脚本完成??
仔细想想,挺有挑战性的。 :-)


--
Hi, I'm a .signature virus, please copy/paste me to help me spread
all over the world.

李磊

unread,
Jul 3, 2008, 5:45:11 AM7/3/08
to vvoody, kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com
for(i=0;i<n;-n--)
            ^ 
输出99个

李磊

unread,
Jul 3, 2008, 5:47:19 AM7/3/08
to vvoody, kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com


2008/7/3 李磊 <lile...@gmail.com>:

for(i=0;i<n;-n--)
            ^ 
输出99个
sorry,看错题目了。

李磊

unread,
Jul 3, 2008, 5:55:03 AM7/3/08
to vvoody, kongj...@gmail.com, cocob...@gmail.com, xiyou...@googlegroups.com
int i, n=99; main() { for(i=0; ~ i<n; i--) { printf("#"); } }
^
输出100个。

WANG Cong

unread,
Jul 3, 2008, 6:19:53 AM7/3/08
to Xi You Linux Group, Jianjun Kong, vvoody, cocob...@gmail.com

贡献我的删除脚本:

#!/bin/bash

TEST_VAR='int i,n=99;main(){for(i=0;i<n;i--){printf("#");}}'
i=0
tmpfile=$(mktemp /tmp/test-$$.XXXXXXX)
resultfile=$(mktemp /tmp/test-$$.XXXXXXX)
#echo $resultfile
outfile='/tmp/test_sh.out'
while(($i<${#TEST_VAR}));
do
tmp=${TEST_VAR:0:$i}${TEST_VAR:$((i+1))}
echo $tmp > $tmpfile
gcc -xc -o $outfile $tmpfile &>/dev/null
if [[ $? = 0 ]]
then
echo $tmp
nohup $outfile > $resultfile 2> /dev/null &
sleep 1 && killall $outfile 2> /dev/null
n=$(head -c 101 $resultfile | wc -c)
echo $n
if [ $n = 99 ] || [ $n = 100 ] || [ $n = 1 ]
then
echo $tmp
fi
fi
i=$(($i+1))
done;

貌似删除没答案?我的脚本跑出来没一个符合要求,或者我的脚本哪里错了。:-)

Jianjun Kong

unread,
Jul 3, 2008, 6:56:56 AM7/3/08
to WANG Cong, vvoody, cocob...@gmail.com, xiyou...@googlegroups.com
On Thu, Jul 03, 2008 at 09:54:37AM +0100, WANG Cong wrote:
>On Thu, Jul 03, 2008 at 03:47:51PM +0800, Jianjun Kong wrote:
>>On Thu, Jul 03, 2008 at 03:30:39PM +0800, vvoody wrote:
>><....>
>>>各题的“删除一个字符”想不出来。
>>
>>我想到一个比较“恨”的招数,对于“删除一个字符”的要求,可以把每个字符挨个删除编译,试一遍。当然很明显错误的就不用试了,这个用脚本比较好。
>>
>>nt i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>>it i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>>in i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }

<....>


>恩,删除用脚本完成是很简单的。现在的问题是,添加和替换如何也用脚本完成??
>仔细想想,挺有挑战性的。 :-)


实现了“删除单个字符”,不过没有满足条件的,测试脚本可以把str改成如:
str="pint i, n=99; main() { for(i=0; i+n; i--) { printf(\"#\"); } }"

--------
#!/bin/bash

str="int i, n=99; main() { for(i=0; i+n; i--) { printf(\"#\"); } }"
num=0
check()
{
echo $strr >a.c

rm -f a.out

echo ".......start compiling"
gcc -w a.c -o a.out 2> /dev/null
echo ".......end compiling"

if [ ! -e a.out ]
then
return
fi
n=`./a.out |wc -m`

if [ $n -eq 99 ] || [ $n -eq 1 ] || [ $n -eq 100 ]
then
echo
echo ......the right code
echo $strr
echo ......
echo
echo "It outputs [$n] '#'"
let num=$num+1
fi
}

#main()
charNum=`echo $str |wc -m`
echo $charNum
str[$charNum]=$str
i=0

while [ ! $i -eq $charNum ]
do
let i=$i+1
j=$i+1
#echo ${str:0:$i}${str:$j:$charNum}
strr=${str:0:$i}${str:$j:$charNum}
check

done

echo The right code number is :$num

____________________

增加/修改单个字符,在这个基础上实现也就容易多了

只需要再用一个循环得到一个字符(ASCII码32~126),插入/替换到下面这句
strr=${str:0:$i}${str:$j:$charNum}

Jianjun Kong

unread,
Jul 3, 2008, 6:59:02 AM7/3/08
to WANG Cong, Xi You Linux Group, vvoody, cocob...@gmail.com
On Thu, Jul 03, 2008 at 11:19:53AM +0100, WANG Cong wrote:
<...>

我的脚本也发上来了,确实没答案。不过你可以把字符串修改一下,来测试。

TEST_VAR='pint i,n=99;main(){for(i=0;i<n;i--){printf("#");}}'

如果能得到一个正确答案说明你的脚本正确。

WANG Cong

unread,
Jul 3, 2008, 8:24:11 AM7/3/08
to Jianjun Kong, WANG Cong, vvoody, cocob...@gmail.com, xiyou...@googlegroups.com

这样不行,有几种情况是死循环!你的脚本会卡到这里不动了,因为我的
一开始就是。所以后来我用了nohup和killall。:-)

<snip>

>
>增加/修改单个字符,在这个基础上实现也就容易多了
>
>只需要再用一个循环得到一个字符(ASCII码32~126),插入/替换到下面这句
> strr=${str:0:$i}${str:$j:$charNum}

我觉得这样过于“暴力”了,很多字符还可以再排除!应该结合一下上下文,
不过那样虽快但算法比较复杂。

vvoody

unread,
Jul 3, 2008, 10:43:54 AM7/3/08
to 李磊, 西邮Linux兴趣小组

是的.第三题确实是这样.下面是部分解法.

Q 1:
int i, n=99; main(){ for(i=0; i+n; i--) { printf("#"); } }
int i, n=99; main(){ for(i=0; i<n; n--) { printf("#"); } }

Q 2:
int i, n=99; main(){ for(i=0; i<&n; i--) { printf("#"); } }
int i, n=99; main(){ for(i=0; i<n; i--); { printf("#"); } }
int *i, n=99; main(){ for(i=0; i<n; i--) { printf("#"); } }
int i, *n=99; main(){ for(i=0; i<n; i--) { printf("#"); } }

Q 3:
int i, n=99; main(){ for(i=0; ~i<n; i--) { printf("#"); } }


--
Free as freedom, slack as Slackware.
vvoody

WANG Cong

unread,
Jul 3, 2008, 11:29:47 AM7/3/08
to vvoody, Li Lei, Xi You Linux Group

我的脚本得到8个结果,所有的加起来:

result ==> int *i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
result ==> int i,*n=99;main(){for(i=0;i<n;i--){printf("#");}}
result ==> int i,n=99;main(){for(i=0;-i<n;i--){printf("#");}}
result ==> int i,n=99;main(){for(i=0;~i<n;i--){printf("#");}}
result ==> int i,n=99;main(){for(i=0;i<&n;i--){printf("#");}}
result ==> int*i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
result ==> int i,n=99;main(){for(i=0;i+n;i--){printf("#");}}
result ==> int i,n=99;main(){for(i=0;i<n;n--){printf("#");}}

马上公布脚本。:-)

WANG Cong

unread,
Jul 3, 2008, 11:34:26 AM7/3/08
to Jianjun Kong, vvoody, cocob...@gmail.com, xiyou...@googlegroups.com

<snip>


>增加/修改单个字符,在这个基础上实现也就容易多了
>
>只需要再用一个循环得到一个字符(ASCII码32~126),插入/替换到下面这句
> strr=${str:0:$i}${str:$j:$charNum}

我完成了测试所有结果的脚本。:-)

如下,分两部分,bash部分和perl部分。其实完全可以用perl来完成的。:-)
运行时把它们放到同一个目录中。

Bash脚本:

#!/bin/bash

TEST_VAR='int i,n=99;main(){for(i=0;i<n;i--){printf("#");}}'

#Generated by Python with
#''.join(map(lambda x: '' if chr(x).isupper() else chr(x), range(32, 127)))
#except '$','(',')', '{','}', '[', ']', '@', "\`", "\"", "#", "'", "\\"
possible_chars=' !'"%&*+,-./0123456789:;<=>?^_abcdefghijklmnopqrstuvwxyz|~"
len=${#TEST_VAR}
num_chars=${#possible_chars}
tmpfile=$(mktemp /tmp/test-$$.XXXXXXX)
outfile="/tmp/test_sh.out"

function is_valid_and_ok()
{
echo $1 > $tmpfile
gcc -xc -c -o $outfile.o $tmpfile &>/dev/null
if [[ $? -eq 0 ]]
then
gcc -o $outfile $outfile.o &>/dev/null
if [[ $? -ne 0 ]]; then
return 0
fi
#nohup $outfile > $resultfile 2> /dev/null &
#sleep 1 && killall $outfile 2> /dev/null
n=$(./get_run_result.pl $outfile)
echo $n
if [[ $n -eq 99 ]] || [[ $n -eq 100 ]] || [[ $n -eq 1 ]]
then
return 1
fi
fi
return 0
}

#main
i=0
while(($i<$len - 16));
do
tmp="${TEST_VAR:0:$i}${TEST_VAR:$((i+1))}"
echo "delete: $tmp"
is_valid_and_ok "$tmp"
if [ $? -eq 1 ]
then
echo "result ==> $tmp" 1>&2
fi
i=$(($i+1))
done;

i=4
while(($i < $len - 16));
do
j=0
while(($j<$num_chars));
do
tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$i}"
echo "add: $tmp"
is_valid_and_ok "$tmp"
if [ $? -eq 1 ]
then
echo "result ==> $tmp" 1>&2
fi
j=$(($j+1))
done
i=$(($i+1))
done;

i=0
while(($i<$len - 16));
do
j=0
while(($j<$num_chars));
do
tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$((i+1))}"
echo "replace: $tmp"
is_valid_and_ok "$tmp"
if [ $? -eq 1 ]
then
echo "result ==> $tmp" 1>&2
fi
j=$(($j+1))
done

i=$(($i+1))
done;

================================================================

Perl 脚本:

#!/usr/bin/perl -w

use strict;
use warnings;

my $n;
my $chars;

open(my $in_file, "$ARGV[0]|") or exit 1;
$n = read($in_file, $chars, 101);
print "$n\n";
close $in_file;

Jianjun Kong

unread,
Jul 3, 2008, 12:29:52 PM7/3/08
to WANG Cong, vvoody, Li Lei, Xi You Linux Group
On Thu, Jul 03, 2008 at 04:29:47PM +0100, WANG Cong wrote:

<....>


>我的脚本得到8个结果,所有的加起来:
>
>result ==> int *i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
>result ==> int i,*n=99;main(){for(i=0;i<n;i--){printf("#");}}
>result ==> int i,n=99;main(){for(i=0;-i<n;i--){printf("#");}}

By_me


>result ==> int i,n=99;main(){for(i=0;~i<n;i--){printf("#");}}
>result ==> int i,n=99;main(){for(i=0;i<&n;i--){printf("#");}}
>result ==> int*i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
>result ==> int i,n=99;main(){for(i=0;i+n;i--){printf("#");}}

By_me


>result ==> int i,n=99;main(){for(i=0;i<n;n--){printf("#");}}

By_me

我做出的3个答案都在上面,cocobear利用溢出,得到的打印1个#的答案脚本没有求出来。
编译:
int i,n=99;main(){for(i=0;i<n;i--);{printf("#");}}
运行可执行文件,得4、5秒才能溢出并打印出一个 #

n=$(./get_run_result.pl $outfile) 用perl脚本判断执行结果时,上面程序还没有运行完。这里没法和死循环区分。
不过cocbear的这个解法太特殊了。

>马上公布脚本。:-)

看到了,很好,很强大!似乎这是一个很好的解题方法,在保证脚本正确的前提下,这样答案更全。

--
Jianjun Kong | Happy Hacking

^^^^^^^^^^^^^
^^^^^^^^^^^^^

WANG Cong

unread,
Jul 3, 2008, 12:40:53 PM7/3/08
to Jianjun Kong, vvoody, Li Lei, Xi You Linux Group
On Fri, Jul 04, 2008 at 12:29:52AM +0800, Jianjun Kong wrote:
>On Thu, Jul 03, 2008 at 04:29:47PM +0100, WANG Cong wrote:
>
><....>
>>我的脚本得到8个结果,所有的加起来:
>>
>>result ==> int *i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
>>result ==> int i,*n=99;main(){for(i=0;i<n;i--){printf("#");}}
>>result ==> int i,n=99;main(){for(i=0;-i<n;i--){printf("#");}}
>By_me
>>result ==> int i,n=99;main(){for(i=0;~i<n;i--){printf("#");}}
>>result ==> int i,n=99;main(){for(i=0;i<&n;i--){printf("#");}}
>>result ==> int*i,n=99;main(){for(i=0;i<n;i--){printf("#");}}
>>result ==> int i,n=99;main(){for(i=0;i+n;i--){printf("#");}}
>By_me
>>result ==> int i,n=99;main(){for(i=0;i<n;n--){printf("#");}}
>By_me
>
>我做出的3个答案都在上面,cocobear利用溢出,得到的打印1个#的答案脚本没有求出来。
>编译:
>int i,n=99;main(){for(i=0;i<n;i--);{printf("#");}}
>运行可执行文件,得4、5秒才能溢出并打印出一个 #
>
>n=$(./get_run_result.pl $outfile) 用perl脚本判断执行结果时,上面程序还没有运行完。这里没法和死循环区分。
>不过cocbear的这个解法太特殊了。

恩,看到问题了。不过按理说应该会等待。莫非读是非阻塞的?
我查查看。

WANG Cong

unread,
Jul 3, 2008, 1:09:09 PM7/3/08
to yang....@gmail.com, kongj...@gmail.com, vvoody, Li Lei, Xi You Linux Group

不是perl的问题,是我的问题。我人为地排除了cocobear那种可能。。。

下面是修订以后的脚本,得到9个结果。:-)

用时:
real 1m7.964s
user 0m47.115s
sys 0m19.862s

效率上还有不少改进的余地。:-)


=======================================================
#!/bin/bash

i=4
while (($i < $len - 14));


do
j=0
while(($j<$num_chars));
do
tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$i}"
echo "add: $tmp"
is_valid_and_ok "$tmp"
if [ $? -eq 1 ]
then
echo "result ==> $tmp" 1>&2
fi
j=$(($j+1))
done
i=$(($i+1))

if (($i == 11)) ; then
i=17
fi
done;

i=0
while(($i<$len - 16));
do
j=0
while(($j<$num_chars));
do
tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$((i+1))}"
echo "replace: $tmp"
is_valid_and_ok "$tmp"
if [ $? -eq 1 ]
then
echo "result ==> $tmp" 1>&2
fi
j=$(($j+1))
done
i=$(($i+1))

if (($i == 11)) ; then
i=17
fi
done;

vvoody

unread,
Jul 3, 2008, 1:26:07 PM7/3/08
to WANG Cong, Xi You Linux Group
On 7/4/08, WANG Cong <xiyou.w...@gmail.com> wrote:
不是perl的问题,是我的问题。我人为地排除了cocobear那种可能。。。

下面是修订以后的脚本,得到9个结果。:-)

用时:
real    1m7.964s
user    0m47.115s
sys     0m19.862s



what's the 9th?

Jianjun Kong

unread,
Jul 3, 2008, 2:06:19 PM7/3/08
to WANG Cong, yang....@gmail.com, vvoody, Li Lei, Xi You Linux Group
On Thu, Jul 03, 2008 at 06:09:09PM +0100, WANG Cong wrote:
>On Thu, Jul 03, 2008 at 05:40:53PM +0100, WANG Cong wrote:
<....>

>不是perl的问题,是我的问题。我人为地排除了cocobear那种可能。。。
>
>下面是修订以后的脚本,得到9个结果。:-)
>
>用时:
>real 1m7.964s
>user 0m47.115s
>sys 0m19.862s
>
>效率上还有不少改进的余地。:-)
>
>
>=======================================================
>#!/bin/bash
>
>TEST_VAR='int i,n=99;main(){for(i=0;i<n;i--){printf("#");}}'
>
>#Generated by Python with
>#''.join(map(lambda x: '' if chr(x).isupper() else chr(x), range(32, 127)))
>#except '$','(',')', '{','}', '[', ']', '@', "\`", "\"", "#", "'", "\\"
>possible_chars=' !'"%&*+,-./0123456789:;<=>?^_abcdefghijklmnopqrstuvwxyz|~"
>len=${#TEST_VAR}
>num_chars=${#possible_chars}
>tmpfile=$(mktemp /tmp/test-$$.XXXXXXX)
>outfile="/tmp/test_sh.out"

echo "" >result.txt


>
>function is_valid_and_ok()
>{
> echo $1 > $tmpfile
> gcc -xc -c -o $outfile.o $tmpfile &>/dev/null
> if [[ $? -eq 0 ]]
> then
> gcc -o $outfile $outfile.o &>/dev/null
> if [[ $? -ne 0 ]]; then
> return 0
> fi
> #nohup $outfile > $resultfile 2> /dev/null &
> #sleep 1 && killall $outfile 2> /dev/null
> n=$(./get_run_result.pl $outfile)
> echo $n
> if [[ $n -eq 99 ]] || [[ $n -eq 100 ]] || [[ $n -eq 1 ]]
> then
> return 1

echo "$n | $tmpfile" >>result.txt
把符合条件的解存入文本,便于查看


> fi
> fi
> return 0
>}
>
>#main
>i=0

这里也可从4开始

跳过“main(){for(” 可以吗?


if (($i == 11)) ; then

i=21
>done;
>
>i=0

这里也可从3开始


>while(($i<$len - 16));
>do
> j=0
> while(($j<$num_chars));
> do
> tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$((i+1))}"
> echo "replace: $tmp"
> is_valid_and_ok "$tmp"
> if [ $? -eq 1 ]
> then
> echo "result ==> $tmp" 1>&2
> fi
> j=$(($j+1))
> done
> i=$(($i+1))
> if (($i == 11)) ; then
> i=17
> fi
>done;

添加空格带来好多多余值,是否可以考虑把空格从possible_chars中去掉?
如: int i, n=199;main(){for(i=0;i<n;i--){printf("#");}}

--
Jianjun Kong | Happy Hacking

Jianjun Kong

unread,
Jul 3, 2008, 2:15:03 PM7/3/08
to vvoody, WANG Cong, Xi You Linux Group
On Fri, Jul 04, 2008 at 01:26:07AM +0800, vvoody wrote:
>On 7/4/08, WANG Cong <xiyou.w...@gmail.com> wrote:
>
> 不是perl的问题,是我的问题。我人为地排除了cocobear那种可能。。。
>
> 下面是修订以后的脚本,得到9个结果。:-)
>
> 用时:
> real 1m7.964s
> user 0m47.115s
> sys 0m19.862s
>
>
>
>
>what's the 9th?

result ==> int i,n=99;main(){for(i=0;i<n;i--);{printf("#");}}

上一个版本的脚本中,在尝试“增加一个字符”时,到倒数第十六个位置时,直接结束,这就把上面的解漏掉了。

while(($i < $len - 16));
^^(最新脚本这里为14)


do
j=0
while(($j<$num_chars));
do
tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$i}"
echo "add: $tmp"


>


>--
>Free as freedom, slack as Slackware.
>vvoody
>>

--
Jianjun Kong | Happy Hacking

WANG Cong

unread,
Jul 3, 2008, 2:36:32 PM7/3/08
to vvoody, Xi You Linux Group
On Fri, Jul 04, 2008 at 01:26:07AM +0800, vvoody wrote:
>On 7/4/08, WANG Cong <xiyou.w...@gmail.com> wrote:
>>
>> 不是perl的问题,是我的问题。我人为地排除了cocobear那种可能。。。
>>
>> 下面是修订以后的脚本,得到9个结果。:-)
>>
>> 用时:
>> real 1m7.964s
>> user 0m47.115s
>> sys 0m19.862s
>>
>>
>>
>what's the 9th?
>

最近的脚本得到9个结果,其中有两个是等价的,所以实际上总共有8个。

:-)

WANG Cong

unread,
Jul 3, 2008, 2:52:36 PM7/3/08
to Jianjun Kong, yang....@gmail.com, vvoody, Li Lei, Xi You Linux Group

不同意。我更喜欢打印到标准输出,因为我可以直接观察结果。
如果想保存,在外面重定向一次就可以了。


>> fi
>> fi
>> return 0
>>}
>>
>>#main
>>i=0
>
>这里也可从4开始


Agreed.


跳过for有些冒险了吧?不好说~


>>done;
>>
>>i=0
>
>这里也可从3开始
>>while(($i<$len - 16));
>>do
>> j=0
>> while(($j<$num_chars));
>> do
>> tmp="${TEST_VAR:0:$i}${possible_chars:$j:1}${TEST_VAR:$((i+1))}"
>> echo "replace: $tmp"
>> is_valid_and_ok "$tmp"
>> if [ $? -eq 1 ]
>> then
>> echo "result ==> $tmp" 1>&2
>> fi
>> j=$(($j+1))
>> done
>> i=$(($i+1))
>> if (($i == 11)) ; then
>> i=17
>> fi
>>done;
>
>添加空格带来好多多余值,是否可以考虑把空格从possible_chars中去掉?
>如: int i, n=199;main(){for(i=0;i<n;i--){printf("#");}}

恩,对,我本来想着空格可以替换,但那样的话就和删除重复了。
应该可以排除它。

vvoody

unread,
Jul 4, 2008, 6:56:37 AM7/4/08
to WANG Cong, 西邮Linux兴趣小组
On 7/3/08, WANG Cong <xiyou.w...@gmail.com> wrote:
恩,删除用脚本完成是很简单的。现在的问题是,添加和替换如何也用脚本完成??
仔细想想,挺有挑战性的。 :-)


下面这个是 ub 论坛上 BigSnake.NET 的 py 脚本,很暴力:D
==================================================
import sys, string, os

def TestSet():
    orig = 'int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }'
    for i in string.printable:
        for j in range(0, len(orig)):
            yield orig[:j]+i+orig[j:]
            yield orig[:j]+i+orig[j+1:]
            yield orig[:j] + orig[j+1:]

i = 0
for test in TestSet():
    src_name = str(i)+'.c'
    f = file(src_name,'w')
    f.seek(0)
    f.write(test+'\n')
    f.close()
    if os.system('gcc '+src_name+' 2> /dev/null') != 0 :
        os.system('rm '+src_name)
    else:
        print 'now a.out is ok', i
        os.system('./a.out | head -c 101 > result & sleep .2 ; killall a.out')
        f = file('result','r')
        f.seek(0)
        result = f.readline()
        f.close()
        if result == '#'*99:
            os.system('mv '+src_name+' ./99')
        elif result == '#'*1:
            os.system('mv '+src_name+' ./1')
        elif result == '#'*100:
            os.system('mv '+src_name+' ./100')
        else:
            os.system('rm '+src_name)
    i+=1

==================================================

Simon

unread,
Jul 4, 2008, 3:23:18 PM7/4/08
to 西邮Linux兴趣小组

问:实验室搬了吗?现在在哪啊?


On 7月3日, 下午1时58分, vvoody <wxj.g...@gmail.com> wrote:
> 某小朋友写了一段程序,想要打印 99 个'#':
>
> int i, n=99; main() { for(i=0; i<n; i--) { printf("#"); } }
>
> 但这显然是不对的。有如下问题:
>
> 1.请大家帮他改正, 但只允许 1) 删除一个字符 or 2) 增加一个字符 or 3) 改变一个字符
> 2.同样的限制条件, 使得只打印一个 '#'
> 3.同样的限制条件, 打印 100 个 '#'
>
> 可无视所有不合语言规范的东西.. 只要编译通过+答案正确就可以...
>
> ============================================================
> 很有意思啊:D

Jianjun Kong

unread,
Jul 4, 2008, 8:10:14 PM7/4/08
to Simon, 西邮Linux兴趣小组
On Fri, Jul 04, 2008 at 12:23:18PM -0700, Simon wrote:
>
>问:实验室搬了吗?现在在哪啊?

假期实验室照常开放。
请不要在任意主题下回复。

Reply all
Reply to author
Forward
0 new messages