Segematation fault 的问题

以下代码是我在练习switch语句时在DEV C++里写的时候调试会出现segematation fault
但是同样的在VS2017中却不会出现这个问题,求教!(抱拳)

#include <stdio.h>
int main()
{
    char ch;
    printf("please input A or B or C or D or E ");
    scanf("%c",&ch);
    switch(ch>='A'&&ch<='E')
    {
        case 0: 
              switch(ch){
                          case 'A':printf("perfect");
                          case 'B':printf("good");
                          case 'C':printf("good");
                          case 'D':printf("pass");
                          case 'E':printf("pass");
                       }
        case 1:
              if(ch>'E'&&ch<='Z')
                   printf("not pass");
              else printf("input fault");   

    }
    return 0;

} 

你会用switch么?你确定你会用switch么?你真的确定你会用switch么?

...
scanf("%c",&ch);
switch(ch)
{
                          case 'A':printf("perfect"); break;
                          case 'B':printf("good"); break;
                          case 'C':printf("good"); break;
                          case 'D':printf("pass"); break;
                          case 'E':printf("pass"); break;
                                                    default: 
                                                    if(ch>'E'&&ch<='Z') 
                                                       printf("not pass");
              else printf("input fault");               
}
...