【问题标题】:Why does this program not give the expected output?为什么这个程序没有给出预期的输出?
【发布时间】:2023-04-09 14:35:01
【问题描述】:

这个程序(C 语言)没有输出我所期望的:

int main()
{
    int i, j ;
    for ( i = 1 ; i <= 2 ; i++ )
    {
        for ( j = 1 ; j <= 2 ; j++ )
        {
            if ( i == j )
                continue ;
            printf ( "\n%d %d\n", i, j ) ;
        }
    }
}

我觉得应该是

1 2 1 3 2 1 2 3

但是程序输出

1 2 2 1

这是为什么?

【问题讨论】:

  • 问题是:为什么你认为它应该以 1 3 而不是 1 2 开头?
  • 在第二次执行 printf 之后,即在打印 1 2 之后,控件重定向到内部 for 循环,在验证条件 "j
  • 如果没有if,您期望什么输出?
  • 控件甚至在增加它之后验证条件,所以 3 结果是 false ,因此输出。
  • @pmg 没有 "if" 输出将是 1 1 1 2 2 1 2 2

标签: c for-loop int


【解决方案1】:

循环的索引永远无法达到第 3 位。

【讨论】:

    【解决方案2】:

    ij 的值经过这个序列:

    i j
    ---
    1 1
    1 2
    2 1
    2 2
    

    请注意,i++j++ 增量发生在循环体的每次迭代之后

    您的printf 被调用的唯一情况是ij 不同。这意味着你得到:

    1 2
    2 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多