Q:

Comando Switch não funciona e não apresenta erros

estou tentando resolver o seguinte exercício: Elaborar um algoritmo que auxilie no controle de uma fazenda de gado que possuí um total de 2000 cabeças de gado. A base de dados é formada por um conjunto de estruturas (registros) contendo os seguintes campos referentes a cada cabeça de gado:
•   código: código da cabeça de gado
•   leite: número de litros de leite produzido por semana;
•   alim: quantidade de alimento ingerida por semana - em quilos;
•   nasc: data de nascimento - mês e ano;
•   abate: ‘N" (não) ou ‘S’ (sim).
O campo nasc. é do tipo struct data que por sua vez, possui dois campos:
•   mês
•   ano
Elaborar funções para:
a) Ler a base de dados (código, leite, alim, nasc.mês e nasc.ano), armazenado em um vetor de estruturas.
b) Preencher o campo abate, considerando que a cabeça de gado irá para o abate caso:
•   tenha mais de 5 anos, ou;
•   produza menos de 40 litros de leite por semana, ou
•   produza entre 50 e 70 litros de leite por semana e ingira mais de 50 quilos de alimento por dia.
c) Crie o menu de opções para:
c1.Devolver a quantidade total de leite produzida por semana na fazenda.
c2. Devolver a quantidade total de alimento consumido por semana na fazenda.
c3.Devolver a quantidade total de leite que vai ser produzido por semana na fazenda, após o abate.
c4. Devolver a quantidade total de alimento que vai ser consumido por semana na fazenda, após o abate
c5. Devolver número de cabeças de gado que iram para o abate.
c6. Sair do programa.
Porém, estou tendo problemas com o comando Switch, meu código não está exibindo nenhuma mensagem, seja de erro ou aviso.
Segue abaixo o código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>

struct nascimento
{
    int mes;
    int ano;
};

struct registro
{
    int codigo;
    int leite;
    int alimento;
    char abate[2];
    struct nascimento nasc;
};

struct registro gadovet[2];

void registrar_gado(struct registro gadovet[5];)
{
    int i;
    for (i = 0;i < 2; i++)//registro dos 2000 gado
    {
        printf("Digite o código do gado: ");
        scanf("%d", &gadovet[i].codigo);
        printf("Digite a quantidade de leite que o gado fornece por semana - em litros: ");
        scanf("%d", &gadovet[i].leite);
        printf("Digite a quantidade de alimento ingerida por semana - em quilos: ");
        scanf("%d", &gadovet[i].alimento);
        printf("Digite a data de nascimento do gado\n");
        printf("Mês: ");
        scanf("%d", &gadovet[i].nasc.mes);
        printf("Ano: ");
        scanf("%d", &gadovet[i].nasc.ano);

        //verificação de abate
        if (gadovet[i].leite >= 50 && gadovet[i].leite <= 70 && gadovet[i].alimento > 50)
        {
            if (gadovet[i].nasc.ano < 2013 || gadovet[i].leite < 40)
            {
                strcpy (gadovet[i].abate, "S");
            }
            else
            {
                strcpy (gadovet[i].abate, "N");
            }
        }
        if (gadovet[i].nasc.ano > 2013 || gadovet[i].leite > 40)
            {
                strcpy (gadovet[i].abate, "N");
            }
    }
}

int main()
{
    setlocale(LC_ALL,"Portuguese");
    int i, x = 0, n = 0, abate = 0;
    char sim[2] = {"S"};
    char nao[2] = {"N"};

    registrar_gado(gadovet[2]);

    do//Menu
    {
        printf("Escolha uma das opções:");
        printf("\n1 - Verificar a quantidade total de leite produzida por semana na fazenda.");
        printf("\n2 - Verificar a quantidade total de alimento consumido por semana na fazenda.");
        printf("\n3 - Verificar a quantidade total de leite que vai ser produzido por semana na fazenda, após o abate.");
        printf("\n4 - Verificar a quantidade total de alimento que vai ser consumido por semana na fazenda, após o abate.");
        printf("\n5 - Verificar o número de cabeças de gado que iram para o abate.\n\n");
        scanf("%d", &n);

    }while(n = 0);

    switch (n)
    {
        case 1://Leite por semana
            for (i = 0;i < 2; i++)
            {
                x = x + gadovet[i].leite;
            }
            printf("A quantidade de leite que o todo o gado oferece por semana é de %d Litros.", x);
            break;
        case 2://Alimento por semana
            for (i = 0;i < 2; i++)
            {
                x = x + gadovet[i].alimento;
            }
            printf("A quantidade de alimento que o todo o gado consome por semana é de %d Quilos.", x);
            break;
        case 3://Leite após abate
            for (i = 0;i < 2; i++)
            {
                if (!strcmp(gadovet[i].abate, nao))
                {
                    x = x + gadovet[i].leite;
                }
            }
            printf("A quantidade de Leite que será consumido por semana após o abate será de %d Litros.", x);
            break;
        case 4://Alimento após abate
            for (i = 0;i < 2; i++)
            {
                if (strcmp(gadovet[i].abate, nao))
                {
                    x = x + gadovet[i].alimento;
                }
            }
            printf("A quantidade de Alimento que será consumido por semana após o abate será de %d Quilos.", x);
            break;
        case 5://Cabeças pro abate
            for (i = 0;i < 2; i++)
            {
                if (!strcmp(gadovet[i].abate, sim))
                {
                    abate++;
                }
            }
            printf("A quantidade de cabeças que irão para o abate é de %d", abate);
            break;
        case 6:
            printf("Pressione qualquer tecla para sair...");
            system("Pause");
            break;
    }
}

A:

Na linha onde está o comando do...while, a condição está como n = 0, tente trocar por n == 0.

