Ho provato ad aiutarti ma non ci sono riuscito, secondo me è una brutta logica quella che usi tu...Io ti provo ad aiutare con questo che dovrebbe funzionare 
codice:
int ver2(float mat[][100], int righe, int colonne)
{
int i, j;
for(i=0;i<righe;i++)
{
for(j=0;j<colonne;j++)
{
if((mat[0][j] != 0 || mat[righe-1][j] != 0) && (mat[i][0] != 0 || mat[i][colonne-1] == 0))
{
return 0;
}
}
}
return 1;
}
Ragiono partendo dal fatto che ho una matrice con la cornice di 0, al primo intoppo ritorna 0 e quindi la matrice non ha la cornice di 0...
Molto semplice ed intuitivo