循环程序输出

时间:2017-11-16 06:19:19

标签: c loops

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

问题1: 为什么这段代码输出012345678910而不是00000000000111111111112222222222233333333333444444444445555555555566666666666777 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);
    }
}

3 个答案:

答案 0 :(得分:2)

  1. 因为当a在内循环中达到10时,外循环也会退出,所以你只看到

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

    对于所需的输出,每次执行外循环时都应将b重置为零

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

  1. 外圈和内圈有相同的计数器,在这种情况下不正确。使用计数器ab然后循环应该有效。

  2. 内循环b在第一次迭代后保持11,如果你想在你的内循环中实现预期的结果添加b = 0