Ejercicio 01 — Lee una matriz MxN (max 10x10) e imprimela con formato alineado
Dificultad: verde · Módulo 06 (Matrices (arrays 2D))
Enunciado
Lee una matriz MxN (max 10x10) e imprimela con formato alineado.
Diagrama de flujo

Cómo se resuelve
Este es el “hola mundo” de las matrices: leer una cuadrícula de números y volver a imprimirla ordenada. Una matriz es un array de dos índices: el primero elige la fila y el segundo la columna, así que m[i][j] es la casilla de la fila i, columna j.
- Reservamos siempre el tamaño máximo con
int m[MAX][MAX](una cuadrícula de 10×10), pero luego solo usamos lasfilas × colsque pida el usuario. En C el tamaño de un array se fija al declararlo, así que reservas de sobra y trabajas con una esquina. - Para recorrer toda la cuadrícula se usa el patrón clave del módulo, el doble bucle: el
forexterior avanza por las filas (i) y, dentro, otroforrecorre las columnas (j). Con eso lees cada celda conscanf("%d", &m[i][j])— ojo al&, obligatorio porquescanfnecesita la dirección de la casilla. - Al imprimir,
printf("%4d", ...)reserva un ancho de 4 caracteres por número para que las columnas queden alineadas.
La trampa típica está en dónde va el salto de línea. El "\n" no va dentro del bucle de columnas, sino justo después, en el cuerpo del bucle de filas: primero se pinta la fila entera y solo entonces se baja de línea.
for (int i = 0; i < filas; i++) {
for (int j = 0; j < cols; j++)
printf("%4d", m[i][j]);
printf("\n"); // salto AL TERMINAR cada fila, no en cada número
}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 06: Matrices (arrays 2D)
* Ejercicio 01 — PRACTICA (rellena los TODO)
* Enunciado: Lee una matriz MxN (max 10x10) e imprimela con formato alineado.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej01_practica.c -o ej01 && ./ej01
*/
#include <stdio.h>
#define MAX 10
int main(void) {
int m[MAX][MAX];
int filas, cols;
// TODO 1: pedir al usuario el numero de filas y columnas con scanf
// (recuerda: scanf necesita & delante de la variable)
// TODO 2: con un doble bucle for (i = filas, j = cols),
// leer cada elemento m[i][j] con scanf
// TODO 3: con otro doble bucle, imprimir la matriz:
// - usa printf("%4d", m[i][j]) para alinear
// - al terminar cada fila (bucle exterior), imprime "\n"
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 06: Matrices (arrays 2D)
* Ejercicio 01 — MODELO (resuelto)
* Enunciado: Lee una matriz MxN (max 10x10) e imprimela con formato alineado.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej01_modelo.c -o ej01 && ./ej01
*/
#include <stdio.h>
#define MAX 10
int main(void) {
int m[MAX][MAX];
int filas, cols;
// Leer dimensiones
printf("Numero de filas (1-%d): ", MAX);
scanf("%d", &filas);
printf("Numero de columnas (1-%d): ", MAX);
scanf("%d", &cols);
// Leer matriz elemento a elemento
printf("Introduce los %d valores fila a fila:\n", filas * cols);
for (int i = 0; i < filas; i++)
for (int j = 0; j < cols; j++)
scanf("%d", &m[i][j]);
// Imprimir la matriz con campo de 4 caracteres para alinear
printf("\nMatriz %dx%d:\n", filas, cols);
for (int i = 0; i < filas; i++) {
for (int j = 0; j < cols; j++)
printf("%4d", m[i][j]);
printf("\n"); // nueva fila
}
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.