Ahi les dejo el codigo, a ver si lo logra ver cual es el error... no veo cual es :s
/*Dada una matriz A de N x N, se quiere obtener otra matriz R de N x N tal
que: R = A * AT donde: AT es la matriz transpuesta de A*/
#include<stdio.h>
#include<stdlib.h>
const int t=50;
void llenar (int matriz[t][t], int n)
{int f,c;
for(f=0;f<n;f++)
{for(c=0;c<n;c++)
{printf("Indique elementos [%d %d] ",f,c);
scanf("%d",&matriz[f][c]);
}
}
}
void imprimir (int matriz[t][t], int n)
{int f,c;
for(f=0;f<n;f++)
{for(c=0;c<n;c++)
{printf(" %d ",matriz[f][c]);
}
printf("\n");
}
}
void multiplicacion (int matriz[t][t],int n)
{int f,c,matrizmult[t][t],i,j,matriztras[t][t];
for(f=0;f<n;f++)
{for(c=0;c<n;c++)
{matrizmult[f][c]=0;
}
}
for(j=0;j<n;j++)
{for(i=0;i<n;i++)
{matriztras[j]=matriz[j];
printf(" %d ",matriz[j]);
}
printf("\n");
}
printf("\n");
for(f=0;f<n;f++)
{for(c=0;c<n;c++)
{for(i=0;i<n;i++)
{matrizmult[f][c]=matrizmult[f][c]+matriz[f][c]*matriztras[c];
}
}
}
for(f=0;f<n;f++)
{for(c=0;c<n;c++)
{printf(" %d ",matrizmult[f][c]);
}
printf("\n");
}
}
main()
{int matriz[t][t],n;
do{printf("Indica dimension matriz:\n");
scanf("%d",&n);
}while(n<0 || n>t);
llenar(matriz,n);
imprimir(matriz,n);
printf("\n");
multiplicacion(matriz,n);
system("pause");
}