Siempre que dibujarás una "matriz" necesitas al menos dos ciclos
for anidados, es decir, uno dentro de otro. Uno que recorra filas (el de afuera) y otro que recorra columnas (el de adentro).
Ejemplo:
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
}
}
Para dibujar la matriz sería tan fácil como imprimir dentro del segundo for cada caracter y después de ese for, cada salto de línea:
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
print("0");
}
print("\n");
}
Eso imprimiría la matriz 10x10 llena de puros ceros (0). No sé cómo se ponen los saltos de línea allá, así que usé algo genérico como imprimir
\n. Lo que hace es que entra al primer ciclo
for (quien recorre las filas) y empieza por la primera línea. Luego entra al segundo for (quien recorre las columnas) e imprime todos los ceros necesarios en la columna, luego sale del ciclo, imprime un salto de línea y avanza a la segunda fila.
Para agregarle esa línea vertical solo debes analizar bien cuál es la característica de lo que te piden. Si miras la imagen que publicaste te darás cuenta que la posición horizontal de la X coincide con el número de fila donde se encuentra. Por ejemplo, la X de la sexta fila está en la sexta columna. Por lo tanto, podemos hacer una condición de que cuando el recorrido de las columnas sea igual al número de fila, se imprima X en vez de 0.
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
if(i == j){
print("X");
}
else{
print("0");
}
}
print("\n");
}
La condicional que dice
if(i == j) indica que si el número de la fila (i) es igual al número de la columna (j), imprime una X y de lo contrario solo imprime ceros.
Espero que con esta explicación te haya quedado claro. Cualquier duda puedes comentarlo aquí mismo.