01/10/2018, 08:24

Tại sao sau khi mình chuyển thành while thì vòng lặp a chỉ chạy 1 lần?

mình là newbie và có học giáo trình c của a Đạt thì có bài tập 19 cấu trúc while như sau:

    int a = 5;
    for (int b = 0; b < 10; b++) {
        //printf("b = %d
",b);
        //if (b == a)
            //break;
        for (int c = 0; c < 5; c++){
            printf("b = %d,c = %d
",b,c);
        }
        printf("da thoat khoi vong lap c
");
    }
    printf("da thoat khoi vong lap  b
");

While:

int a = 0;
    int  b = 0;
    while (a < 10) {
        while (b < 5) {
            printf("a = %d, b = %d
",a,b);
            b++;
        }
        printf("thoat khoi vong lap b
");
        a++;
    }
    printf("thoat khoi vong lap a
");
    
}

SAU KHI MÌNH CHUYỂN THÀNH WHILE THÌ VÒNG LẶP A CHỈ CHẠY 1 LẦN,CÓ AI GIẢI THÍCH GIÚP MÌNH ĐƯỢC KO?

viết 10:34 ngày 01/10/2018

Vòng lặp while (a < 10) {} có chạy 10 lần nhé.

Kay viết 10:36 ngày 01/10/2018

Vòng lặp while (a < 10) {} có chạy 10 lần nhé.

vậy là code while của mình đúng hả b?

Kay viết 10:37 ngày 01/10/2018

Vòng lặp while (a < 10) {} có chạy 10 lần nhé.

nó chỉ in ra số lần printf chứ ko in ra giá trị của a và b nữa

rogp10 viết 10:30 ngày 01/10/2018

Vòng lặp biến b chạy đúng 1 lần vì đoạn for nó còn có khởi tạo nữa bạn.

Kay viết 10:33 ngày 01/10/2018

Vòng lặp biến b chạy đúng 1 lần vì đoạn for nó còn có khởi tạo nữa bạn.

vậy nếu chuyển biến từ for thành while để ra kết quả tương tự như code trên thì làm như thế nào b? vì bài tập của a Đạt yêu cầu chuyển từ for thành while để ra kết quả tương tự @rogp10

Kay viết 10:26 ngày 01/10/2018

@ltd a có thể giúp e được ko?

*grab popcorn* viết 10:35 ngày 01/10/2018

Sau câu “thoát khỏi vòng lặp b” bạn in b và sau câu “thoát khỏi vòng lặp c” của ct 1 bạn in c ra rồi nhìn 2 giá trị và so sánh là hiểu.

Kay viết 10:29 ngày 01/10/2018

Sau câu “thoát khỏi vòng lặp b” bạn in b và sau câu “thoát khỏi vòng lặp c” của ct 1 bạn in c ra rồi nhìn 2 giá trị và so sánh là hiểu

b có thể viết lại đoạn đó được ko?

*grab popcorn* viết 10:29 ngày 01/10/2018

b có thể viết lại đoạn đó được ko?

Đây nhé

for (int b = 0; b &lt; 10; b++) {
        //printf("b = %d\n",b);
        //if (b == a)
            //break;
        for (int c = 0; c &lt; 5; c++){
            printf("b = %d,c = %d\n",b,c);
        }
        printf("c = %d\n", c);
        printf("da thoat khoi vong lap c\n");
    }
while (a &lt; 10) {
        while (b &lt; 5) {
            printf("a = %d, b = %d\n",a,b);
            b++;
        }
        printf("thoat khoi vong lap b\n");
        printf("b = %d\n", b); 
        a++;
    }
Lam Nguyen viết 10:33 ngày 01/10/2018

Biến b = 0 bạn khởi tạo bên trong vòng lặp while ( a < 10) và ngay trước vòng while ( b < 5 ) nhé!!

Bài liên quan
0