Hola re_code, te explicare las matrices bidimensionales en el lenguaje C, estas constan de una fila y una columna matriz[fila][columna]
para poder moverse entre ambas se utilizan dos for anidados como te muestro en el siguiente ejemplo:
int cadena[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
}
}
Si te das cuenta, veras que el primer for sirve para moverte entre las filas, el segundo entre las columnas, entonces por ejemplo empieza en cadena[0][0,1,2,3....m] entonces para lo que requieres por ejemplo pon una condición para que si se encuentra en cierta poscicion de tu gusto imprima un cero, de lo contrario un 1. Ejemplo:
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(i==j)
{
cadena[i][j]=1;
}
else
{
cadena[i][j]=0;
}
}
}
Este pequeño programa lo que hara es poner un 1 en diagonal a lo largo de toda la matriz (es decir cuando fila y columna sean iguales) si quieres que sea aleatorio el 1, lo que se me ocurre es usar estas instrucciones para generar un numero aleatorio:
1) Asignación de valor aleatorio a una variable.
Librerias a considerar: #include <time.h> , #include <stdlib.h>
srand (time(NULL)); [Instrucción que inicializa el generador de números aleatorios]
int variable = rand(); [Obtención de un número aleatorio entero entre cero y un valor muy grande]
(Fuente de información de numeros aleatorios:http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=917:generar-numeros-o-secuencias-aleatorios-en-c-intervalos-srand-y-rand-time-null-randmax-cu00525f&catid=82:curso-basico-programacion-lenguaje-c-desde-cero&Itemid=210)
Y eso lo adecuas en el if del ejemplo anterior para colocar el 1, ya nada mas para imprimir, es seguir el mismo esquema de los dos for.
Espero haberte ayudado saludos.