通过改变一个字符来修复一个破碎的循环

Jav*_*ier 27 c puzzle code-golf

我找到了一个有一些复杂的C拼图的网站.现在我正在处理这个问题:

以下是一段C代码,其目的是打印减号20次.但你可以注意到,它不起作用.

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

修好上面的代码很简单.要使问题变得有趣,您必须通过更改一个字符来修复上述代码.有三种已知的解决方案.看看你能不能得到这三个.

我无法弄清楚如何解决.我知道它可以通过改变--来修复++,但我无法弄清楚要改变哪个单个字符才能使它工作.

Gab*_*yer 34

这是一个解决方案:

for( i = 0; -i < n; i-- )
        printf("-");
Run Code Online (Sandbox Code Playgroud)

这是第二个,感谢马克帮助我!

for( i = 0; i + n; i-- )
    printf("-");
Run Code Online (Sandbox Code Playgroud)

马克也有第三个

for( i = 0; i < n; n-- )
    printf("-");
Run Code Online (Sandbox Code Playgroud)

  • 我认为第二个需要`i + n`而不是`in`并且你拥有它.尼斯. (4认同)

Mar*_*ins 17

i--n--另一个.

好的 - Gab做了修复,所以我删除了另一个解决方案.他赢了!


Fel*_*ing 7

第三个答案:

for( i = 0; i + n; i-- )  
    printf("-"); 
Run Code Online (Sandbox Code Playgroud)

感谢Gab Royer的灵感.

说明:最终,i + n将导致-20 + 20 = 0哪个是false.