代码之家  ›  专栏  ›  技术社区  ›  Sadique

无法解决有关此代码的难题

  •  5
  • Sadique  · 技术社区  · 14 年前

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

    删除 任何单个字符或运算符 从上面的代码和程序应该打印“-”20次

    请帮帮我!

    10 回复  |  直到 14 年前
        1
  •  24
  •   IVlad    14 年前

    我不认为你能做到这一点 删除 代替 (好吧,其中一个添加了一个字符,但这只是因为程序中没有空格。如果有空格,它将替换空格)。

    解决方案1

    int i,n=20;
    for(i=0;-i<n;i--) // -i < n 
        printf("-");
    

    解决方案2

    int i,n=20;
    for(i=0;i<n;n--) // n-- 
        printf("-");
    

    int i,n=20;
    for(i=0;i+n;i--) // while i + n is not zero 
        printf("-");
    
        2
  •  10
  •   Bill the Lizard    14 年前

    我在网上找到了这个问题的参考资料 C Puzzles

    下面是一段C代码,其目的是打印减号20次。但你可以注意到,这是行不通的。

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

    很好,修复上述代码是直截了当的。为了使问题变得有趣,您必须修改上面的代码,只需更改一个字符。有三种已知的解决方案。看看你能不能把这三个都弄到手。

    请注意,说明书上说:

    …你必须修复上面的代码 改变

    一个解决办法是改变 i-- n-- 在for循环的头中。

        3
  •  5
  •   AnT stands with Russia    14 年前

        4
  •  2
  •   Eric    14 年前
    int i,n=20;
    for(i=0;i<n;n--)
    printf("-");
    

    我不知道替换是否可以,但是将I——改为n——应该可以

        5
  •  2
  •   corsiKa    14 年前

    解决办法是改变<to+,将i更改为n,或者将for循环中间i之前的空格更改为a-(应该有空格)

    你的朋友不明白这个问题。:-)

        6
  •  1
  •   spinon    14 年前
    int i,n=20;
    for(i=0;i<n;i--) //change i-- to i++
    printf("-");
    

    编辑:您使用的是递减运算符而不是递增运算符。所以你希望它继续增加i直到它达到20。在这一点上它将停止,因为那时我将不再小于20,而是等于。

        7
  •  1
  •   Rob Kennedy    14 年前

    程序 - 20次,然后继续打印更多。拼图上没说需要打印出来 确切地

    如果您真的必须删除某些内容,那么您可以通过删除 --

    int i,n=20;
    for(i=0;i<n;i) // no more decrement
    printf("-");
    

    其他可以删除的字符是换行符。

        8
  •  0
  •   Heath Hunnicutt    14 年前

    我可以通过 添加 单个字符:

    int i,n=20;
    for(i=0; - i <n;i--)
        printf("-");
    
        9
  •  0
  •   NinjaCat    14 年前

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

    收件人:

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

    但我不明白你怎么只能删除一个字符或运算符。。。你必须这样 修改

        10
  •  0
  •   Lunivore    14 年前

    我已经好几年没做c了,我很迂腐,所以请原谅我,但是。。。程序不是已经打印了20次了吗?还有一些?

    如果你从“printf”中删除“f”,它不是继续打印“-”20次吗?至少?

    如果这是个诡计问题,也许这就是诡计。。。