Ad occhio credo che si possa cambiare qualcosa in questo modo:

codice:
#include<stdlib.h>
#include<stdio.h>

int main()
{
int a,p,d;
char carat;
p=0;
d=0;
printf("Inserisci dei numeri interi ( premere invio per terminare) \n:");
do
    {
    scanf("%d",&a);
        if(a%2==0)
            p++;

        else
            d++;
    }while( (carat=getchar())!='\n'); /* finché non viene premuto il carattere new line */
printf("ci sono esattamente %d numeri pari e %d numeri dispari\n",p,d);
return 0;
}
Utilizzo il do-while per entrare nel ciclo la prima volta senza verificare che il carattere sia \n