Pular para o conteúdo principal

Questão de Programação — Programação estruturada — FUNDATEC 2025

ProgramaçãoProgramação estruturada
Código
qg472055
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
O que acontece após a sua execução do seguinte programa, escrito na linguagem C?#include <stdio.h>#include <string.h>int calcular(int x, int y) {int i = ++x;int c = 0;for ( ; i<y; i++) {c+= i;if (i % 2 == 0);continue;i++;}return c;}main() {int a = 0;int b = 5;printf("\n%d", calcular(a, b));}
  1. AImprime o número 4
  2. BImprime o número 9
  3. CImprime o número 10
  4. DAcusa erro de sintaxe
  5. EAcusa erro em tempo de execução
Revelar gabarito e comentário

GabaritoC — Imprime o número 10

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

Programação em C: análise de loop e continue

Gabarito: letra C. O programa imprime 10. A função calcular inicia i com ++x, que incrementa x (parâmetro local) de 0 para 1. O loop for executa enquanto i < 5, somando i a c a cada iteração. A instrução if (i % 2 == 0); é um comando vazio (ponto e vírgula), e o continue é executado incondicionalmente, fazendo com que a linha i++; após ele nunca seja alcançada. Assim, a soma é 1+2+3+4 = 10.

NÃO CAIA NESSA!

O ponto e vírgula após o if torna o teste inócuo; muitos candidatos interpretam que o continue só ocorre quando i é par, mas na verdade ele ocorre sempre. Além disso, o i++ após o continue é código morto. Atenção à leitura literal da sintaxe em C.

Iteração

i (antes)

i<5?

c antes

c+=i

i (após incremento no for)

1

1

sim

0

1

2

2

2

sim

1

3

3

3

3

sim

3

6

4

4

4

sim

6

10

5

5

5

não

A função retorna c = 10. main imprime esse valor. Não há erro de sintaxe ou execução.

  1. 1i = ++x (0→1)
  2. 2Soma i a c
  3. 3if vazio (;)
  4. 4continue (sempre)
  5. 5i++ do for (nunca o extra)
LEVEL · soulevel.com.br

Gabarito: letra C.

Link permanente: /questoes/qg472055