Em đang học loop đến cái do-while này e chưa hiểu lắm ạ. tại sao khi chạy chương trình e nhập 3 vẫn trong khoảng 1-3 mà chương trình không lặp được ạ. hoặc e nhập 0 ngoài khoảng 1-3 thì vẫn lặp được ạ. Mong mọi người thông não ạ
#include <stdio.h>
#include <math.h>
int main()
{
int i;
do
{
printf("\nMenu:\n1.Tinh dien tich hinh vuong\n2.Tinh giai thua cua mot so\n");
printf("Moi ban chon 1-2: ");
scanf("%d", &i);
if(i == 1)
{
int length,area;
printf("Moi ban nhap do dai canh: ");
scanf("%d",&length);
area=(int)pow(length,2);
printf("Dien tich hinh vuong la: %d\n",area);
}
else if(i == 2)
{
int n,i;
printf("nhap vao mot so: ");
scanf("%d",&n);
long int giai_thua;
giai_thua = 1;
for (i=1;i<=n;i++)
giai_thua=giai_thua*n;
printf("giai thua cua so %d la %d",n,giai_thua);
}
else printf("Khong phu hop moi ban nhap lai \n");
i++;
}while(i>=1 && i<=3);
}