-4
#include<stdio.h>
#include<conio.h>

void main()
{
    int i, j, k, l;
    i = j = 0;
    clrscr();

    for(k = 0; k < 3; k++)
    {
        printf("Flag A\t");

        for(l = 0; l < 2; l++)         
        { 
            printf("Flag B\t");
            if(i == 5)
            {
                printf("Flag C\t");

                if(j == 5)
                {
                    printf("Flag D\n");
                    break;
                }
            }
            i++;
            j++;
        }
    }

    printf("Value of i=%d,j=%d,k=%d,l=%d", i, j, k, l);
    getch();
}

上記のコードの出力をトレースすると、次のようになります。

Flag A Flag B Flag B Flag A Flag B Flag B Flag A Flag B Flag B Flag C Flag D 

values of i=5 j=5 k=3 l=1

私は手動で同じ答えを得ます。また、私の質問は次のとおりです。出力をトレースすると、i=5 および j=5 のときにブレーク条件が発生します。その際、制御は 2 つifのループとループを中断し、l forループの次の反復から開始されk forます。breakそれは(3つのループ内にネストされているときに3つのネストされたループをクラックする)の通常の動作ですか、それともループの組み合わせが原因で発生しますか?ループの他の可能な組み合わせを使用するとどうなりますか? break他のループの複数の組み合わせで使用した場合のステートメントの動作を説明してください。動作も含めて説明してくださいswitch

4

1 に答える 1

2

ifはループとは見なされないことに注意してください。むしろ、それは決定構造です。

この例にあるループは 2 つのforループだけです。breakは、最も内側のforループの実行を停止します。

于 2014-09-07T05:58:08.587 に答える