请理清这个嵌套循环,请用通俗易懂的话解释一下

#include
int main()
{
int j = 0;
for(int i = 0;i<=30;i++)
{
j += i;
if( i%2==0 && i%3 == 0)
{
printf("%d\n",j);
j = 0;
}
while(j)
{
printf("hello\n");
break;
}
}

return 0;

}

序数不代表每条语句执行顺序,表示大致流程

img

首先放到代码块里看得更清晰一点

#include <stdio.h>
int main() {
    int j = 0;
    for (int i = 0; i <= 30; i++)
    {
        j += i;
        if (i % 2 == 0 && i % 3 == 0)
        {
            printf("%d\n", j);
            j = 0;
        }
        while (j)
        {
            printf("hello\n");
            break;
        }
    }
    return 0;
}

for循环是从0到30对i进行一个遍历,j存储的是i当前值对应的数列之和
if语句中判断i当前值是否同时对2和3取余所得值为0(也就是 是否为6的倍数)
如果为真,则输出j当前值,并将j置为0;
如果为假,则继续进行累加。
while语句判断当前j值是否为0,如果为0(if中判断为真)则不执行语句,继续循环。
如果不为0则执行输出hello语句,随后break跳出。
需要注意的是每次i找到6的倍数并输出j后,j会置为0