Lista de Exercícios — for (em C)
Versão na linguagem C — Flavio e João.
Esta página reúne exercícios sobre a estrutura de repetição for na linguagem C. Leia cada enunciado com atenção e desenvolva os programas conforme solicitado.
Selecione um exercício no menu lateral ou abaixo para começar.
Esqueleto dos programas
Os trechos de código das dicas mostram apenas o miolo de cada programa. Monte a sua solução dentro da estrutura abaixo:
#include <stdio.h>
int main()
{
/* seu código aqui */
return 0;
}
Quando o exercício usar variáveis do tipo bool (como no Exercício 16),
acrescente também #include <stdbool.h>.
Exercício 01 — Contagem crescente
Escreva um programa em C que receba um número inteiro positivo N e exiba na tela todos os números de 1 até N, um por linha.
Caso o valor informado seja menor ou igual a zero, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 5
Saída:
1
2
3
4
5
Entrada:
N: 0
Saída:
Entrada inválida
Use um laço for que comece em 1 e vá até N, incrementando 1 a cada passo. Antes de entrar no laço, valide se N é positivo.
No cabeçalho for (int i = 1; i <= n; i++), o trecho i++ é equivalente a i = i + 1. Isso significa que, ao fim de cada repetição, a variável i aumenta uma unidade.
Organize a lógica assim:
ler N
se (N <= 0)
exibir "Entrada inválida"
senão
para i de 1 até N
exibir i
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Leia N e converta para inteiro:
int n;
printf("N: ");
scanf("%d", &n);
Verifique se N é positivo antes de continuar:
if (n <= 0)
{
printf("Entrada inválida\n");
}
No bloco else, use o for para exibir cada número:
else
{
for (int i = 1; i <= n; i++)
{
printf("%d\n", i);
}
}
Exercício 02 — Números pares no intervalo
Escreva um programa em C que receba um número inteiro positivo N e exiba todos os números pares entre 1 e N.
Caso o valor informado seja menor ou igual a zero, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 10
Saída:
2
4
6
8
10
Entrada:
N: -4
Saída:
Entrada inválida
Um número é par quando o resto da divisão por 2 é zero. Você pode verificar isso dentro do laço, ou simplesmente iniciar o laço em 2 e incrementar de 2 em 2 — assim só números pares serão visitados.
Compare com o exercício anterior: lá usamos i++, que é o mesmo que i = i + 1. Aqui usamos i += 2, que equivale a i = i + 2, para visitar apenas os valores pares.
Organize a lógica assim:
ler N
se (N <= 0)
exibir "Entrada inválida"
senão
para i de 2 até N, incrementando 2
exibir i
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("N: ");
scanf("%d", &n);
if (n <= 0)
{
printf("Entrada inválida\n");
}
No bloco else, inicie o laço em 2 e incremente de 2 em 2:
else
{
for (int i = 2; i <= n; i += 2)
{
printf("%d\n", i);
}
}
Exercício 03 — Múltiplos de 5 de 1 a 100
Escreva um programa em C que exiba na tela todos os números múltiplos de 5 entre 1 e 100, um por linha.
Este programa não lê nenhum dado do teclado: o intervalo já está definido no enunciado.
Exemplo de Saída
Saída:
5
10
15
20
...
95
100
Como o intervalo é fixo, o for já nasce com os limites prontos: comece em 1 e vá até 100. Não há leitura de dados nem validação de entrada.
Existem dois caminhos. No primeiro, o laço visita todos os números de 1 a 100 e um if pergunta se i % 5 == 0. No segundo, o laço já salta de 5 em 5 com i += 5, visitando apenas os múltiplos — assim nenhum if é necessário.
Usando o laço que salta de 5 em 5:
para i de 5 até 100, incrementando 5
exibir i
Usando o resto da divisão:
para i de 1 até 100
se (i % 5 == 0)
exibir i
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
O primeiro múltiplo de 5 é o próprio 5, e o passo do laço é 5:
for (int i = 5; i <= 100; i += 5)
{
Dentro do laço, basta imprimir o valor atual de i:
printf("%d\n", i);
}
%Esta versão produz exatamente a mesma saída, mas percorre os 100 números e testa cada um:
for (int i = 1; i <= 100; i++)
{
if (i % 5 == 0)
{
printf("%d\n", i);
}
}
Exercício 04 — Tabuada de um número
Em uma sala de aula, um aluno deseja treinar multiplicação de forma organizada. Escreva um programa em C que receba um número inteiro e exiba a sua tabuada de 1 até 10.
O programa deve mostrar cada linha no formato: n x i = resultado.
Exemplo de Entrada e Saída
Entrada:
Número: 7
Saída:
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70
O que muda a cada linha da tabuada é o multiplicador, que vai de 1 a 10. Use um for com i indo de 1 a 10 e calcule n * i em cada iteração.
Organize a lógica assim:
ler n
para i de 1 até 10
exibir n + " x " + i + " = " + (n * i)
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("Número: ");
scanf("%d", &n);
Itere de 1 a 10 e exiba cada linha formatada:
for (int i = 1; i <= 10; i++)
{
printf("%d x %d = %d\n", n, i, n * i);
}
Exercício 05 — Contagem regressiva
Escreva um programa em C que receba um número inteiro positivo N e exiba todos os números menores que N, do maior para o menor, até chegar a 1 — um por linha.
Caso o valor informado seja menor ou igual a zero, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 5
Saída:
4
3
2
1
Entrada:
N: 1
Saída:
(nada é exibido — não existe número positivo menor que 1)
Entrada:
N: 0
Saída:
Entrada inválida
Até aqui todos os laços caminharam para frente. Um for também pode andar para trás — o que muda são as três partes do cabeçalho.
O laço deve começar no maior valor a ser exibido, que é n - 1 (o primeiro número menor que N). A condição deixa de perguntar "já passei do fim?" e passa a perguntar i >= 1. E o passo vira i--, que equivale a i = i - 1.
Repare que, se N valer 1, o laço começa em 0 e a condição já nasce falsa: ele não executa nenhuma vez e nada é exibido. Isso está correto.
Organize a lógica assim:
ler N
se (N <= 0)
exibir "Entrada inválida"
senão
para i de N-1 até 1, decrementando 1
exibir i
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("N: ");
scanf("%d", &n);
if (n <= 0)
{
printf("Entrada inválida\n");
}
Compare com o Exercício 01: lá o cabeçalho era for (int i = 1; i <= n; i++). Aqui as três partes são invertidas:
else
{
for (int i = n - 1; i >= 1; i--)
{
printf("%d\n", i);
}
}
Exercício 06 — Soma dos primeiros números naturais
Escreva um programa em C que receba um número inteiro positivo N e calcule a soma dos números de 1 até N.
Ao final, o programa deve exibir o valor da soma obtida. Caso o valor informado seja menor ou igual a zero, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 5
Saída:
Soma = 15
Entrada:
N: 8
Saída:
Soma = 36
Use uma variável acumuladora soma, inicializada em zero. A cada iteração do for, some o valor atual de i a essa variável. Ao sair do laço, soma terá o resultado.
Organize a lógica assim:
ler N
se (N <= 0)
exibir "Entrada inválida"
senão
soma = 0
para i de 1 até N
soma = soma + i
exibir "Soma = " + soma
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("N: ");
scanf("%d", &n);
if (n <= 0)
{
printf("Entrada inválida\n");
}
Declare e inicialize a variável que vai acumular a soma:
else
{
int soma = 0;
for (int i = 1; i <= n; i++)
{
soma += i;
}
printf("Soma = %d\n", soma);
}
Exercício 07 — Soma dos números pares
Escreva um programa em C que receba um número inteiro positivo N e calcule a soma de todos os números pares entre 0 e N. Ao final, exiba apenas o resultado da soma.
Caso o valor informado seja menor ou igual a zero, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 10
Saída:
Soma dos pares = 30
0 + 2 + 4 + 6 + 8 + 10 = 30
Entrada:
N: 7
Saída:
Soma dos pares = 12
0 + 2 + 4 + 6 = 12 — o 7 não entra na conta por ser ímpar
Entrada:
N: -2
Saída:
Entrada inválida
Este exercício junta duas ideias que você já usou separadamente: a variável acumuladora do exercício anterior e o laço que salta de 2 em 2 do exercício dos números pares.
Declare a soma antes do laço, começando em zero. Dentro do laço, some ao acumulador cada valor visitado. Depois que o laço terminar, exiba o total — repare que a exibição fica fora do for, senão o resultado apareceria a cada repetição.
Se o laço começa em 0 e anda de 2 em 2, todo valor visitado já é par e nenhum if é necessário. Começar em 2 daria exatamente o mesmo resultado, já que somar 0 não altera o total.
Organize a lógica assim:
ler N
se (N <= 0)
exibir "Entrada inválida"
senão
soma := 0
para i de 0 até N, incrementando 2
soma := soma + i
exibir soma
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("N: ");
scanf("%d", &n);
if (n <= 0)
{
printf("Entrada inválida\n");
}
A soma nasce fora do laço, valendo zero:
else
{
int soma = 0;
O laço salta de 2 em 2, então só visita números pares:
for (int i = 0; i <= n; i += 2)
{
soma += i;
}
Já fora do laço, com o total pronto:
printf("Soma dos pares = %d\n", soma);
}
Exercício 08 — Cálculo de fatorial
Em Matemática, o fatorial de um número natural N é o produto de todos os números inteiros positivos de N até 1. Representamos essa operação com o símbolo !.
A fórmula geral é: N! = N × (N - 1) × (N - 2) × ... × 3 × 2 × 1. Por definição, 0! = 1.
Exemplos matemáticos:
4! = 4 × 3 × 2 × 1 = 24
5! = 5 × 4 × 3 × 2 × 1 = 120
1! = 1
Escreva um programa em C que receba um número inteiro não negativo
e calcule o seu fatorial, isto é, realize essa multiplicação sucessiva usando uma estrutura
de repetição for.
Caso o valor informado seja negativo, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
N: 5
Saída:
5! = 120
Entrada:
N: 0
Saída:
0! = 1
Entrada:
N: -3
Saída:
Entrada inválida
O fatorial é calculado multiplicando todos os números de 1 até N. Use um acumulador multiplicativo iniciado em 1 — nunca em 0, pois multiplicar por zero zeraria tudo. Lembre-se: 0! = 1 por definição, então o laço simplesmente não executará nenhuma iteração.
Organize a lógica assim:
ler N
se (N < 0)
exibir "Entrada inválida"
senão
fat = 1
para i de 1 até N
fat = fat * i
exibir N + "! = " + fat
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int n;
printf("N: ");
scanf("%d", &n);
if (n < 0)
{
printf("Entrada inválida\n");
}
Declare o acumulador com valor inicial 1. Use long para suportar valores grandes:
else
{
long fat = 1;
for (int i = 1; i <= n; i++)
{
fat *= i;
}
printf("%d! = %ld\n", n, fat);
}
Exercício 09 — Soma alternada
Escreva um programa em C que receba um número inteiro positivo N e calcule a soma da série: 1 - 2 + 3 - 4 + 5 - 6 + ... até N
Exemplo de Entrada e Saída
Entrada:
N: 6
Saída:
Soma alternada = -3
Os números ímpares entram somando; os pares entram subtraindo. Você pode decidir isso com um if dentro do for.
ler N
soma = 0
para i de 1 até N
se i é par
soma = soma - i
senão
soma = soma + i
exibir soma
int n;
printf("N: ");
scanf("%d", &n);
int soma = 0;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 0)
{
soma -= i;
}
else
{
soma += i;
}
}
printf("Soma alternada = %d\n", soma);
Exercício 10 — Análise de temperaturas da semana
Uma escola deseja registrar as temperaturas máximas observadas ao longo de vários dias. Escreva um programa em C que receba a quantidade de dias a serem analisados e, em seguida, leia a temperatura de cada dia.
Ao final, o programa deve informar quantos dias tiveram temperatura acima de 30 graus.
Considere que a quantidade de dias deve ser um inteiro positivo. Caso contrário, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Dias: 5
Temperatura 1: 28
Temperatura 2: 31
Temperatura 3: 33
Temperatura 4: 29
Temperatura 5: 35
Saída:
Quantidade de dias acima de 30 graus: 3
Entrada:
Dias: 0
Saída:
Entrada inválida
Você precisa repetir a leitura de temperatura exatamente dias vezes. Use um for controlado pelo número de dias. Dentro do laço, leia a temperatura e verifique se ela é maior que 30. Mantenha um contador de dias quentes.
Organize a lógica assim:
ler dias
se (dias <= 0)
exibir "Entrada inválida"
senão
acima = 0
para i de 1 até dias
ler temperatura
se (temperatura > 30)
acima = acima + 1
exibir "Quantidade de dias acima de 30 graus: " + acima
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int dias;
printf("Dias: ");
scanf("%d", &dias);
if (dias <= 0)
{
printf("Entrada inválida\n");
}
else
{
int acima = 0;
for (int i = 1; i <= dias; i++)
{
double temp;
printf("Temperatura %d: ", i);
scanf("%lf", &temp);
if (temp > 30) acima++;
}
printf("Quantidade de dias acima de 30 graus: %d\n", acima);
}
Exercício 11 — Idade dos participantes
Uma oficina só pode ser assistida sem autorização dos responsáveis por quem já é maior de idade. Escreva um programa em C que receba a quantidade de participantes inscritos e, em seguida, leia a idade de cada um deles.
Ao final, o programa deve informar quantos participantes têm 18 anos ou mais.
Considere que a quantidade de participantes deve ser um inteiro positivo. Caso contrário, exiba "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Participantes: 5
Idade 1: 15
Idade 2: 18
Idade 3: 22
Idade 4: 17
Idade 5: 30
Saída:
Maiores de idade: 3
Entrada:
Participantes: 0
Saída:
Entrada inválida
O laço se repete uma vez por participante. A cada repetição o programa lê uma idade e faz uma única pergunta: essa pessoa tem 18 anos ou mais?
Quem responde a essa pergunta é um if dentro do laço. Quando a resposta é sim, um contador aumenta em 1. Esse contador precisa ser criado antes do laço, valendo zero, senão ele voltaria a zerar a cada repetição.
Repare que a idade lida pode ser guardada sempre na mesma variável: assim que ela é testada, o valor não é mais necessário e pode ser substituído pelo do próximo participante.
Organize a lógica assim:
ler quantidade de participantes
se (quantidade <= 0)
exibir "Entrada inválida"
senão
maiores := 0
para i de 1 até quantidade
ler idade
se (idade >= 18)
maiores := maiores + 1
exibir maiores
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int participantes;
printf("Participantes: ");
scanf("%d", &participantes);
if (participantes <= 0)
{
printf("Entrada inválida\n");
}
else
{
int maiores = 0;
O if fica dentro do laço, testando cada idade lida:
for (int i = 1; i <= participantes; i++)
{
printf("Idade %d: ", i);
int idade;
scanf("%d", &idade);
if (idade >= 18) maiores++;
}
printf("Maiores de idade: %d\n", maiores);
}
Exercício 12 — Preço dos produtos
Uma loja vai destacar na vitrine os produtos baratos. Escreva um programa em C que receba a quantidade de produtos do estoque e, em seguida, leia o preço de cada produto.
Ao final, o programa deve informar quantos produtos custam menos de R$ 50,00.
Considere que a quantidade de produtos deve ser um inteiro positivo. Caso contrário, exiba "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Produtos: 4
Preço 1: 39.90
Preço 2: 120.00
Preço 3: 15.50
Preço 4: 50.00
Saída:
Produtos abaixo de R$ 50,00: 2
o produto de R$ 50,00 não entra na conta: o enunciado pede preços menores que 50
Entrada:
Produtos: -1
Saída:
Entrada inválida
A estrutura é a mesma do exercício anterior: um laço que se repete uma vez por produto, um if dentro dele e um contador criado antes do laço.
A diferença está em dois detalhes. Primeiro, preço tem casas decimais, então a variável é double e a leitura usa %lf. Segundo, preste atenção ao sinal da comparação: o enunciado pede preços menores que 50, então um produto de exatamente R$ 50,00 não deve ser contado. Use <, e não <=.
Organize a lógica assim:
ler quantidade de produtos
se (quantidade <= 0)
exibir "Entrada inválida"
senão
baratos := 0
para i de 1 até quantidade
ler preço
se (preço < 50)
baratos := baratos + 1
exibir baratos
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int produtos;
printf("Produtos: ");
scanf("%d", &produtos);
if (produtos <= 0)
{
printf("Entrada inválida\n");
}
else
{
int baratos = 0;
O preço é lido com %lf, por ser double:
for (int i = 1; i <= produtos; i++)
{
printf("Preço %d: ", i);
double preco;
scanf("%lf", &preco);
if (preco < 50) baratos++;
}
printf("Produtos abaixo de R$ 50,00: %d\n", baratos);
}
Exercício 13 — Maior nota da turma
Um professor deseja identificar a maior nota obtida em uma atividade. Escreva um programa em C que receba a quantidade de alunos e, em seguida, leia a nota de cada um deles.
Ao final, o programa deve exibir:
- A maior nota informada
- O número do aluno que obteve essa nota
Em caso de empate, considere o primeiro aluno que obteve a maior nota. Considere também que a quantidade de alunos deve ser um inteiro positivo. Caso contrário, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Alunos: 4
Nota do aluno 1: 7.5
Nota do aluno 2: 9.0
Nota do aluno 3: 8.0
Nota do aluno 4: 9.0
Saída:
Maior nota: 9.0 (Aluno 2)
Entrada:
Alunos: 3
Nota do aluno 1: 6.0
Nota do aluno 2: 5.5
Nota do aluno 3: 8.5
Saída:
Maior nota: 8.5 (Aluno 3)
Mantenha duas variáveis: maior (a maior nota encontrada até agora) e alunoMaior (índice do aluno que a obteve). Inicialize maior com um valor muito pequeno, como -1, para que a primeira nota lida sempre substitua. Compare cada nota com maior: se for estritamente maior, atualize ambas as variáveis.
Organize a lógica assim:
ler alunos
se (alunos <= 0)
exibir "Entrada inválida"
senão
maior = -1
alunoMaior = 0
para i de 1 até alunos
ler nota
se (nota > maior)
maior = nota
alunoMaior = i
exibir "Maior nota: " + maior + " (Aluno " + alunoMaior + ")"
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int alunos;
printf("Alunos: ");
scanf("%d", &alunos);
if (alunos <= 0)
{
printf("Entrada inválida\n");
}
else
{
double maior = -1;
int alunoMaior = 0;
for (int i = 1; i <= alunos; i++)
{
double nota;
printf("Nota do aluno %d: ", i);
scanf("%lf", ¬a);
if (nota > maior)
{
maior = nota;
alunoMaior = i;
}
}
printf("Maior nota: %.1f (Aluno %d)\n", maior, alunoMaior);
}
Exercício 14 — O Pokémon mais frágil
Um treinador quer saber qual dos seus Pokémon é o mais frágil para levá-lo ao Centro Pokémon. Escreva um programa em C que receba a quantidade de Pokémon da equipe e, em seguida, leia o HP de cada um deles.
Ao final, o programa deve exibir o menor HP encontrado e a posição do Pokémon correspondente. Considere que o HP é sempre um inteiro entre 1 e 255.
Em caso de empate, mantenha o primeiro Pokémon encontrado com aquele HP. Se a quantidade informada não for um inteiro positivo, exiba "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Quantidade: 5
HP do Pokémon 1: 45
HP do Pokémon 2: 39
HP do Pokémon 3: 78
HP do Pokémon 4: 39
HP do Pokémon 5: 60
Saída:
Menor HP: 39 (Pokémon 2)
o Pokémon 4 também tem 39 de HP, mas o primeiro encontrado é mantido
Entrada:
Quantidade: 0
Saída:
Entrada inválida
A ideia é a mesma do exercício da maior nota, só que ao contrário: o programa guarda o menor valor visto até agora e o substitui sempre que aparece um valor ainda menor.
O detalhe está no valor inicial. Para procurar o maior, começamos com um valor bem baixo. Para procurar o menor, precisamos do oposto: um valor maior que qualquer HP possível. Como o enunciado garante que o HP vai no máximo até 255, começar em 256 funciona — o primeiro HP lido certamente será menor e tomará o lugar.
Guarde também a posição do Pokémon. Ela deve ser atualizada no mesmo if, junto com o menor HP — assim as duas informações nunca ficam desencontradas.
Organize a lógica assim:
ler quantidade
se (quantidade <= 0)
exibir "Entrada inválida"
senão
menor := 256
posição := 0
para i de 1 até quantidade
ler hp
se (hp < menor)
menor := hp
posição := i
exibir menor e posição
Use < e não <=: com <, um empate não substitui o Pokémon já guardado.
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int pokemons;
printf("Quantidade: ");
scanf("%d", &pokemons);
if (pokemons <= 0)
{
printf("Entrada inválida\n");
}
O menor HP começa acima do máximo possível:
else
{
int menor = 256;
int posicaoMenor = 0;
for (int i = 1; i <= pokemons; i++)
{
printf("HP do Pokémon %d: ", i);
int hp;
scanf("%d", &hp);
if (hp < menor)
{
menor = hp;
posicaoMenor = i;
}
}
printf("Menor HP: %d (Pokémon %d)\n", menor, posicaoMenor);
}
Exercício 15 — Média de gols do campeonato
A comissão técnica de um time quer saber o desempenho ofensivo da temporada. Escreva um programa em C que receba a quantidade de partidas disputadas e, em seguida, leia quantos gols o time marcou em cada partida.
Ao final, o programa deve exibir a média de gols por partida, com duas casas decimais.
Considere que a quantidade de partidas deve ser um inteiro positivo. Caso contrário, exiba "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Partidas: 4
Gols na partida 1: 2
Gols na partida 2: 0
Gols na partida 3: 3
Gols na partida 4: 1
Saída:
Média de gols: 1.50
6 gols ÷ 4 partidas = 1,5
Entrada:
Partidas: 3
Gols na partida 1: 2
Gols na partida 2: 1
Gols na partida 3: 2
Saída:
Média de gols: 1.67
Entrada:
Partidas: 0
Saída:
Entrada inválida
Média é soma dividida por quantidade. A soma você já sabe fazer: um acumulador criado antes do laço, que recebe os gols de cada partida. A quantidade já está guardada na variável lida no início.
A divisão fica fora do laço, só depois que todos os gols foram somados — dividir dentro do laço daria um resultado parcial a cada repetição.
Atenção a uma armadilha do C: quando os dois lados da divisão são int, o resultado também é int e a parte decimal é descartada. Com 6 gols em 4 partidas, 6 / 4 daria 1, e não 1,5. Para obter o valor correto é preciso fazer a conta em ponto flutuante.
Organize a lógica assim:
ler quantidade de partidas
se (partidas <= 0)
exibir "Entrada inválida"
senão
total := 0
para i de 1 até partidas
ler gols
total := total + gols
média := total / partidas (em ponto flutuante!)
exibir média com 2 casas
Para exibir com duas casas decimais, use %.2f no printf.
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int partidas;
printf("Partidas: ");
scanf("%d", &partidas);
if (partidas <= 0)
{
printf("Entrada inválida\n");
}
O acumulador nasce em zero, antes do laço:
else
{
int totalGols = 0;
for (int i = 1; i <= partidas; i++)
{
printf("Gols na partida %d: ", i);
int gols;
scanf("%d", &gols);
totalGols += gols;
}
O (double) antes de totalGols força a divisão a ser feita em ponto flutuante. Sem ele, o resultado de 6 / 4 seria 1:
double media = (double) totalGols / partidas;
printf("Média de gols: %.2f\n", media);
}
Exercício 16 — Radar do número premiado
Em uma feira de tecnologia, um sistema analisa números digitados pelo operador, um por vez. O objetivo é encontrar o primeiro número múltiplo de 7.
Escreva um programa em C que receba a quantidade máxima de números a serem analisados. Em seguida, leia os valores um a um.
Assim que encontrar o primeiro múltiplo de 7, o programa deve exibir o número,
informar em qual tentativa ele foi encontrado e encerrar o laço imediatamente usando
break. Se nenhum múltiplo de 7 aparecer, exiba:
"Nenhum número premiado foi encontrado."
Exemplo de Entrada e Saída
Entrada:
Quantidade: 5
Número 1: 10
Número 2: 13
Número 3: 21
Número 4: 28
Número 5: 30
Saída:
Primeiro múltiplo de 7 encontrado: 21
Tentativa: 3
Você não precisa percorrer todas as leituras se já encontrou o primeiro número desejado. Essa é a situação ideal para usar break.
ler quantidade
encontrou = falso
para i de 1 até quantidade
ler numero
se numero % 7 == 0
exibir numero e tentativa
encontrou = verdadeiro
break
se não encontrou
exibir mensagem final
int quantidade;
printf("Quantidade: ");
scanf("%d", &quantidade);
bool encontrou = false;
for (int i = 1; i <= quantidade; i++)
{
int numero;
printf("Número %d: ", i);
scanf("%d", &numero);
if (numero % 7 == 0)
{
printf("Primeiro múltiplo de 7 encontrado: %d\n", numero);
printf("Tentativa: %d\n", i);
encontrou = true;
break;
}
}
if (!encontrou)
{
printf("Nenhum número premiado foi encontrado.\n");
}
Exercício 17 — Coelho mágico e as cenouras
Um coelho mágico encontrou uma cenoura encantada. No primeiro dia, ele possui 1 cenoura. A cada novo dia, a quantidade de cenouras dobra em relação ao dia anterior.
Escreva um programa em C que receba a quantidade de dias e exiba, para cada dia, quantas cenouras o coelho terá.
A quantidade de dias deve ser um inteiro positivo. Caso contrário, o programa deve informar: "Entrada inválida".
Exemplo de Entrada e Saída
Entrada:
Dias: 5
Saída:
Dia 1: 1 cenoura(s)
Dia 2: 2 cenoura(s)
Dia 3: 4 cenoura(s)
Dia 4: 8 cenoura(s)
Dia 5: 16 cenoura(s)
Entrada:
Dias: 0
Saída:
Entrada inválida
Este exercício introduz uma ideia nova: o próximo valor depende do valor anterior. Você pode guardar a quantidade atual de cenouras em uma variável, começar com 1 e, ao fim de cada repetição, dobrar esse valor.
Organize a lógica assim:
ler dias
se (dias <= 0)
exibir "Entrada inválida"
senão
cenouras = 1
para i de 1 até dias
exibir dia e cenouras
cenouras = cenouras * 2
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
int dias;
printf("Dias: ");
scanf("%d", &dias);
if (dias <= 0)
{
printf("Entrada inválida\n");
}
else
{
int cenouras = 1;
for (int i = 1; i <= dias; i++)
{
printf("Dia %d: %d cenoura(s)\n", i, cenouras);
cenouras *= 2;
}
} }


