Lista de Exercícios — Estruturas de Seleção
Esta página reúne exercícios de revisão sobre estruturas de seleção. Leia cada enunciado com atenção e desenvolva os programas em C# conforme solicitado.
Selecione um exercício no menu lateral ou abaixo para começar.
Exercício 01 - Orçamento
Escreva um programa em C# que receba o valor do salário e o total de gastos de uma pessoa.
Considere que ambos os valores devem ser números maiores ou iguais a zero. Caso algum valor seja negativo, o programa deve informar: "Entrada inválida".
O programa deve exibir:
- "Gastos dentro do orçamento", se os gastos forem menores ou iguais ao salário
- "Orçamento estourado!", se os gastos forem maiores que o salário
Nesse último caso, o programa deve também informar o valor da dívida (diferença entre gastos e salário).
Exemplo de Entrada e Saída
Entrada:
Salário: 2500
Gastos: 4000
Saída:
Orçamento estourado!
Sua dívida é de 1500 reais.
Entrada:
Salário: 3000
Gastos: 2500
Saída:
Gastos dentro do orçamento
Entrada:
Salário: -1000
Gastos: 500
Saída:
Entrada inválida
Antes de comparar salário e gastos, valide as entradas. Um único if com o operador || consegue checar se qualquer um dos valores é negativo. Se a entrada for válida, aí sim compare os dois valores para decidir o resultado.
Organize a lógica assim:
ler salario
ler gastos
se (salario < 0 OU gastos < 0)
exibir "Entrada inválida"
senão se (gastos <= salario)
exibir "Gastos dentro do orçamento"
senão
exibir "Orçamento estourado!"
calcular divida = gastos - salario
exibir divida
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Leia os dois valores como double:
double salario = Convert.ToDouble(Console.ReadLine()); double gastos = Convert.ToDouble(Console.ReadLine());
Antes de qualquer comparação, verifique se algum valor é negativo. O operador || garante que basta um ser inválido para rejeitar a entrada:
if (salario < 0 || gastos < 0)
{
Console.WriteLine("Entrada inválida");
}
Se a entrada é válida, compare os valores. Use else if para continuar a mesma cadeia lógica:
else if (gastos <= salario)
{
Console.WriteLine("Gastos dentro do orçamento");
}
Se nenhuma condição anterior foi verdadeira, os gastos superam o salário. Calcule a dívida por subtração e exiba as duas mensagens:
else
{
double divida = gastos - salario;
Console.WriteLine("Orçamento estourado!");
Console.WriteLine($"Sua dívida é de {divida} reais.");
}
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||
Exercício 02 - Resultado de partida
Escreva um programa em C# que receba o número de gols marcados por dois times (time A e time B).
Considere que o número de gols deve ser um valor inteiro maior ou igual a zero. Caso algum valor seja negativo, o programa deve informar: "Entrada inválida".
O programa deve exibir:
- "Empate", se ambos os times fizerem o mesmo número de gols
- "O time A venceu", se o time A fizer mais gols
- "O time B venceu", se o time B fizer mais gols
Exemplo de Entrada e Saída
Entrada:
Gols do time A: 3
Gols do time B: 1
Saída:
O time A venceu
Entrada:
Gols do time A: 2
Gols do time B: 2
Saída:
Empate
Há quatro saídas possíveis: entrada inválida, empate, vitória do time A e vitória do time B. Valide primeiro, depois encadeie os if / else if / else na ordem lógica. Perceba que se não for empate e nem vitória de A, só sobra uma opção — não é preciso checar explicitamente.
Organize a lógica assim:
ler golsA
ler golsB
se (golsA < 0 OU golsB < 0)
exibir "Entrada inválida"
senão se (golsA == golsB)
exibir "Empate"
senão se (golsA > golsB)
exibir "O time A venceu"
senão
exibir "O time B venceu"
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Gols são valores inteiros — use int e Convert.ToInt32:
int golsA = Convert.ToInt32(Console.ReadLine()); int golsB = Convert.ToInt32(Console.ReadLine());
Número de gols nunca pode ser negativo. Rejeite a entrada se qualquer um for menor que zero:
if (golsA < 0 || golsB < 0)
{
Console.WriteLine("Entrada inválida");
}
Se os dois valores são iguais, o resultado é empate. Use == para comparar inteiros:
else if (golsA == golsB)
{
Console.WriteLine("Empate");
}
Se não houve empate, verifique qual time marcou mais. O último else cobre a vitória do time B sem precisar de outra condição:
else if (golsA > golsB)
{
Console.WriteLine("O time A venceu");
}
else
{
Console.WriteLine("O time B venceu");
}
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||
Exercício 03 - Quadrante no plano XY
Escreva um programa em C# que receba as coordenadas (X, Y) de um ponto no plano cartesiano.
O programa deve informar em qual quadrante o ponto se encontra.
- 1º quadrante: X > 0 e Y > 0
- 2º quadrante: X < 0 e Y > 0
- 3º quadrante: X < 0 e Y < 0
- 4º quadrante: X > 0 e Y < 0
Caso o ponto esteja sobre um dos eixos (X = 0 ou Y = 0), o programa deve informar: "O ponto está sobre um dos eixos".
Exemplo de Entrada e Saída
Entrada:
X: 7
Y: 9
Saída:
1º quadrante
Entrada:
X: 0
Y: 5
Saída:
O ponto está sobre um dos eixos
Comece pelo caso especial: quando o ponto está sobre um dos eixos. Isso acontece quando X == 0 ou Y == 0. Após tratar este caso, use os sinais de X e Y para determinar o quadrante.
Organize a lógica assim:
ler X
ler Y
se (X == 0 OU Y == 0)
exibir "O ponto está sobre um dos eixos"
senão se (X > 0 E Y > 0)
exibir "1º quadrante"
senão se (X < 0 E Y > 0)
exibir "2º quadrante"
senão se (X < 0 E Y < 0)
exibir "3º quadrante"
senão
exibir "4º quadrante"
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
As coordenadas podem ser decimais — use double:
double X = Convert.ToDouble(Console.ReadLine()); double Y = Convert.ToDouble(Console.ReadLine());
Se qualquer coordenada for zero, o ponto não pertence a nenhum quadrante:
if (X == 0 || Y == 0)
{
Console.WriteLine("O ponto está sobre um dos eixos");
}
Ambas as condições precisam ser verdadeiras ao mesmo tempo — use &&:
else if (X > 0 && Y > 0)
{
Console.WriteLine("1º quadrante");
}
else if (X < 0 && Y > 0)
{
Console.WriteLine("2º quadrante");
}
O último else cobre o 4º quadrante sem precisar de condição explícita:
else if (X < 0 && Y < 0)
{
Console.WriteLine("3º quadrante");
}
else
{
Console.WriteLine("4º quadrante");
}
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||
Exercício 04 - Triângulo retângulo
Um triângulo retângulo é aquele que possui exatamente um ângulo de 90º.
Para que três valores representem um triângulo válido, é necessário que:
- Todos os ângulos sejam maiores que zero
- A soma dos três ângulos seja igual a 180º
Escreva um programa em C# que receba como entrada o valor de três ângulos e realize as seguintes verificações:
- Se algum ângulo for menor ou igual a zero → "Entrada inválida"
- Se a soma dos ângulos for diferente de 180 → "Não forma um triângulo"
- Se a soma for 180 e existir um ângulo igual a 90 → "Forma um triângulo retângulo"
- Caso contrário → "Forma um triângulo, mas não é retângulo"
Exemplo de Entrada e Saída
Entrada:
30
90
60
Saída:
Forma um triângulo retângulo
Entrada:
50
60
70
Saída:
Forma um triângulo, mas não é retângulo
Entrada:
10
20
30
Saída:
Não forma um triângulo
Entrada:
-30
90
120
Saída:
Entrada inválida
Há três verificações encadeadas e a ordem importa: primeiro valide as entradas, depois verifique se forma triângulo (soma dos ângulos == 180), e só então cheque se é retângulo (algum ângulo == 90).
Organize a lógica assim:
ler a1, a2, a3
se (a1 <= 0 OU a2 <= 0 OU a3 <= 0)
exibir "Entrada inválida"
senão se (a1 + a2 + a3 != 180)
exibir "Não forma um triângulo"
senão se (a1 == 90 OU a2 == 90 OU a3 == 90)
exibir "Forma um triângulo retângulo"
senão
exibir "Forma um triângulo, mas não é retângulo"
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Ângulos podem ser inteiros — use int:
int a1 = Convert.ToInt32(Console.ReadLine()); int a2 = Convert.ToInt32(Console.ReadLine()); int a3 = Convert.ToInt32(Console.ReadLine());
Todos os ângulos devem ser maiores que zero. Use || para rejeitar a entrada se qualquer um falhar:
if (a1 <= 0 || a2 <= 0 || a3 <= 0)
{
Console.WriteLine("Entrada inválida");
}
Um triângulo válido tem soma de ângulos exatamente igual a 180:
else if (a1 + a2 + a3 != 180)
{
Console.WriteLine("Não forma um triângulo");
}
Se chegou aqui, a soma é 180. Agora basta verificar se algum ângulo é 90. O else final cobre o caso de triângulo não retângulo:
else if (a1 == 90 || a2 == 90 || a3 == 90)
{
Console.WriteLine("Forma um triângulo retângulo");
}
else
{
Console.WriteLine("Forma um triângulo, mas não é retângulo");
}
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||
Exercício 05 - Aptidão para Ciência da Computação
Escreva um programa em C# que receba as notas de um aluno em Matemática, Física e Química.
Considere que as notas devem estar no intervalo de 0 a 100. Caso alguma nota esteja fora desse intervalo, o programa deve informar: "Entrada inválida".
O aluno será considerado apto se todos os critérios abaixo forem satisfeitos:
- Matemática ≥ 65
- Física ≥ 55
- Química ≥ 50
- Soma das três notas ≥ 180
O programa deve exibir:
- "Aluno apto", se todos os critérios forem atendidos
- "Aluno não apto", caso contrário
Exemplo de Entrada e Saída
Entrada:
Matemática: 72
Física: 65
Química: 51
Saída:
Aluno apto
Entrada:
Matemática: 60
Física: 70
Química: 60
Saída:
Aluno não apto
Entrada:
Matemática: 110
Física: 70
Química: 60
Saída:
Entrada inválida
A aptidão depende de todos os critérios ao mesmo tempo. Isso significa que um único if com o operador && encadeando todas as condições resolve o caso de aptidão. Se qualquer critério falhar, o aluno já não é apto — não é preciso descobrir qual falhou.
Organize a lógica assim:
ler mat, fis, qui
se (mat < 0 OU mat > 100 OU fis < 0 OU fis > 100 OU qui < 0 OU qui > 100)
exibir "Entrada inválida"
senão
soma = mat + fis + qui
se (mat >= 65 E fis >= 55 E qui >= 50 E soma >= 180)
exibir "Aluno apto"
senão
exibir "Aluno não apto"
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Notas podem ter casas decimais — use double:
double mat = Convert.ToDouble(Console.ReadLine()); double fis = Convert.ToDouble(Console.ReadLine()); double qui = Convert.ToDouble(Console.ReadLine());
Cada nota deve estar entre 0 e 100. Verifique as três de uma vez com ||:
if (mat < 0 || mat > 100 ||
fis < 0 || fis > 100 ||
qui < 0 || qui > 100)
{
Console.WriteLine("Entrada inválida");
}
A soma é usada tanto para o critério de aptidão quanto para o cálculo interno — calcule uma vez e reutilize:
else
{
double soma = mat + fis + qui;
Todos os critérios devem ser verdadeiros ao mesmo tempo. Encadeie com &&:
if (mat >= 65 && fis >= 55 && qui >= 50 && soma >= 180)
{
Console.WriteLine("Aluno apto");
}
else
{
Console.WriteLine("Aluno não apto");
}
}
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||
Exercício 06 - Matrícula, notas e rendimento
Escreva um programa em C# que receba:
- Número de matrícula (inteiro)
- Nome do estudante
- Notas de três disciplinas
Considere que as notas devem estar no intervalo de 0 a 100. Caso alguma nota esteja fora desse intervalo, o programa deve informar: "Entrada inválida".
O programa deve calcular:
- A soma das notas
- O rendimento percentual (média das notas)
Em seguida, exibir todas as informações no formato:
- Matrícula
- Nome
- Notas
- Soma total
- Rendimento (%) com duas casas decimais
Exemplo de Entrada e Saída
Entrada:
Matrícula: 784
Nome: James
Notas:
70
80
90
Saída:
Matrícula: 784
Nome: James
Nota 1: 70
Nota 2: 80
Nota 3: 90
Soma = 240
Rendimento (%) = 80.00
Entrada:
Matrícula: 123
Nome: Ana
Notas:
70
150
80
Saída:
Entrada inválida
Divida o problema em quatro etapas: ler as entradas (tipos diferentes!), validar as notas, calcular soma e rendimento, e exibir tudo formatado. Note que o rendimento percentual é simplesmente a média das três notas — como elas vão de 0 a 100, a média já representa o percentual.
Organize a lógica assim:
ler matricula (int)
ler nome (string)
ler nota1, nota2, nota3 (double)
se (qualquer nota < 0 OU > 100)
exibir "Entrada inválida"
senão
soma = nota1 + nota2 + nota3
rendimento = soma / 3
exibir matricula, nome, notas, soma, rendimento
A solução será revelada em etapas. Tente completar cada passo antes de avançar.
Atenção aos tipos: matrícula é int, nome é string (use ReadLine() direto), notas são double:
int matricula = Convert.ToInt32(Console.ReadLine()); string nome = Console.ReadLine(); double nota1 = Convert.ToDouble(Console.ReadLine()); double nota2 = Convert.ToDouble(Console.ReadLine()); double nota3 = Convert.ToDouble(Console.ReadLine());
Apenas as notas precisam ser validadas (0 a 100). Matrícula e nome não têm restrição:
if (nota1 < 0 || nota1 > 100 ||
nota2 < 0 || nota2 > 100 ||
nota3 < 0 || nota3 > 100)
{
Console.WriteLine("Entrada inválida");
}
O rendimento é a média das três notas.
else
{
double soma = nota1 + nota2 + nota3;
double rendimento = soma / 3;
Exiba cada informação em uma linha separada, seguindo o formato do enunciado:
Console.WriteLine($"Matrícula: {matricula}");
Console.WriteLine($"Nome: {nome}");
Console.WriteLine($"Nota 1: {nota1}");
Console.WriteLine($"Nota 2: {nota2}");
Console.WriteLine($"Nota 3: {nota3}");
Console.WriteLine($"Soma = {soma}");
Console.WriteLine($"Rendimento (%) = {rendimento:F2}");
}
Extra: Ao usar o especificador de formatação :F2 após o nome da variável, é possível exibir o seu valor com 2 casas decimais.
| Tipo | Nome | Valor |
|---|---|---|
| nenhuma variável ainda | ||


