Questão 1 – Cálculo Progressivo de Tarifas
Regras:
- Até 100 kWh → R$ 0,50 por kWh
- De 101 a 300 kWh → R$ 0,75 por kWh
- Acima de 300 kWh → R$ 1,00 por kWh
O cálculo deve considerar as faixas progressivamente, como acontece com contas de luz reais.
Ou seja, se o consumo for 350 kWh, os 100 primeiros são cobrados a R$ 0,50,
os 200 seguintes (de 101 a 300) a R$ 0,75,
e os 50 restantes a R$ 1,00.
Exemplos:
Entrada
(kWh) Cálculo detalhado Valor total
80 80 × 0.50 = 40.00 R$ 40,00
100 100 × 0.50 = 50.00 R$ 50,00
150 (100 × 0.50) + (50 × 0.75) = 50 + 37.50 R$ 87,50
250 (100 × 0.50) + (150 × 0.75) = 50 + 112.50 R$ 162,50
300 (100 × 0.50) + (200 × 0.75) = 50 + 150 R$ 200,00
320 (100 × 0.50) + (200 × 0.75) + (20 × 1.00) = 50 + 150 + 20 R$ 220,00
int main()
{
float kwh, valor;
printf("kWh: ");
scanf("%f", &kwh);
if (kwh <= 100) {
valor = (0.5 * kwh);
} else if (kwh > 100 && kwh <= 300) {
kwh = (kwh - 100);
valor = 50 + (kwh * 0.75);
} else {
kwh = (kwh - 300);
valor = (200 + (kwh * 1));
}
printf("O valor da sua conta R$ %.2f", valor);
}
Questão 2 – Validação de Data Simplificada
Escreva um programa que leia dia e mês (números inteiros) e verifique se a data é válida considerando:
- Meses com 31 dias: 1, 3, 5, 7, 8, 10, 12
- Meses com 30 dias: 4, 6, 9, 11
- Fevereiro: até 28 dias (ano multiplo de 4 tem 29 dias)
Exemplos:
Entrada Situação Saída esperada
dia = 31, mês = 1, ano = 2025 Janeiro tem 31 dias Data válida
dia = 31, mês = 4, ano = 2025 Abril tem só 30 dias Data inválida
dia = 29, mês = 2, ano = 2024 2024 é bissexto Data válida
dia = 29, mês = 2, ano = 2025 2025 não é bissexto Data inválida
dia = 15, mês = 13, ano = 2025 Mês inexistente Data inválida
#include <stdio.h>
#include <stdlib.h>
int main()
{
int dia, mes, ano, bissexto, ev[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("Informe a data: ");
scanf("%d/%d/%d", &dia,&mes,&ano);
bissexto = (ano % 4 == 0);
if (bissexto) {
ev[2] = 29;
}
if (ano < 1) {
printf("Ano invalido!\n");
} else if (mes < 1 || mes > 12) {
printf("Mes invalido!\n");
} else if (dia < 1 || dia > ev[mes]) {
printf("Dia invalido!\n");
} else {
printf("Data valida: %2d/%02d/%04d\n", dia, mes, ano);
}
}
Questão 3 – Maior diferença
Ler três números reais a, b, c e mostrar a maior diferença absoluta entre dois deles.
Exemplos:
Entrada (a, b, c)
Diferenças possíveis Maior
diferença Saída esperada
8 3 10 8−3=5, 8−10=2, 10−3=7 7 Maior diferença: 7.00
-2 4 1 (-2−4)=6, (-2−1)=3, (4−1)=3 6.00 Maior diferença: 6.00
#include <stdio.h>
#include <math.h> // fabs = valor absoluto
int main() {
float a, b, c, d1, d2, d3, maior;
printf("Digite tres numeros reais: ");
scanf("%f %f %f", &a, &b, &c);
d1 = fabs(a - b);
d2 = fabs(a - c);
d3 = fabs(b - c);
maior = d1;
if (d2 > maior) maior = d2;
if (d3 > maior) maior = d3;
printf("Maior diferenca: %.2f\n", maior);
}
Questão 4 – Classificação de Horário de Aula
Faixas de aula:
- Manhã: 07:30 – 11:45
- Tarde: 13:00 – 17:15
- Noite: 18:30 – 22:15
Tarefa:
Dado o horário de início e fim de um evento (hora e minuto), determinar qual faixa predominou.
Se o tempo em duas faixas for igual, escolher a que começa antes.
Exemplos:
Início Fim Duração em cada faixa Predominante
08:00 → 10:00 2h dentro da manhã Manhã
14:00 → 16:30 2h30 na tarde Tarde
19:00 → 21:30 2h30 na noite Noite
10:00 → 15:00 1h45 manhã, 2h tarde Tarde
11:00 → 13:00 45 min manhã, 0h tarde (13:00 início) Manhã
17:00 → 19:00 15 min tarde, 30 min noite Noite
11:00 → 11:45 45 min manhã Manhã
17:00 → 18:45 15 min tarde, 15 min noite → empate Tarde (começa antes)
#include <stdio.h>
int main() {
int hi, mi, hf, mf;
printf("Inicio (hh mm): ");
scanf("%d %d", &hi, &mi);
printf("Fim (hh mm): ");
scanf("%d %d", &hf, &mf);
int inicio = hi * 60 + mi;
int fim = hf * 60 + mf;
// Limites em minutos
int m1 = 7*60 + 30; // 07:30
int m2 = 11*60 + 45; // 11:45
int t1 = 13*60; // 13:00
int t2 = 17*60 + 15; // 17:15
int n1 = 18*60 + 30; // 18:30
int n2 = 22*60 + 15; // 22:15
int manha = 0, tarde = 0, noite = 0;
// Manhã
if (fim > m1 && inicio < m2) {
int in = (inicio > m1) ? inicio : m1;
int fi = (fim < m2) ? fim : m2;
if (fi > in) manha = fi - in;
}
// Tarde
if (fim > t1 && inicio < t2) {
int in = (inicio > t1) ? inicio : t1;
int fi = (fim < t2) ? fim : t2;
if (fi > in) tarde = fi - in;
}
// Noite
if (fim > n1 && inicio < n2) {
int in = (inicio > n1) ? inicio : n1;
int fi = (fim < n2) ? fim : n2;
if (fi > in) noite = fi - in;
}
// Escolher predominante (com desempate pela ordem: manhã > tarde > noite)
if (manha >= tarde && manha >= noite) {
printf("Manha\n");
} else if (tarde >= noite) {
printf("Tarde\n");
} else {
printf("Noite\n");
}
}