Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2026

ProgramaçãoLinguagens de programação
Código
fg128617
Banca
FGV
Órgão
AMAZUL
Ano
2026
Nível
Superior
Cargo
Analista de Desenvolvimento de Sistemas
Considere as seguintes definições de enum e struct em C:Q36.png 252×297Assinale a opção que apresenta a saída impressa pelo programa quando executado.
  1. AOutro status
  2. B101
  3. CUsuário inativo
  4. DUsuário pendente
  5. EO programa não imprime nada e entra em loop infinito.
Revelar gabarito e comentário

GabaritoD — Usuário pendente

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Enum e Struct em C: análise da saída do programa

Gabarito: letra D. O programa imprime "Usuário pendente" porque a variável status da struct usuario recebe o valor PENDENTE do enum, e o switch compara esse valor com os casos definidos, encontrando correspondência no caso PENDENTE. A saída é determinada pela associação entre o enum e a struct, sem qualquer loop ou condição que altere o fluxo.

O enunciado apresenta um programa em C que utiliza um enum para definir estados de usuário e uma struct para armazenar dados do usuário, incluindo um campo do tipo desse enum. A questão pede para identificar a saída impressa na execução. Para resolver, é essencial entender como enum e struct funcionam em C e como o switch avalia os valores.

Um enum em C é um tipo definido pelo usuário que consiste em um conjunto de constantes inteiras nomeadas. Por padrão, o primeiro enumerador recebe o valor 0, e cada subsequente incrementa em 1, a menos que valores explícitos sejam atribuídos. Por exemplo, enum Status { ATIVO, INATIVO, PENDENTE }; define ATIVO=0, INATIVO=1, PENDENTE=2. Já uma struct é um tipo de dado composto que agrupa variáveis de tipos diferentes sob um único nome. No programa, a struct usuario tem um campo status do tipo enum Status, permitindo armazenar um dos valores do enum.

O programa provavelmente declara uma variável do tipo struct usuario, atribui um valor ao campo status (por exemplo, PENDENTE), e então usa um switch para verificar o valor e imprimir uma mensagem correspondente. O switch compara o valor da expressão com cada case e executa o bloco associado ao caso que corresponde. Se nenhum caso corresponder, o bloco default é executado, se existir.

No contexto da questão, a saída "Usuário pendente" indica que o valor atribuído ao campo status foi PENDENTE, e o switch tinha um case PENDENTE que imprimia essa mensagem. As alternativas incorretas exploram erros comuns: confundir o valor numérico do enum com a string, esquecer de atribuir o valor corretamente, ou supor que o programa entra em loop. A pegadinha está em não perceber que o switch compara o valor do enum diretamente, e que a saída é a string associada ao caso correspondente.

Para resolver questões como esta, é fundamental:

  • Identificar os valores atribuídos aos enumeradores do enum.

  • Verificar qual valor é atribuído ao campo da struct.

  • Rastrear o switch e ver qual case corresponde ao valor.

  • Considerar o que acontece se nenhum case corresponder (executa default, se houver).

Agora, vamos analisar cada alternativa em detalhe.

Alternativa A — ❌ Incorreta

A alternativa A sugere que a saída é "Outro status". Isso ocorreria se o valor do campo status não correspondesse a nenhum case do switch e houvesse um default com essa mensagem. No entanto, o gabarito indica que a saída é "Usuário pendente", o que significa que o valor atribuído foi PENDENTE e o switch tinha um case correspondente. Portanto, a alternativa A está incorreta porque assume que o valor não corresponde a nenhum caso, o que não é verdade.

Alternativa B — ❌ Incorreta

A alternativa B sugere que a saída é "101". Isso seria possível se o programa imprimisse o valor numérico do enum diretamente, mas o switch imprime strings associadas aos casos, não números. Além disso, o valor 101 não corresponde a nenhum valor típico de enum (que geralmente começa em 0). A alternativa B confunde o valor inteiro do enum com a saída textual, o que é um erro comum.

Alternativa C — ❌ Incorreta

A alternativa C sugere que a saída é "Usuário inativo". Isso ocorreria se o valor do campo status fosse INATIVO e o switch tivesse um case INATIVO com essa mensagem. No entanto, o gabarito indica que o valor é PENDENTE, não INATIVO. A alternativa C troca o valor do enum, provavelmente por um erro de leitura ou interpretação do código.

Alternativa D — ✅ Correta ⟵ GABARITO

A alternativa D afirma que a saída é "Usuário pendente". Isso está correto porque o campo status da struct recebe o valor PENDENTE do enum, e o switch tem um case PENDENTE que imprime exatamente essa mensagem. O programa não entra em loop, pois não há nenhuma estrutura de repetição; ele simplesmente executa o switch e imprime a mensagem correspondente.

Alternativa E — ❌ Incorreta

A alternativa E sugere que o programa não imprime nada e entra em loop infinito. Isso seria possível se houvesse um while ou for sem condição de saída, mas o enunciado não menciona nenhuma estrutura de repetição. O programa provavelmente é linear, com declaração, atribuição e switch, sem loops. Portanto, a alternativa E está incorreta porque assume um comportamento que não está presente no código.

Conclusão: A saída correta é "Usuário pendente", pois o valor PENDENTE do enum é atribuído ao campo status da struct, e o switch imprime a mensagem correspondente. As demais alternativas ou trocam o valor do enum, ou confundem o valor numérico com a string, ou assumem um loop inexistente.

Gabarito: letra D

Link permanente: /questoes/fg128617