Hỏi về vòng lặp while

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

int main()
{
  int me_chua_ve =1;
int so_lan_me_chua_ve=0;
  while (me_chua_ve){
    printf("chay ra cua\n");
    if (so_lan_me_chua_ve > 50)
  break;
    else so_lan_me_chua_ve = so_lan_me_chua_ve + 1;

  }
  printf("ko chay nua , met roi \n");

    return 0;
}

chỗ đó mình để lớn hơn 50 nhưng khi cho chạy sao nó ra có 25 chữ " chạy ra cửa " vậy mọi người
cho mình hỏi thêm tại sao lại phải thêm lệnh : int so_len_me_chua_ve =0;
số 0 có ý nghĩa gì ạ
mình cảm ơn nhiều!!

Code của bạn chạy ra đúng 50 lần mà có sai chỗ nào đâu.

mình chạy code của bạn ra đúng 50 lần mà nhỉ.
phải thêm [quote=“vinhthang, post:1, topic:40743”]
int so_lan_me_chua_ve=0;
[/quote]
vì nếu không khai báo giá trị của biến này thì lệnh if sẽ không chạy được.
mặc định nếu biến được khai báo cục bộ thì giá trị sẽ không được khai báo, còn biến toàn cục thì mặc định của int là 0.
Nếu để như thế này thì cũng chạy ra đúng kết quả.

Nếu minh cho >2 thi đến dòng thứ 3 nó phải ra chữ " không chạy nữa , mệt rồi "chứ mn, sao lại đến dòng thứ 5 được

cục bộ với toàn cục là sao ạ

cho em hỏi thêm chỗ này sao lại đến dòng thứ 5 mới ra chữ " không chạy nữa ,mệt rồi "
trong khi trong code em để >2

về biến cục bộ và toàn cục bạn có thể tìm hiểu trên mạng nhé.
Đoạn code của bạn chạy như sau:

  • vòng lặp 1: me_chua_ve = 1 -> in ra lần 1 -> so_lan = 1 -> quay lại vòng while
  • vòng lặp 2: me_chua_ve = 1 -> in ra lần 2 -> so_lan = 2 -> quay lại vòng while
  • vòng lặp 3: me_chua_ve = 1 -> in ra lần 3 -> so_lan = 3 -> quay lại vòng while
  • vòng lặp 4: me_chua_ve = 1 -> in ra lần 4 -> so_lan > 2 nên break
  • in ra câu Không chạy nữa.
    vì bạn để câu printf trước câu lệnh if nên khi chạy lại vòng while thì sẽ luôn in ra câu “chạy ra cửa” mà

đáng lẽ đến vòng lặp 3 thì nó phải ra chứ : ko chạy nữa chứ anh

khi kết thúc lần thứ in thứ 2 thì máy nó phải hiểu là chuẩn bị đến lần in thứ 3 mà 3>2 nên chỉ cần in chứ : ko chạy nữa " là được chứ a,theo em hiểu là như vậy đó a

Bạn nên đọc lại kĩ comment của bác @laaura . do bạn để prinf ở trước if. Nên nó in ra trước khi xác định số lần mẹ về (x) nó có lớn hơn 2 không.
Printf -> x có lớn hơn 2 không? Ko à? Cho x = 1
Printf -> x có lớn hơn 2 không? Ko mới =1 thôi. Cho x = 2
Printf -> x có lớn hơn 2 không? Không, tao vẫn bằng 2. Cho x = 3 ( nhưng do đặt if sau print nên lần tiếp theo nó mới xác định x = 3 có lớn hơn 2 không.)
Printf - x = 3. À lớn hơn 2 rồi. Dừng chương trình in ra không chạy nữa mệt rồi

bạn ở trên trả lời ý mình rồi đấy. câu lệnh thực hiện từ trên xuống dưới, gặp đến đâu thì thực thi đến đó luôn :blush:

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