Gets không chạy được trong switch case

Em mới học lập trình cho e hỏi sao gets của em ko chạy

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

int main()
{   int ng=0,ns=0,nc=0,songuoi=0,k;
float M=0,MAX=0;
    do
    {
        printf("----------------Menu-------------------\n");
    printf("1.Nhap du lieu/In hoa don cho benh nhan\n");
    printf("2.Ket qua bao cao\n");
    printf("3.Tat chuong trinh\n");
    printf("---------------------------------------\n");
    printf("Vui long chon :");
    scanf("%d",&k);

    switch(k)
    {
    case 1 :
        {  int tuoi,n,m,kt,pt=0;
          float fee,g;
    char a[30],the;
    printf("\tDay la he thong thanh toan tu dong cua benh vien\n");
    printf("\tVui long benh nhan nhap thong tin\n");
    printf("Ho va ten : ");
    gets(a);
    printf("Tuoi :");
    scanf("%d",&tuoi);
    printf("So ngay nam vien :");
    scanf("%d",&n);

    printf("Tien thuoc (VND) :");
    scanf("%d",&m);

    printf("Tien phau thuat (Neu co vui long go '1' khong co vui long go '0'):");
    scanf("%d",&kt);

    if(kt==1)
    {
        printf("Tien phau thuat :");
        scanf("%d",&pt);

    }while(getchar()!='\n')
    printf(" The bao hiem y te :\n");
    printf("The Gold : Xin nhap G\n");
    printf("The Silver : Xin nhap S\n");
    printf("The Citizen : Xin nhap C\n");
    printf("Vui long nhap the cua quy khach :");
    scanf("%c",&the);

    printf("\n");
    printf("\tHoa Don Thanh Toan\n");
    printf("%-20s%-20s\n","Benh nhan",a);
    printf("%-20s%-20d\n","Tuoi",tuoi);
    printf("%-20s%dx150000=%d VND\n","Vien phi",n,n*150000);
    printf("%-20s%-20d\n","Tien thuoc",m);
    if(kt==1)
    {
        printf("%-20s%-20d\n","Tien phau thuat",pt);
    }
    printf("%-20s%-20c\n","The bao hiem y te loai ",the);
    if(the=='G') { fee=0.7;ng++;printf("%-20s%d\n","Duoc giam (%)",70);}
    else
    {
         if(the=='S') { fee=0.5;ns++;printf("%-20s%d\n","Duoc giam (%)",50);}
         else
            { fee=0.3;nc++;printf("%-20s%d\n","Duoc giam (%)",30);}

    }
    float tong=m+n*150000+pt;
    if(MAX<tong*fee) MAX=tong*fee;
     g = tong-tong*fee;
    printf("%-20s%.0fVND\n","Tong tien ",tong);
    printf("%-20s%.0f - %.0f X %.2f = %.2fVND\n","Thanh Toan ",tong,tong,fee,g);
   songuoi++;
   M=M+g;
            break;
        }
        case 2 :
            {
                printf("So benh nhan :%d\n",songuoi);
                printf("So the loai G :%d\n",ng);
                printf("So the loai S :%d\n",ns);
                printf("So the loai C :%d\n",nc);
                printf("Tong vien phi :%.3f\n",M);
                printf("So tien trung binh 1 nguoi tra :%.3f\n",M/songuoi);
                printf("So tien bao hiem ho tro cao nhat :%.3f\n",MAX);
                break;
            }
        case 3 :break;
        default :  printf("Nhap sai,nhan 1 phim de tiep tuc");getch();
    }

    }
    while(k!=3);

}

Biến khai báo trong block chỉ tồn tại trong block đó. Ban đầu cứ khai báo ở đầu hàm.

Vả lại nếu trong case không khai báo thì không cần cặp {} để làm block.

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