我很好奇并尝试了一些关于循环的事情,我在这里有点困惑。
问题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);
}
}
答案 0 :(得分:2)
因为当a
在内循环中达到10时,外循环也会退出,所以你只看到
012345678910
因为在第一次执行外循环后,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)
外圈和内圈有相同的计数器,在这种情况下不正确。使用计数器a
和b
然后循环应该有效。
内循环b
在第一次迭代后保持11,如果你想在你的内循环中实现预期的结果添加b = 0