我在下面的循环中得到一个不寻常的输出。在我的编译器中运行时,输出为233445
。为什么我在下面的循环中获得此输出? 7
将是此循环的唯一合理输出,为什么7
语句在循环内部时不能获得printf
?
#include <stdio.h>
#include <stdlib.h>
int main() {
int i;
int j;
for (i = 1; i < 4; i++)
for (j = 1; j < 3; j++)
printf("%d", i + j);
}
答案 0 :(得分:6)
为什么我在下面的循环中获得此输出?
制作图表,你会看到。
i | j | i+j
--+---+----------------------------
1 | 1 | 2
1 | 2 | 3
1 | 3 | (get out of the inner loop)
2 | 1 | 3
2 | 2 | 4
2 | 3 | (get out of the inner loop)
3 | 1 | 4
3 | 2 | 5
3 | 3 | (get out of the inner loop)
4 | - | (get out of the outer loop)
当
7
语句在循环中时,为什么我不能得到printf
?
因为i<4
和j<3
,所以i+j < 4+3
并且它意味着i+j<7
,所以i+j
在循环中不会是7
。
答案 1 :(得分:1)
#include <stdio.h>
#include <stdlib.h>
int main () {
int i ;
int j ;
for( i=1; i<4;i++)
for(j=1;j<3;j++)
printf("%d",i+j);
}
代码以i = 1
开头三次运行外循环。它转到内部循环并从j = 1
开始运行两次。然后它为第一个循环打印2,3
,为第二个循环打印3,4
,为第三个循环打印4,5
。
为了清晰起见,我添加了逗号并显示内部循环确实运行了两次,但实际输出为233445
,因为您没有添加任何分隔符或换行符。
如果您希望使用循环7
作为输出,请尝试:
#include <stdio.h>
#include <stdlib.h>
int main () {
int i ;
int j ;
for( i=4; i<5;i++) { // this brace means it contains the inner loop.
for(j=3;j<4;j++) { // this inner brace means it contains control of the statement.
printf("%d",i+j); // and always remember to indent for your readers
} // close the inner brace!
} // close the outer brace!
} // close main brace
或者,您可以尝试使用循环递增数字,然后将其打印在循环之外,正如其他人提到的那样:
#include <stdio.h>
#include <stdlib.h>
int main () {
int i ;
int j ;
for( i=1; i<4;i++) { // this brace means it contains the inner loop.
for(j=1;j<3;j++) { // this inner brace means it contains control of the statement.
} // close the inner brace!
} // close the outer brace!
printf("%d",i+j); // 7
} // close main brace
答案 2 :(得分:0)
是的,printf
语句在循环中。要获得7
,请在循环后放置{}
将其从循环中取出。