Vòng lặp while lặp mãi mãi trong C?

Em đang tự học lập trình qua kênh youtube của anh Đạt và muốn hỏi rằng: Vòng lặp while khi viết code như vây nó sẽ chạy mãi:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x=3;
    while(x)
        printf("%d ",x);
    return 0;
}

*Khi muốn dừng thì phải thêm vào dể nó thành thế này:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x=3;
    int y=1;
    while(x)
    {
        printf("%d ",x);
        if(y>100)
            break;
        else
            y++;
    }
    return 0;
}

==> Vậy những dòng thêm vào đó là cách duy nhất để dừng vòng lặp while mà khi muốn xuất ra 1 chuỗi kí tự dài phải không ? Cảm ơn mấy anh chị nhiều.

Bạn tô đen code và dùng tổ hợp phím Ctrl + k để code dễ nhìn hơn nhé :slight_smile: , à mà cái cách đó không phải là cách duy nhất để dừng một vòng lặp while bạn nhé :slight_smile: , có rất nhiều cách, còn tùy vào trường hợp nữa.

2 Likes

Cách dừng vòng lặp này là ta dừng bằng cách break tức nhảy ra khỏi vòng lặp từ bên trong nó.

Cách khác là ta đảm bảo điều kiện ở while không còn đúng nữa. Thì vòng lặp sẽ dừng lại.

Ví dụ như ở đây anh giảm x sau mỗi lần lặp, cho tới khi x == 0 tức là không còn đúng nữa. Trong C thì 0 có nghĩa là sai, khác 0 có nghĩa là đúng.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int x=3;
    while(x) {
        printf("%d ",x);
        x = x - 1;
    }
    return 0;
}
4 Likes

Ngoài ý kiến mọi người ra mình thấy còn có cách dùng goto để nhảy ra khỏi vòng lặp nữa:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int x=3;
    int y=1;
    while(x)
    {
        printf("%d ",x);
        if(++x>100)
            goto ngoai;
    }
    ngoai:
    return 0;
}

goto theo mình nghĩ là chắc làm khó fix lỗi, nâng cấp về sau

Không hẳn, nếu mình biết sử dụng goto đúng cách thì không vấn đề gì cả. Diễn đàn có vài topic nói về goto. Ví dụ như:

1 Like

thi học kỳ xong phải đọc ngay cuốn Code Complete 2 mới đc :angry:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?