Ejercicio 02 — Funciones max(a,b) y min(a,b)

Dificultad: verde · Módulo 04 (Funciones)

Enunciado

Funciones max(a,b) y min(a,b). Pide dos enteros e imprime el mayor y el menor.

Diagrama de flujo

Diagrama de flujo del ejercicio 02

Cómo se resuelve

Aquí escribes dos funciones pequeñas, max(a, b) y min(a, b), cada una con su prototipo arriba. Cada una recibe dos enteros y devuelve uno solo.

  • max compara: si a > b, return a; corta ahí mismo y sale de la función; si no llega a ese return, ejecuta return b;. No hace falta else, porque un return termina la función de inmediato.
  • min es la misma idea con el operador al revés.
  • En main lees dos enteros con scanf("%d %d", &x, &y) (los enteros sí llevan &, porque scanf necesita la dirección donde guardar) y pasas x e y a cada función.

El concepto clave es que x e y viajan por valor: dentro de max, los parámetros a y b son copias. La función devuelve un dato nuevo; no modifica tus variables originales.

Trampa típica: intentar que una sola función devuelva “el mayor y el menor a la vez”. Una función con return normal devuelve un único valor. Para dos resultados, lo natural aquí son dos funciones separadas (más adelante verás cómo devolver varios valores con punteros).

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 04: Funciones
 * Ejercicio 02 — PRACTICA (rellena los TODO)
 * Enunciado: Funciones max(a,b) y min(a,b). Pide dos enteros e imprime el mayor y el menor.
 * Dificultad: verde
 * Compilar: gcc -std=c11 -Wall ej02_practica.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
/* TODO: escribe los prototipos de max y min */
 
int main(void) {
    int x, y;
    /* TODO: pide dos enteros al usuario con printf + scanf */
    /* TODO: imprime el resultado de max(x, y) y de min(x, y) */
    return 0;
}
 
/* TODO: define int max(int a, int b)
 *   - devuelve el mayor de los dos
 *   - pista: un if simple basta
 */
 
/* TODO: define int min(int a, int b)
 *   - devuelve el menor de los dos
 */

Solución — cópiala y ejecútala

/*
 * Curso de C — Modulo 04: Funciones
 * Ejercicio 02 — MODELO (resuelto)
 * Enunciado: Funciones max(a,b) y min(a,b). Pide dos enteros e imprime el mayor y el menor.
 * Dificultad: verde
 * Compilar: gcc -std=c11 -Wall ej02_modelo.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
/* Prototipos */
int max(int a, int b);
int min(int a, int b);
 
int main(void) {
    int x, y;
    printf("Introduce dos enteros: ");
    scanf("%d %d", &x, &y);
    printf("Max: %d\n", max(x, y));
    printf("Min: %d\n", min(x, y));
    return 0;
}
 
/* Devuelve el mayor de a y b */
int max(int a, int b) {
    if (a > b) return a;
    return b;
}
 
/* Devuelve el menor de a y b */
int min(int a, int b) {
    if (a < b) return a;
    return b;
}

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