Pessoal, Boa noite!!! Eu estou fazendo um trabalho de programação em C em que o código principal possui um Switch Case e em cada Case há outro Switch Case. O meu problema é o seguinte: Após compilado, o Menu Principal logo aparece... Ao selecionar a primeira opção ele mostra o submenu e assim pode-se executar o que é pedido lá. Porém quando é finalizado ele não volta para o submenu, pede novamente os dados que eu inseri.  Exemplo:  MENU PRINCIPAL    OPÇÕES OPÇÃO 1 SELECIONADA    SUBMENU ENTRADA DE DADOS  --> NESTE PONTO AQUI DEVERIA VOLTAR PARA O SUBMENU QUE CONTÉM A OPÇÃO DE VOLTAR AO MENU PRINCIPAL TAMBÉM.  Vou mostrar o código... Usei um DO WHILE, mas não está funcionando. Não mostrarei as funções e estruturas, pois são mais de 400 linhas de código.  Gente... se puderem me ajudar... ficarei muitooo grata mesmo! Preciso entregar este trabalho Segunda-feira, o prazo foi realmente muito curto. Mas, quero mesmo é aprender como se faz!!  Brigadão!! Abraços!!   Segue a partir do MAIN:   main()
{
      TipoPilha PilhaExperimentos;
      TipoLista ListaResultados;
      TipoFila FilaCientistas;
      TipoItem Item_P, Item_L, Item_F;
      int opc1, opc2;
      
      FPVazia(&PilhaExperimentos);
      FLVazia(&ListaResultados);
      FFVazia(&FilaCientistas);
      
      do
      {
       opc1=menu();
       switch(opc1)
       {
          case 1: // Opção 1 = Pilha de Experimentos
             opc2=submenu_P();
             do{
               switch(opc2)
               {
                
                case 1: // Opção 1.1 = Inserir Item na Pilha
                    printf("Por favor. Insira a Chave\n");
                    scanf("%d", &Item_P.Chave);
                    printf("Agora, insira o nome\n");
                    scanf("%s", &Item_P.nome);
                    Empilha(Item_P, &PilhaExperimentos);
                    break;
                case 2: // Opção 1.2 = Desempilhar Item da Pilha (FILO)
                    Desempilha(&PilhaExperimentos, &Item_P);
                    break;                    
                 case 3:// Opção 1.3 = Imprimir a Pilha
                    //Função Imprime
                 case 4: //Opção 1.4 = Voltar ao Menu Principal
                    break;
                 default:
                    printf("\n\t\t\a Digite uma opcao valida!\n");
                    break;
                    }
             }while(opc2!=4);    
          case '2': // Opção 2 = Lista de Resultados
             opc2=submenu_L();
             switch(opc2)
             {
              do{  
                case 1: // Opção 2.1 = Inserir Item na Lista
                    printf("Por favor. Insira o Codigo\n");
                    scanf("%d", &Item_L.Chave);
                    printf("Agora, insira o nome\n");
                    gets(Item_L.nome);
                    Insere(Item_L, &ListaResultados);
                    break;
                case 2: // Opção 2.2 = Retirar Item da Lista
                    // VERIFICAR FUNÇÃO RETIRAAAAA
                case 3: // Opção 2.3 = Imprimir lista
                    printf("\t\aLista Atual:\n");
                    ImprimeLista(ListaResultados);
                    break; 
                case 4: // Opção 2.4 = Pesquisar Item na Lista
                    break;
                case 5: // Opção 2.5 = Voltar ao Menu Principal
                    break;
                default:
                    printf("\n\t\t\a Digite um numero valido!\n");
                    break;
             }while(opc2!=5);            
             }
          case '3': // Opção 3 = Fila de Cientistas
               opc2=submenu_F();
               switch(opc2)
               {
                do{
                  case 1: // Opção 3.1 = Inserir Cientista da Fila
                    printf("Digite um Codigo para Identificar o Cientista\n");
                    scanf("%d", &Item_F.Chave);
                    printf("Digite o nome do Cientista\n");
                    gets(Item_F.nome);
                    Enfileira(Item_F,&FilaCientistas);
                    break;
                  case 2: // Opção 3.2 = Retirar Cientista da Fila
                    Desenfileira(&FilaCientistas, &Item_F);
                    printf("Proximo\n\n");
                    break;
                  case 3: // Opção 3.3 = Imprimir a Fila de Cientistas Atual
                    printf("\t\nFila Atual\n");
                    ImprimeFila(FilaCientistas);
                    break;
                  case 4: // Opção 3.4 = Retornar ao Menu Principal
                    break;
                  default:
                    printf("\n\t\t\a Digite uma opcao valida!!\n");
                    break;
                }while(opc2!=4);
                }
          case '4': // Opção 4 = Verificar a situação dos experimentos, resultados e cientistas (Todos os cientistas devem receber seus experimentos)
               // Colocar função
               break;
          case '5':
               ("\n\t\t\t\t\tObrigado e Volte Sempre!\n\n");
          }
       }while(opc1!=5);
       }