new看到的一段代码中的疑问

第一次学习c语言 遇到问题

请问teacher们这段代码的后一段中excit=1;break等等作用是什么吖

#include

int main() {
int x;
int one, two, five;
int exit = 0;

scanf("%d", &x);
for ( one = 1; one < x * 10; one++ ) {
    for ( two = 1; two < x * 10 / 2; two++ ) {
        for ( five = 1; five < x * 10 / 5; five++ ) {
            if ( one + two * 2 + five * 5 == x * 10 ) {
                printf("可以用%d个1角加%d个2角加%d个5角得到%d元\n",
                       one, two, five, x);
                exit = 1;
                break;
            }
        }
        if ( exit == 1 )
            break;
    }
    if ( exit == 1 )
        break;
}
return 0;

}

当最内层循环中找到一个符合条件的结果时,通过这个exit标志量,实现逐个外层循环跳出。也就是说,当exit=1时,希望退出所有循环。

代码有3层循环,break的作用是退出本层循环,所以在最内层循环break之后只是退出最内层的循环,外面1、2 层循环还会继续,所以为了实现最内层if满足后退出所有循环,设置一个标志exit,初始值为0,最内层if满足时将exit值变为1并退出最内层,外层通过exit值判断是否退出