Fixing a broken loop by changing exactly one chara

2019-01-16 16:25发布

I found a site with some complicated C puzzles. Right now I'm dealing with this:

The following is a piece of C code, whose intention was to print a minus sign 20 times. But you can notice that, it doesn't work.

#include <stdio.h>
int main()
{
    int i;
    int n = 20;
    for( i = 0; i < n; i-- )
        printf("-");
    return 0;
}

Well fixing the above code is straight-forward. To make the problem interesting, you have to fix the above code, by changing exactly one character. There are three known solutions. See if you can get all those three.

I cannot figure out how to solve. I know that it can be fixed by changing -- to ++, but I can't figure out what single character to change to make it work.

8条回答
ゆ 、 Hurt°
2楼-- · 2019-01-16 16:54
    for( i = 0; i < n; n-- )  
    printf("-");  

Changed i-- to n--

查看更多
够拽才男人
3楼-- · 2019-01-16 16:59

Solution 1

#include <stdio.h>
int main()
{
    int i;
    int n = 20;
    for( i = 0; i < n; n-- ) // Change i-- to n--
        printf("-");
    return 0;
}

Solution 2

#include <stdio.h>
int main()
{
    int i;
    int n = 20;
    for( i = 0; -i < n; i-- ) // Compare to -i
        printf("-");
    return 0;
}

Haven't figured a third.

查看更多
Explosion°爆炸
4楼-- · 2019-01-16 17:01

Change i-- to n-- is another.

Okay - Gab made the fix, so I removed the other solution. He wins!

查看更多
女痞
5楼-- · 2019-01-16 17:03

Here's one of them, I think:

for( i = 0; i < n; n-- )
查看更多
你好瞎i
6楼-- · 2019-01-16 17:07

Here is one solution:

for( i = 0; -i < n; i-- )
        printf("-");

Here is a second one, thanks to Mark for helping me!

for( i = 0; i + n; i-- )
    printf("-");

And Mark also had the third one which is

for( i = 0; i < n; n-- )
    printf("-");
查看更多
该账号已被封号
7楼-- · 2019-01-16 17:11

The comparison in the for loop can be any expression - you can negate i.

for (i = 0; -i < n ; i--)
查看更多
登录 后发表回答