帮我分析下这个C语言的嵌套是怎么执行的

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:41:05
某地需要搬运砖块,已知男人一人搬3块,女人
一人搬2块,小孩两人搬一块。
问用45人正好搬45块砖,有多少种搬法?

for (men = 0; men <= 45; men++)
for (women = 0; women <= 45; women++)
for (child = 0; child <= 45; child++)
if ((men+women+child==45) && (men*3+women*2+child*0.5==45))
printf("men=%d women=%d child=%d\n", men, women, child);

帮我分析下循环执行的顺序是怎样的,for语句怎么没有{},这3个for连在一起是怎么执行的啊

执行顺序前提说明:
最外层循环是for (men = 0; men <= 45; men++) ,男人数量
中间层循环是for (women = 0; women <= 45; women++) ,女人数量
最内层循环是for (child = 0; child <= 45; child++) ,小孩数量
判断语句是当男人女人小孩加一起是45人,搬砖数量正好是45块的时候,打印男人、女人、小孩的数量。
执行顺序说明:
男人为0、女人为0时,小孩从0循环到小孩为45时,依次是否满足判断条件。
然后进行中间层循环、然后是最外层循环。
等价于:每一次最外层循环,都有45次中间层循环,因此有45*45此最内层循环。
此乃三层循环结构,所执行语句相当多。

for语句没有{}
原因是,for语句后面只有一句执行语句时可以省略大括号。由于for()+执行语句是一个完整的c语句,因此三层循环可以这样写。但是这样的编码规范很不好。

三个for连载一起,相当于:
for (men = 0; men <= 45; men++)
{
for (women = 0; women <= 45; women++)
{
for (child = 0; child <= 45; child++)
if ((men+women+child==45) && (men*3+women*2+child*0.5==45))
{
printf("men=%d women=%d child=%d\n", men, women, child); 、
}
}
}

for语句和if差不多 只有一个语句(不是一行 是完整语句)时候是不用{}的 说要这个是三层嵌套语句是if语句(包括printf)
另一种理解一个语句就是有没有分号 没在末尾有分号或者{}的都不算一整条语句

for (men = 0; men <= 45; men++)
{ <