Analise o código a seguir escrito em C: int main() { for(int count=0; count<10;count++) { if((count%3)==0) { printf(“1”); } else { printf(“0”); } } return 0; } Assinale a alternativa que apresenta a saída impressa por tal código.
- A)“0110110110”.
Errada, porque essa sequência não corresponde aos valores de count divisíveis por 3 dentro do intervalo de 0 a 9.
- B)“0010010010”.
Errada, pois o padrão apresentado desloca a posição dos '1' e não bate com os testes de divisibilidade feitos no laço.
- C)“1101101101”.
Errada, já que começa com '1' quando o primeiro valor do contador é 0, e essa alternativa inverte a lógica esperada.
- D)“1001001001”.
Certa, porque os valores 0, 3, 6 e 9 satisfazem count%3 == 0, gerando a sequência 1001001001.
Gabarito: D
Aqui a lógica é bem simples: o laço percorre os valores de count de 0 até 9, ou seja, 10 voltas no total. Em cada volta, o código testa se count%3 == 0, isto é, se o número é divisível por 3. Quando isso acontece, ele imprime "1"; caso contrário, imprime "0". Agora vem o pulo do gato: os valores de count que satisfazem essa condição são 0, 3, 6 e 9. Então a saída vai ser: 1 no início, depois dois 0, depois outro 1, mais dois 0, e assim por diante. Montando a sequência completa, temos 1001001001. É exatamente por isso que a alternativa D está correta. Em questões de C, vale sempre lembrar que o for começa no valor inicial, testa a condição antes de cada repetição e usa o incremento ao final de cada volta. Ou seja, não tem mistério: o código não imprime os números, e sim uma marcação binária baseada na divisibilidade por 3. Bem estilo banca gosta de confundir com contagem visual, mas aqui é só matemática modular mesmo.