Video Ngôn Ngữ C - 19 - Cách thoát ra khỏi một vòng lặp? Dùng break

#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int n = 3;
    int i = 0;
    int j = 0;
    while (i < 10) {
        i++;
        while (j < 5) {
            j++;
            if (j == n )
                break;
            printf("i = %d, j = %d\n", i, j);
 
        }
        printf("da thoat khoi vong lap j\n");
    }
    printf("da thoat khoi vong lap i\n");
 
#Đăng ký khóa học C++ cơ bản 2016 ( NEW ) tại [đây](http://bit.ly/dangkymuakhoahoccpp) : 
#Thông tin về khóa học xem tại [đây](http://daynhauhoc.com/t/khoa-hoc-c-co-ban-2016/31306) : 

> -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 cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.
    return 0;
}

#Đă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 cũ giúp đỡ việc lắng nghe và hiểu được tốt hơn.

4 Likes

Bài tập cuối clip đó mn, code mình nó chỉ ra 1 lần lặp khi i=0, còn lại mấy lần lặp i=1,2,3,4,5,6,7,8,9 thì nó lại không ra mặc dù mình đã cho biến i++ rồi! không biết dùng sao cho đúng đây, mn giải thích mình với!

#include <stdio.h>
#include <conio.h>
void main()
{
    int n = 3, i=0, j=0;
    while (i < 10) {
        while (j < 5) {
            if (j == n)
                break;
            printf("i=%d, j=%d \n", i, j);
            j++;
        }
        printf("da thoat ra khoi vong lap j!\n");
        i++;
    }
    printf("da thoat ra khoi vong lap i!\n");
    getch();
}
1 Like

Là bởi vì j bây giờ lớn hơn 5 rồi, nên không thỏa điều kiện j < 5 nữa. Em phải gán j = 0 lại như bên dưới.

#include <stdio.h>
#include <conio.h>
int main()
{
    int n = 3, i=0, j=0;
    while (i < 10) {
        j=0; // Gán lại j = 0 ở đây
        while (j < 5) {
            if (j == n)
                break;
            printf("i=%d, j=%d \n", i, j);
            j++;
        }
        printf("da thoat ra khoi vong lap j!\n");
        i++;
    }
    printf("da thoat ra khoi vong lap i!\n");
    getch();
}
6 Likes

Đúng rồi ha, j=0 ở đó xong 1 vòng nó mới tăng j lên được, có vậy mà không nghĩ ra, dở thiệt, cám ơn a nhiều! :smile:

2 Likes

Mới học chưa quen thì bị vậy, lâu là em biết liền. Mà em nên tập debug. Anh có hướng dẫn cách debug ở đây

4 Likes

em thử debug rồi anh .
Nhưng xài Run to cursor là nó chạy lên nhưng tắt ngay lập tức.
anh giải thích giúp em đc ko

1 Like

Em nói vậy ít thông tin quá, anh không thể trả lời được. Em có thể miêu tả bằng source code, từng bước em làm. Có hình chụp càng tốt.

1 Like

bất kể source code gì luôn ấy anh .
helloword từ 1 đến 9 cũng bị.
Em làm theo a nhưng cứ RUN to cursor là nó nhảy chương trình xong tắt ngay lập tưc

Em đừng bấm Run to cursor, bấm vào next line. Run to cursor là nhảy tới vị trí con trỏ chuột, hiện con trỏ chuột đang nằm ở đâu nó nhảy tới đó.

3 Likes

Anh ơi tại sao i = 5 trở lên vậy, có cách nào đưa nó về 1 không

ko hiểu lắm, code của e đâu, quăng lên a xem thử

đây là hình, i lần lượt = 5, 6 , 7 8


Còn đây là code

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

int main()
{
    int n = 3;
    int i = 0;
    int j = 0;
    while( i < 10) {
        j = 0;
        while( j <5) {
            if(j == n)
                break;
            j++;
            printf("j = %d, i = %d\n", j, i);
        }
        i++;
        printf("Thoat khoi vong lap j\n",i);
    }
    printf("het vong lap");
    return 0;
}

code của em đây:

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

int main()
{
  int i = 0;

  while(i < 5){
          int j = 0;
    while(j < 5){
        j++;
        printf("i = %i,j = %i\n",i,j);
       }
     printf("da thoat ra khoi vong lap j\n");
    i++;
   }
   printf("thoat het!!\n");


  return 0;
}

CODE NÀY CHỈ CÓ CHUẨN :v
kéo lên bình luận thấy đầu tiên gắn i = 0 rồi ( int i = 0; ở code của bạn Neo Light Way)
nhưng sau khi khai báo: while (i < 10 { vẫn phải gắn lại j = 0; LÀ BỞI VÌ: code lúc này ở trong 1 khối lệnh khác khúc đầu gắn là nằm ngoài khối lệnh đang sài (2 khối lệnh này khác nhau. Giải thích vậy cho nó khỏi nhầm lẫn là tại sao phải gắn 2 lần :v)
=> gắn int j = 0; trog khúc while(đk) { lệnh } cho nó an toàn :v
theo tôi nghĩ là như vậy, ai giải thích dc hay hơn hoặc kêu t sai thì cho xin cho ý kiến :3 để rút kinh nghiệm.
p/s: code a đạt ko chạy dc thì phải

// my code:
#include <stdio.h>
#include <stdlib.h>

int main()
{
int n = 3;
    int i = 0;
    while (i < 10) {
			i++;
		int j = 0;
        while (j < 5) {
            j++;
            if (j == n )
                break;
            printf("i = %d, j = %d\n", i, j);
 
        }
        printf("da thoat khoi vong lap j\n");
    }
    printf("da thoat khoi vong lap i\n");


 system("pause");
 return 0;
}

anh đạt ơi cho em hỏi tại sao em làm giống anh thì nó ra kiểu này

mà khi em làm theo kiểu này nó lại ra được

ôi thank cậu nhé tui ngồi nghĩ nãy giờ sao code của anh đạt chạy không được
ai ngơ đâu thiếu j = 0 ở đó

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