这个C程序有什么问题

Sur*_*jRk 5 c for-loop

可能重复:
帮助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)

小智 26

这是一个经典的拼图!

我看到的方式是

"你只能在代码中更改/插入/删除一个字符,使 - 打印20次".

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

1)

 #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)

在这里,您更改i < n-i < n

2)

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

在这里,您更改i--n--

3)

 #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)

您更改i < ni+n.

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

  • +1使这成为一个难题.深思熟虑的答案. (3认同)

Jam*_*ong 24

 #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)

你有--而不是++

  • 是的,那个循环将永远运行,因为`i`从'0'开始并且不断变小.它永远不会大于*n*,因此永远不会达到循环的退出条件. (5认同)
  • 当整数环绕时,肯定会大于n?循环将比预期运行一段时间更长. (4认同)

Kir*_*oll 10

用i ++替换i--.