30/09/2018, 17:18

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.

Trịnh Minh Cường viết 19:19 ngày 30/09/2018

Bạn tô đen code và dùng tổ hợp phím Ctrl + k để code dễ nhìn hơn nhé , à 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é , có rất nhiều cách, còn tùy vào trường hợp nữa.

Mai Anh Dũng viết 19:33 ngày 30/09/2018

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;
}
Nguyễn Chiến Thắng viết 19:30 ngày 30/09/2018

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;
}
viết 19:23 ngày 30/09/2018

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

Mai Anh Dũng viết 19:19 ngày 30/09/2018

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ư:

Tình hình là em thắc mắc mình có nên sử dụng goto hay ko, em có 1 bài là tổng hợp rất nhiều bài tập đã làm thành một menu sử dụng switch case, có thể gồm nhiều switch trong case chính. (nghĩa là trong menu chính có các lệnh case như case 1:. khi vào case 1 thì nó lại gồm 1 menu khác). Em có viết được hàm quay lại menu chính nhưng ko gộp vào được khi 2 switch case, xưa giờ e nghe nói ko nên sử dụng goto, nhưng hôm nay e test thì khá là tiện để làm bài của em. Em hỏi có nên lạm dụng nó ko? p/s:…
Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại đây : Thông tin về khóa học xem tại đây : -Sự khác biệt giữa 2 khóa học cũ và mới : +Khóa học C++ cơ bản 2016 là khóa học mới, được đầu tư nhiều hơn từ nội dung, phương pháp học, cách học hiệu quả. +Trong khóa học còn có nhiều kiến thức mới như thực hành trên HackerRank, thực hành trên Codefights và Đạt nghĩ mọi người nên học khóa học mới, bởi vì đây là kiến thức mới, phù hợp với hiện tại..... Mặt khác âm thanh cũng tốt hơn nhiều so với khóa học …
viết 19:31 ngày 30/09/2018

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

Bài liên quan
0