输出一个简单的for循环?

时间:2017-10-16 01:47:42

标签: c

我对c编程非常陌生。以下程序的输出是 一二二一,但我不知道为什么。任何人都可以向我解释这个吗?

  #include <stdio.h>
  {
  int i, j, k = 100;
  for(i=0;i<2;i++)
  {
     printf("One");
     for(j=0;k;j++)
        {
           printf("Two");
           k -=50;
        }
     }
     return 0;
  }

1 个答案:

答案 0 :(得分:0)

外循环:

外部for循环执行两次。因为我从0开始,条件i<0被满足,所以它运行。运行后,我增加到1,再次运行,我增加到2,然后不运行,因为条件i<2不再满足。这就是你的两个输出&#34; one&#34;来自。

内环:

每次外循环运行时,都会创建内部for循环。 j从0开始,但内循环的条件只是k。首先,k设置为100.这里是凌乱的地方。为了使for循环运行,条件必须是&#34;而不是false&#34;。 False可以是0的数值,也可以是null。因为它不是内部for循环中的任何一个运行,并且除非条件由for循环之外的东西手动更改,否则它将永远运行。幸运的是,它实际上是在for循环中更改并且在运行两次之后(并且输出two两次),k的值现在为0并退出循环。

把它们放在一起:

总而言之,执行顺序为:

  1. 外圈(i=0"one"被打印)
  2. 内循环(j = 0,k = 100,"two"被打印)
  3. 内循环(j = 1,k = 50,"two"被打印)
    • k = 0,内循环完成(注意j在这里没有使用)
  4. 外部循环(i = 1,"one"被打印)
    • k = 0,内部循环甚至不执行一次
    • i = 2,外循环完成