Simulado prova C

  • 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);
}
  • 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);
    }
}

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);
}

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");
    }
}
Rolar para cima