Thắc mắc về vòng lặp For và While

em muốn hỏi tại chỉ thay lệnh for bằng lệnh while mà code dưới không chạy đúng như code trên ạ !

code1 :

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

int main()
{for(int i=0; i<10; i++)
{int y=0;
    while(y<5)
      {
        printf("gia tri cua i la %d gia tri cua y la %d \n",i, y);
        y++;

         }
    printf("da thoat vong lap y\n");
}
printf("da thoat vong lap i \n");
}

code2:

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

int main()
{for(int i=0; i<10; i++)
{int y=0;
    for(int y=0; y< 5; y++);
      {
        printf("gia tri cua i la %d gia tri cua y la %d \n",i, y);

         }
    printf("da thoat vong lap y\n");
}
printf("da thoat vong lap i \n");
}

Bạn hãy nhìn kĩ lại vòng for của bạn

    for(int y=0; y< 5; y++);
      {
        printf("gia tri cua i la %d gia tri cua y la %d \n",i, y);

         }

Sau for; do đó câu lệnh for sẽ dừng ở đó, còn cái scope ở dưới không hề bà con với câu lệnh for :slight_smile:. Có nghĩa là nó đã chạy được 5 lần rồi, tiếp đến là sẽ chạy cái scope ở dưới của bạn

1 Like

Bạn nên tránh việc khai báo 2 biến cùng tên trong cùng một Scope vì nó dễ gây khó hiểu cho bạn và cả máy tính là đang thực hiện với biến nào.

2 Likes

em hiểu rồi ạ !! cảm ơn bác :v

1 Like
for (int y = 0; y < 5; ++y); {
	
	 printf("gia tri cua i la %d gia tri cua y la %d \n",i, y);
}

  • Vòng for coi như mất tác dụng bạn chỉ cần bỏ dấu chấm phẩy đi là được nhưng lưu ý đừng có đặt tên biến tùy tiện nha !
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?