【问题标题】:Loop program output [closed]循环程序输出[关闭]
【发布时间】:2017-11-16 06:19:19
【问题描述】:

我很好奇并尝试了一些循环,在这里我有点困惑。

问题 1: 为什么此代码输出 012345678910 而不是 000000000001111111111122222222222333333333334444444444455555555555566666666666777 7777777788888888888999999999991010101010101010101010 ?

for(a=0;a<=10;a++){
    for(a=0;a<=10;a++){
        printf("%d", a);
    }
}

问题2:对于如下所示的代码,取出第一个语句是否意味着它会从0开始?如果是,那么为什么它输出 12345678910 而不是 01234567891001234567891001234567891001234567891001234567891001234567891001234567 8910012345678910012345678910012345678910012345678910 ?

for(a=0;a<=10;a++){
    for(;b<=10;b++){
        printf("%d", b);
    }
}

【问题讨论】:

  • 那你是怎么初始化b的?
  • 你在 2 循环中迭代同一个变量 a

标签: c loops


【解决方案1】:
  1. 因为当a在内循环中达到10时,外循环也退出了,所以你只看到

    012345678910
    
  2. 因为第一次执行外循环后,b已经是11,不再执行内循环。

    对于您想要的输出,您应该在每次执行外循环时将b 重置为零

    for (...) {
        for (b = 0; ... ; ...) {...}
        //   ^~~~~ This is what you should do
    }
    

【讨论】:

    【解决方案2】:

    对于第一个,您没有得到答案,因为您在内循环中使用了相同的计数器变量:

    修改它以使用不同的变量:

    for(int a=0;a<=10;a++){
        for(int b=0;b<=10;b++){
            printf("%d", a);
        }
    }
    

    【讨论】:

      【解决方案3】:
      1. 外循环和内循环的计数器相同,在这种情况下是不正确的。使用计数器ab 然后循环应该可以工作。

      2. 在内部循环中b 在第一次迭代后保持 11,如果您想达到预期的结果,请在内部循环中添加 b = 0

      【讨论】:

        猜你喜欢
        • 2015-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-14
        • 2021-12-31
        相关资源
        最近更新 更多