LP2

LP2

LP2

profile-pic

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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.

Dica 2 — Estrutura

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
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

Leia os dois valores como double:

double salario = Convert.ToDouble(Console.ReadLine());
double gastos  = Convert.ToDouble(Console.ReadLine());
Passo 2 — Validação

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");
}
Passo 3 — Caso dentro do orçamento

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");
}
Passo 4 — Orçamento estourado

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.");
}
 Depurador — Exercício 01
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console

                                

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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.

Dica 2 — Estrutura

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"
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

Gols são valores inteiros — use int e Convert.ToInt32:

int golsA = Convert.ToInt32(Console.ReadLine());
int golsB = Convert.ToInt32(Console.ReadLine());
Passo 2 — Validação

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");
}
Passo 3 — Empate

Se os dois valores são iguais, o resultado é empate. Use == para comparar inteiros:

else if (golsA == golsB)
{
    Console.WriteLine("Empate");
}
Passo 4 — Vitória de A ou B

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");
}
 Depurador — Exercício 02
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console

                                

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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.

Dica 2 — Estrutura

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"
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

As coordenadas podem ser decimais — use double:

double X = Convert.ToDouble(Console.ReadLine());
double Y = Convert.ToDouble(Console.ReadLine());
Passo 2 — Verificar se está sobre um eixo

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");
}
Passo 3 — Quadrantes 1º e 2º

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");
}
Passo 4 — Quadrantes 3º e 4º

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");
}
 Depurador — Exercício 03
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console

                                

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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).

Dica 2 — Estrutura

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"
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

Ângulos podem ser inteiros — use int:

int a1 = Convert.ToInt32(Console.ReadLine());
int a2 = Convert.ToInt32(Console.ReadLine());
int a3 = Convert.ToInt32(Console.ReadLine());
Passo 2 — Validação

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");
}
Passo 3 — Verificar soma

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");
}
Passo 4 — Verificar se é retâ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");
}
 Depurador — Exercício 04
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console

                                

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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.

Dica 2 — Estrutura

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"
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

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());
Passo 2 — Validação

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");
}
Passo 3 — Calcular soma

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;
Passo 4 — Verificar aptidão

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");
    }
}
 Depurador — Exercício 05
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console

                                

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

Use apenas se já tentou resolver ou quer comparar sua resposta
Dica 1 — Raciocínio

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.

Dica 2 — Estrutura

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
Solução — passo a passo

A solução será revelada em etapas. Tente completar cada passo antes de avançar.

Passo 1 — Leitura das entradas

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());
Passo 2 — Validação das notas

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");
}
Passo 3 — Calcular soma e rendimento

O rendimento é a média das três notas.

else
{
    double soma       = nota1 + nota2 + nota3;
    double rendimento = soma / 3;
Passo 4 — Exibir resultado

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.

 Depurador — Exercício 06
Código
Variáveis
TipoNomeValor
nenhuma variável ainda
Console