Ejercicio 02 — Lee dos enteros e imprime el mayor

Dificultad: verde · Módulo 02 (Condicionales)

Enunciado

Lee dos enteros e imprime el mayor; si son iguales, indicalo.

Diagrama de flujo

Diagrama de flujo del ejercicio 02

Cómo se resuelve

Tres resultados posibles (a mayor, b mayor, o iguales) se resuelven con una cadena if / else if / else, que garantiza que se ejecute exactamente una rama.

  1. Se leen los dos enteros de una vez con scanf("%d %d", &a, &b) (dos %d separados por espacio; ambos con &).
  2. if (a > b) cubre el primer caso; else if (b > a) el segundo.
  3. El else final no necesita condición: si las dos comparaciones anteriores fallaron, es que no es a > b ni b > a, así que forzosamente a == b. El caso “son iguales” te lo regala la lógica, sin escribirlo.

La trampa habitual es usar tres if sueltos e independientes en vez de encadenarlos con else if: así C evalúa siempre las tres condiciones, y es fácil imprimir dos mensajes o dejar el caso de iguales sin cubrir. La cadena if/else if/else es excluyente por construcción: en cuanto una rama entra, el resto se ignora.

Para practicar — cópialo en Dev-C++

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

/*
  Curso de C — Modulo 02: Condicionales
  Ejercicio 02 — PRACTICA (rellena los TODO)
  Enunciado: Lee dos enteros e imprime el mayor; si son iguales, indicalo.
  Dificultad: verde
  Compilar: gcc -std=c11 -Wall ej02_practica.c -o ej02 && ./ej02
*/
 
#include <stdio.h>
 
int main(void) {
    int a, b;
 
    // TODO: pide al usuario dos enteros
    // TODO: leerlos con scanf en una sola llamada: scanf("%d %d", &a, &b)
 
    // TODO: usa if / else if / else con tres ramas:
    //   rama 1 (a > b):  "El mayor es <a>"
    //   rama 2 (b > a):  "El mayor es <b>"
    //   rama 3 (iguales): "Son iguales"
 
    return 0;
}

Solución — cópiala y ejecútala

/*
  Curso de C — Modulo 02: Condicionales
  Ejercicio 02 — MODELO (resuelto)
  Enunciado: Lee dos enteros e imprime el mayor; si son iguales, indicalo.
  Dificultad: verde
  Compilar: gcc -std=c11 -Wall ej02_modelo.c -o ej02 && ./ej02
*/
 
#include <stdio.h>
 
int main(void) {
    int a, b;
    printf("Introduce dos enteros: ");
    scanf("%d %d", &a, &b);
 
    if (a > b) {
        printf("El mayor es %d\n", a);
    } else if (b > a) {
        printf("El mayor es %d\n", b);
    } else {
        // a == b: ambas condiciones anteriores fallaron
        printf("Son iguales\n");
    }
 
    return 0;
}

Cómo usarlo

Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.

Conexiones