01/10/2018, 08:13

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
");
    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 
");

    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!!

Viet Son viết 10:27 ngày 01/10/2018

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

Huy viết 10:23 ngày 01/10/2018

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ả.

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

int so_lan_me_chua_ve;

int main()
{
int me_chua_ve =1;
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;

}

Vinh viết 10:24 ngày 01/10/2018

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

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

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

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

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

Huy viết 10:24 ngày 01/10/2018

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
Screenshot (18).png1366x768 80.4 KB

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à
Vinh viết 10:18 ngày 01/10/2018

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

Vinh viết 10:13 ngày 01/10/2018

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

Zhang Jike viết 10:19 ngày 01/10/2018

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

Huy viết 10:24 ngày 01/10/2018

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

Bài liên quan
0