这个C程序有什么问题

时间:2010-08-11 18:28:26

标签: c for-loop

  

可能重复:
  Help with C puzzle

该计划的目的是打印一个减号20次,但它不起作用。

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

9 个答案:

答案 0 :(得分:26)

这是一个经典的谜题!

我看到它的方式是

“您只能更改/插入/删除代码中的一个字符,以便 - 打印20次”。

有些答案(如果我没记错的话)

1)

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

您可以在此处将i < n更改为-i < n

2)

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

您可以在此处将i--更改为n--

3)

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

您将i < n更改为i+n

对于挑战,请尝试更改/插入/删除一个字符,使其打印 - 21 次。 (如果您想尝试,请不要阅读此答案的评论!)

答案 1 :(得分:24)

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

您有--而不是++

答案 2 :(得分:10)

用i ++替换i--。

答案 3 :(得分:4)

int main() { 
  int i; 
  int n = 20; 
  for( i = 0; i < n; i++)
    printf("-"); 
  return 0; 
}

你减少而不是增量。

答案 4 :(得分:2)

您是否尝试过更改

i--

i++

只要“i”小于20,就有循环打印出“ - ”。 每次循环后,您将i的值减1,它将继续打印 很长一段时间将for循环的最后部分更改为“i ++”意味着它将在每个循环中执行一次迭代,并在第二十次迭代完成后停止。

答案 5 :(得分:2)

将i--改为i ++。 i--减少开始时的值为0,随后的减少量不会达到20(或+20)。

答案 6 :(得分:1)

< - > i--需要是i ++

你也可以

 int n = -20;
  for( i = 0; i > n; i-- )

但这是糟糕的编码习惯

答案 7 :(得分:1)

你究竟想要解决这个问题??? 在这里,你试图减少变量的值......一个变量的值,它的值永远不会达到你提供的条件(i <20)...因此它将继续打印' - ',直到指定了什么,即{ {1}}。它会成为+ ve。我刚试过这个程序。

i= -2^31

根据您提出的问题,#include <stdio.h> int main() { int i; int n = 20; for( i = 0; i < n; i-- ) printf("-"); return 0; } 应该递增,即i而不是i++

@jamie wong:thanx man..learnt关于环绕的新事物....

答案 8 :(得分:-1)

你不会打印破折号。你可以选择Jaime Wong的解决方案,也可以这样做:

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