Прочитайте ещё раз про циклы. Первый же while(g>0); имеет пустое тело и уходит в бесконечный повтор, если ранее введённый g>0.
Если вы хотите циклом заставить ввести правильную дату, то должно быть как-нибудь так:
do
{
printf("Введите год:\n");
scanf("%d", &g);
}
while(!(g>0));
или так:
int g = 0;
while(!(g>0))
{
printf("Введите год:\n");
scanf("%d", &g);
}