Potresti provare una funzione del genere che ritorna -1 se l'anno in questione è < 0, ritorna 0 se l'anno non è bisestile e 1 se è bisestile. Dovrebbe funzionare.

codice:
int bisestile(int a)
{
     if(a >= 0)
     {
         if(a < 1582)
             return (a % 4) ? 0 : 1;
         else
             return ((a % 400) ? ((a % 100) ? ((a % 4) ? 0 : 1) : 0) : 1);
     }
     return -1;
}