Pular para o conteúdo principal

Questão de Programação — Conceitos básicos de programação — FUNDATEC 2025

ProgramaçãoConceitos básicos de programação
Código
qg472057
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
O que acontece após executar o seguinte programa, escrito na linguagem C?int calcular() {static int x= 0;return x++;}main(){int i;int b =! 0;for (i= 1; i <= 3; i++) {printf("%d %d ", calcular(), b);}}
  1. AImprime 0 0 0 0 0 0
  2. BImprime 0 1 0 1 0 1
  3. CImprime 0 1 1 1 2 1
  4. DImprime 1 1 2 1 3 1
  5. EAcusa erro de sintaxe
Revelar gabarito e comentário

GabaritoC — Imprime 0 1 1 1 2 1

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”.

Linguagem C – Comportamento de loops e static

Gabarito: letra C. O programa imprime, em cada iteração do laço for, o valor retornado por calcular() (que começa em 0 e incrementa a cada chamada, devido à variável static int x) e o valor de b, que é 1 (pois !0 equivale a 1). Assim, a saída é 0 1 1 1 2 1 , exatamente a opção C.

Alternativa A — ❌ Incorreta

Imprime 0 0 0 0 0 0. O erro está em considerar b como 0 ou que calcular() retorna sempre 0. Na verdade, !0 é 1 e a variável estática incrementa.

Alternativa B — ❌ Incorreta

Imprime 0 1 0 1 0 1. Esta alternativa supõe que b permanece 0 na primeira iteração ou que calcular() não retém valor (reinicia a cada chamada). O correto é que b é sempre 1 e x cresce.

Alternativa C — ✅ Correta ⟵ GABARITO

Sequência exata: calcular() retorna 0, 1, 2 sucessivamente e b é sempre 1. Portanto, 0 1 1 1 2 1 .

Alternativa D — ❌ Incorreta

Imprime 1 1 2 1 3 1. Esta alternativa parte do princípio de que x começa em 1 (como se o incremento fosse pré-incremento ou inicialização diferente). O static int x=0 garante que a primeira chamada retorna 0.

Alternativa E — ❌ Incorreta

Acusa erro de sintaxe. O programa não contém erros de sintaxe em C (aceita main() sem int implícito em compiladores não estritos, e a função calcular está declarada antes).

PEGA ESSA DICA!

Em questões de C, preste atenção a static em variáveis locais – elas mantêm o valor entre chamadas. Além disso, lembre-se que !0 é 1 (verdadeiro).

Gabarito: letra C.

Link permanente: /questoes/qg472057