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