If else en C: ejercicios resueltos con condicionales anidadas

  2 minutos

Si buscas ejercicios condicionales en C, esta guía reúne casos típicos con if, if else, if else if y condicionales anidadas.

La clave es aprender a escribir decisiones claras y evitar ramas innecesarias.

Resuelve estos 4 mini ejercicios:

  1. clasificar un número como positivo, negativo o cero,
  2. convertir una nota numérica en calificación por rangos,
  3. decidir si un año es bisiesto,
  4. validar acceso con dos condiciones lógicas.
#include <stdio.h>

void clasificar_numero(int n) {
    if (n > 0) {
        printf("%d es positivo\n", n);
    } else if (n < 0) {
        printf("%d es negativo\n", n);
    } else {
        printf("%d es cero\n", n);
    }
}

const char *calificacion(int nota) {
    if (nota >= 90) return "Sobresaliente";
    else if (nota >= 70) return "Notable";
    else if (nota >= 50) return "Aprobado";
    else return "Suspenso";
}

int es_bisiesto(int anio) {
    if (anio % 400 == 0) return 1;
    if (anio % 100 == 0) return 0;
    if (anio % 4 == 0) return 1;
    return 0;
}

int acceso_permitido(int edad, int tiene_autorizacion) {
    if (edad >= 18 || (edad >= 16 && tiene_autorizacion)) {
        return 1;
    }
    return 0;
}

int main(void) {
    clasificar_numero(-8);
    printf("Nota 76 => %s\n", calificacion(76));
    printf("Año 2024 bisiesto: %s\n", es_bisiesto(2024) ? "sí" : "no");
    printf("Acceso (17, autorizacion=1): %s\n",
           acceso_permitido(17, 1) ? "permitido" : "denegado");
    return 0;
}
-8 es negativo
Nota 76 => Notable
Año 2024 bisiesto: sí
Acceso (17, autorizacion=1): permitido
  • Encadenar if independientes cuando necesitas else if.
  • Escribir condiciones complejas sin paréntesis y cambiar la prioridad lógica.
  • No cubrir casos borde (por ejemplo nota exacta 50 o 70).
  • Anidar demasiado en vez de simplificar condiciones.

Los condicionales aparecen en:

  • validación de datos,
  • reglas de negocio,
  • control de acceso y permisos,
  • clasificación de resultados por tramos.

Dominar if else acelera el resto de estructuras de control y diseño de funciones.

Si quieres una ruta completa con progresión real de dificultad:

Si las condiciones son excluyentes, usa if else if. Si pueden cumplirse varias a la vez, usa if separados.

Divide la lógica en variables intermedias con nombres claros. Mejora legibilidad y reduce errores.

No, pero conviene limitar la profundidad. Si crece demasiado, suele ser mejor extraer funciones o simplificar reglas.