A seguir, exercícios de escolha e preenchimento para praticar estruturas de repetição na linguagem C. Foque em entender o fluxo de controle e o comportamento dos laços.
Questão de escolha 1
Qual é o valor de s após a execução do trecho de programa abaixo?
int contador=5, soma=0;
while(contador--)
if (contador%2) continue;
else soma += contador;
A.15
B.10
C.9
D.6
Questão de escolha 2
O valor de s após a execução do trecho é __.
int i=5, s=0;
while(i--)
if (i%2) continue;
else s += i;
A.15
B.10
C.9
D.6
Questão de escolha 3
Considerando o trecho abaixo, qual afirmação é correta?
int m=20;
while (m=0) m=m++;
A.O laço while executa 10 vezes
B.É um laço infinito
C.O corpo do laço não é executado nenhuma vez
D.O corpo do laço é executado uma vez
Questão de escolha 4
Quantas vezes o laço abaixo é executado?
for(int a=0,b=10; a=b=10; a++,b--)
A.Erro de sintaxe, não executa
B.Infinitas vezes
C.10
D.1
Questão de escolha 5
Qual é a principal diferença entre os laços while e do-while em C?
A.O corpo do do-while é executado pelo menos uma vez sem verificação prévia
B.A condição de controle do while é mais estrita que a do do-while
C.O do-while permite saltar para dentro do laço de fora
D.O corpo do do-while não pode ser uma instrução composta
Questão de escolha 6
Qual afirmação está correta ao executar o trecho abaixo?
x = -1;
do {
x = x * x;
} while (x == 0);
A.O corpo do laço é executado uma vez
B.O corpo do laço é executado duas vezes
C.O corpo do laço é executado infinitamente
D.O sistema indicará erro de sintaxe
Questão de escolha 7
Ao executar o programa e digitar 65 14, qual é a saída?
#include <stdio.h>
int main(void) {
int valor1, valor2;
printf("Digite valor1 e valor2:");
scanf("%d%d", &valor1, &valor2);
while (valor1 != valor2) {
while (valor1 > valor2) valor1 -= valor2;
while (valor2 > valor1) valor2 -= valor1;
}
printf("valor1=%d\n", valor1);
return 0;
}
A.valor1=3
B.valor1=2
C.valor1=1
D.valor1=0
Questão de escolha 8
Qual é a saída do programa abaixo?
#include <stdio.h>
int main(void) {
for(int idx = 1; idx < 6; idx++) {
if (idx % 2 != 0) {
printf("#");
continue;
}
printf("*");
}
printf("\n");
return 0;
}
A.#*#*#
B.#####
C.*****
D.*#*#*
Questão de escolha 9
Qual é o valor de s após a execução do trecho?
int i=5, s=0;
while(--i != 0) {
if (i % 2 == 1)
continue;
s += i;
}
A.15
B.9
C.6
D.4
Questão de escolha 10
Para ler caracteres continuamente e parar ao encontrar a letra 'N', qual trecho está correto?
A.
while ((caractere = getchar()) == 'N')
printf("%c", caractere);
B.
while (caractere = getchar() == 'N')
printf("%c", caractere);
C.
while ((caractere = getchar()) != 'N')
printf("%c", caractere);
D.
while (caractere = getchar() != 'N')
printf("%c", caractere);
Questão de escolha 11
Qual trecho abaixo não é um laço infinito?
A.
int cont=100;
while(1) {
cont = cont % 100 + 1;
if (cont >= 100) break;
}
B.
int k=0;
do {
++k;
} while(k >= 0);
C.
int s=10;
while(s) s++;
D.
for(;;);
Questão de escolha 12
Qual é a saída do trecho abaixo?
<char char="" frase="linguagem" printf="" ptr="frase;" while=""></char>
A.LINGUAGEM
B.linguagem
C.LING
D.lingUAGEM
Questão de escolha 13
Ao executar o trecho, qual afirmação é válida?
x = -1;
do {
x = x * x;
} while(!x);
A.O corpo do laço é executado uma vez
B.O corpo do laço é executado duas vezes
C.O corpo do laço é executado infinitamente
D.O sistema indicará erro de sintaxe
Questão de escolha 14
Quantas vezes o corpo interno do laço é executado?
for (int i=5; i; i--)
for (int j=0; j<4; j++) { /* corpo */ }
A.25
B.20
C.24
D.30
Questão de escolha 15
No programa para calcular médias de alunos, qual instrução está em posição errada?
#include <stdio.h>
int main(void) {
int n, k;
float nota, total, media;
total = 0.0;
for (n = 1; n <= 10; n++) {
for (k = 1; k <= 4; k++) {
scanf("%f", ¬a);
total += nota;
}
media = total / 4.0;
printf("Aluno%d: %f\n", n, media);
}
return 0;
}
A.total = 0.0;
B.total += nota;
C.media = total / 4.0;
D.printf("Aluno%d: %f\n", n, media);
Questão de escolha 16
Qual é o resultado do programa abaixo?
#include <stdio.h>
int main() {
int k = 1, m = 0;
do {
k += 2;
m += k;
if (m > 50) break;
} while (1);
printf("soma=%d\n", m);
return 0;
}
A.m=48
B.soma=63
C.soma=48
D.m=63
Questão de escolha 17
Ao executar o trecho, o que ocorre?
x = -1;
do {
x = x * x;
} while (!x);
A.Erro de sintaxe
B.O corpo do laço é executado uma vez
C.O corpo do laço é executado infinitamente
D.O corpo do laço é executado duas vezes
Questão de escolha 18
Qual é a saída do programa?
int k=5;
while(--k)
printf("%d", k-=3);
A.1
B.2
C.4
D.Laço infinito
Questão de escolha 19
Qual opção é equivalente a while(x) no trecho abaixo?
int x, soma=0;
scanf("%d", &x);
while(x) soma += x;
A.while(x != 0)
B.while(x > 0)
C.while(x <> 0)
D.while(x == 0)
Questão de escolha 20
Após executar o código, qual é a saída? (Considere x iniciado como 2)
while(x--);
printf("%d\n", x);
A.2 1 0
B.-1
C.1 0
D.Laço infinito
Questão de escolha 21
Qual é a saída do trecho abaixo?
int valor = 5;
while (valor > 0) {
printf("%d ", valor);
valor /= 2;
}
printf("%d ", valor);
A.5 2 1 0
B.5 2 1
C.5 2.5 1.25 0.625
D.5 2.5 1 0
Questão de escolha 22
Quantas vezes o corpo do laço é executado?
for (int j=2; j<=10; j+=2)
printf("%d", j);
A.0
B.2
C.5
D.10
Questão de escolha 23
Qual atribuição é equivalente ao trecho abaixo?
s = a;
for (b = 1; b <= c; b++)
s = s + 1;
A.s = a + b;
B.s = a + c;
C.s = s + c;
D.s = b + c;
Questão de escolha 24
Qual é o resultado da execução do progrmaa?
#include <stdio.h>
int main(void) {
int i, soma = 0;
for (i = 1; i <= 3; soma++)
soma += i;
printf("%d\n", soma);
return 0;
}
A.6
B.3
C.Laço infinito
D.0
Questão de escolha 25
Qual é a funcionalidade do trecho abaixo?
#include <stdio.h>
int main(void) {
int i, s = 0;
for (i = 1; i < 10; i += 2)
s += i + 1;
printf("%d\n", s);
return 0;
}
A.Soma dos números naturais de 1 a 9
B.Soma dos números naturais de 1 a 10
C.Soma dos números ímpares de 1 a 9
D.Soma dos números pares de 1 a 10
Questão de escolha 26
Para que a saída seja 2, qual valor deve ser digitado para n?
int s = 0, a = 1, n;
scanf("%d", &n);
do {
s += 1;
a = a - 2;
} while (a != n);
printf("%d\n", s);
A.-1
B.-3
C.-5
D.0
Questão de escolha 27
Qual é a saída do trecho abaixo?
int i, j;
for (i = 1; i < 4; i++) {
for (j = i; j < 4; j++)
printf("%d * %d = %d ", i, j, i * j);
printf("\n");
}
Saída:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3
2 * 2 = 4 2 * 3 = 6
3 * 3 = 9
Questão de escolha 28
No programa para encontrar o valor mínimo, qual condição deve ser usada no espaço 1?
#include <stdio.h>
int main() {
int min = 0, a;
do {
scanf("%d", &a);
if (min > a) min = a;
} while ( __1__ );
printf("%d", min);
}
A.a == 0
B.a > 0 && a < 0
C.a != 0
D.a = 0
Questão de escolha 29
Qual é a saída do programa?
#include <stdio.h>
int main() {
int x, i;
for (i = 1; i <= 50; i++) {
x = i;
if (x % 2 == 0)
if (x % 3 == 0)
if (x % 7 == 0)
printf("%d", i);
}
return 0;
}
A.28
B.27
C.42
D.41
Questão de escolha 30
Qual é a saída do trecho abaixo?
#include <stdio.h>
int main() {
int num = 0, s = 0;
while (num <= 3) {
num++;
s += num;
}
printf("%d", s);
return 0;
}
A.10
B.6
C.3
D.1
Questão de preenchimetno 1
Uma grupo de macacos colheu bananas. Eles comem metade das bananas restantes por dia, mas um macaco gula come uma extra. No décimo dia, resta uma banana. Quantas foram colhidas no total?
#include <stdio.h>
int main() {
int bananas = 1, dia;
for (dia = 1; dia <= 9; dia++)
bananas = (bananas + 1) * 2;
printf("%d", bananas);
return 0;
}
Questão de preenchimento 2
Calcule a média dos números pares em uma sequência de inteiros não nulos, terminada por 0. Saída com 2 casas decimais.
#include <stdio.h>
int main() {
int valor;
int soma, contador;
double media;
contador = 0;
soma = 0;
scanf("%d", &valor);
while (valor != 0) {
if (valor % 2 == 0) {
soma += valor;
contador++;
}
scanf("%d", &valor);
}
media = soma / contador;
printf("%.2lf\n", media);
return 0;
}
Questão de preenchimento 3
Encontre a soma dos números narcisistas entre 100 e 999 (narcisista: a soma dos cubos dos dígitos é o próprio número, ex: 153).
#include <stdio.h>
int main() {
int centena, dezena, unidade;
int num;
int soma_total;
soma_total = 0;
for (centena = 1; centena <= 9; centena++) {
for (dezena = 0; dezena <= 9; dezena++) {
for (unidade = 0; unidade <= 9; unidade++) {
num = centena*100 + dezena*10 + unidade;
if (num == centena*centena*centena + dezena*dezena*dezena + unidade*unidade*unidade) {
soma_total += num;
}
}
}
}
printf("%d\n", soma_total);
return 0;
}
Questão de preenchimento 4
Calcule 1+3+5+7+...+N, onde N é ímpar e 1<=N<=10001.
#include <stdio.h>
int main() {
int N;
int soma;
int passo;
int numero;
scanf("%d", &N);
soma = 0;
passo = 2;
for (numero = 1; numero <= N; numero += passo) {
soma += numero;
}
printf("%d\n", soma);
return 0;
}
Questão de preenchimento 5
Leia uma sequência de notas (0-100) terminada por -1. Calcule e exiba a maior, menor e média.
#include <stdio.h>
int main() {
int nota;
int n;
int maxima, minima;
double media;
maxima = 0;
minima = 100;
media = 0;
n = 0;
scanf("%d", ¬a);
while (nota != -1) {
if (nota > maxima) maxima = nota;
if (nota < minima) minima = nota;
media += nota;
n++;
scanf("%d", ¬a);
}
printf("%d %d %.2lf\n", maxima, minima, media);
return 0;
}
Questão de preenchimento 6
Para um inteiro n, calcule s = 1/1! + 1/2! + ... + 1/n!.
#include <stdio.h>
int main(void) {
int j, k, n;
double fatorial, s;
scanf("%d", &n);
s = 0.0;
for (k = 1; k <= n; k++) {
fatorial = 1.0;
for (j = 1; j <= k; j++)
fatorial *= j;
s += 1.0 / fatorial;
}
printf("soma=%f\n", s);
return 0;
}