Funciones en C: ejercicios resueltos paso a paso

Funciones en C: ejercicios resueltos paso a paso

Si buscas ejercicios de funciones en C resueltos, aquí tienes los patrones que aparecen en cualquier examen de introducción a C.

El objetivo es dominar cuatro situaciones clave: funciones sin retorno, funciones que devuelven un valor, paso por valor y paso por referencia mediante punteros.

Enunciado

Resuelve estos 4 mini ejercicios con funciones:

  1. imprimir un saludo (función void sin parámetros),
  2. calcular el cuadrado de un número (función con retorno),
  3. intercambiar dos enteros (paso por referencia con punteros),
  4. calcular el factorial de n de forma iterativa.

Solución en C

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <stdio.h>

/* 1. Función void: no devuelve nada */
void saludar(void) {
    printf("Hola desde una función en C\n");
}

/* 2. Función con retorno: devuelve el cuadrado */
int cuadrado(int x) {
    return x * x;
}

/* 3. Paso por referencia: intercambia dos enteros */
void intercambiar(int *a, int *b) {
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

/* 4. Función iterativa: factorial */
long factorial(int n) {
    long resultado = 1;
    for (int i = 2; i <= n; i++) {
        resultado *= i;
    }
    return resultado;
}

int main(void) {
    saludar();

    int n = 7;
    printf("cuadrado(%d) = %d\n", n, cuadrado(n));

    int x = 3, y = 9;
    intercambiar(&x, &y);
    printf("tras intercambiar: x=%d, y=%d\n", x, y);

    printf("factorial(6) = %ld\n", factorial(6));

    return 0;
}

Resultado esperado

1
2
3
4
Hola desde una función en C
cuadrado(7) = 49
tras intercambiar: x=9, y=3
factorial(6) = 720

Errores frecuentes

  • Olvidar declarar el prototipo de la función antes de main cuando se define después.
  • Confundir paso por valor con paso por referencia: modificar el parámetro local no afecta a la variable original.
  • No poner return en funciones que no son void.
  • Usar void como tipo de retorno cuando la función sí devuelve algo.

Aplicación práctica

Las funciones son la base de cualquier programa C real:

  • separan la lógica en bloques reutilizables,
  • permiten pasar datos por referencia para modificar variables del llamador,
  • facilitan las pruebas unitarias y el mantenimiento.

Dominar el paso por referencia con punteros es imprescindible para trabajar después con arrays y estructuras de datos.

Siguiente ejercicio recomendado

Práctica guiada y siguiente paso

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

FAQ

¿Cuándo usar void como tipo de retorno?

Cuando la función no necesita devolver ningún valor al llamador: imprime, modifica variables por referencia o realiza una acción sin resultado.

¿Qué diferencia hay entre paso por valor y paso por referencia?

En paso por valor se copia el dato; la función trabaja con la copia y el original no cambia. En paso por referencia se pasa la dirección de memoria (&variable) y la función puede modificar el original a través del puntero.

¿Se puede devolver más de un valor desde una función en C?

No directamente. La solución habitual es devolver uno por return y los demás por referencia (punteros), o agruparlos en un struct.