Exercícios Práticos sobre Estruturas de Repetição em C

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", &nota);
            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", &nota);
    while (nota != -1) {
        if (nota > maxima) maxima = nota;
        if (nota < minima) minima = nota;
        media += nota;
        n++;
        scanf("%d", &nota);
    }
    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;
}

Tags: C estruturas de repetição while loop do-while loop for loop

Publicado em 7-6 21:26