Ejercicio 05 — Leer N y mostrar los N primeros términos de la serie de Fibonacci
Dificultad: amarillo · Módulo 03 (Bucles)
Enunciado
Leer N y mostrar los N primeros términos de la serie de Fibonacci.
Diagramas de flujo


Cómo se resuelve
La serie de Fibonacci empieza con 0 y 1, y cada término siguiente es la suma de los dos anteriores: 0, 1, 1, 2, 3, 5, 8, .... El reto es generarla con un bucle usando solo dos variables que se van “deslizando” a lo largo de la serie.
- Antes de nada, el programa comprueba
if (n <= 0)y sale conreturn 1siNno es válido: no tiene sentido pedir “0 términos”. - Arrancamos con
long long a = 0, b = 1, los dos primeros términos. - En cada vuelta imprimimos
a(el término actual) y luego avanzamos:siguiente = a + b, despuésa = byb = siguiente. Es como si una ventana de dos números fuera resbalando hacia la derecha por la sucesión.
La trampa clave está en el orden de las tres asignaciones. Necesitamos la variable auxiliar siguiente porque, si hiciéramos a = b primero y luego intentáramos calcular b = a + b, ya habríamos perdido el valor original de a y el cálculo saldría mal. Guardar antes la suma en siguiente protege ese valor. Como segundo detalle, se usa long long porque Fibonacci también crece muy rápido y desbordaría un int en pocas decenas de términos.
Para practicar — cópialo y complétalo
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 03: Bucles
* Ejercicio 05 — PRACTICA (rellena los TODO)
* Enunciado: Leer N y mostrar los N primeros términos de la serie de Fibonacci.
* Dificultad: amarillo
* Stdin: 10
* Compilar: gcc -std=c11 -Wall ej05_practica.c -o ej05 && ./ej05
*/
#include <stdio.h>
int main(void) {
int n;
// TODO 1: Pide N al usuario y leelo
// TODO 2: Declara dos variables long long: a = 0, b = 1
// Estos son los dos primeros terminos de la serie
// TODO 3: Bucle for de i=0 a i<n:
// - Imprime 'a' (el termino actual)
// - Calcula el siguiente: siguiente = a + b
// - Actualiza: a = b, b = siguiente
// CUIDADO con el orden de las asignaciones: si cambias a primero,
// pierdes su valor al calcular b. Usa una variable temporal.
// TODO 4: Imprime un salto de linea al final
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 03: Bucles
* Ejercicio 05 — MODELO (resuelto)
* Enunciado: Leer N y mostrar los N primeros términos de la serie de Fibonacci.
* Dificultad: amarillo
* Stdin: 10
* Compilar: gcc -std=c11 -Wall ej05_modelo.c -o ej05 && ./ej05
*/
#include <stdio.h>
int main(void) {
int n;
printf("Cuantos terminos de Fibonacci quieres ver? ");
scanf("%d", &n);
if (n <= 0) {
printf("N debe ser mayor que 0.\n");
return 1;
}
// Los dos primeros terminos son fijos: 0 y 1
long long a = 0, b = 1;
printf("Fibonacci (%d terminos): ", n);
for (int i = 0; i < n; i++) {
printf("%lld", a);
if (i < n - 1) printf(" "); // separador entre terminos
long long siguiente = a + b; // calculamos el siguiente
a = b; // avanzamos: a toma el valor de b
b = siguiente; // b toma el siguiente
}
printf("\n");
return 0;
}Ejecútalo en el navegador
▶ Abrir y ejecutar en Compiler Explorer
Se abre con la solución ya cargada; pulsa el botón de ejecutar (Run) para ver la salida. No hay que instalar nada.
Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.