I want to write a program that will make a date into the day of the week... I am having a problem figuring out how to get the leap year into this...and my program returns a invalid date for any day in the months of August (08) and Sept (09)
heres my code...I am very new to this, just a fyi


Code:
#include <stdio.h>


int main (void)
 {
  long int n;
  float n_day;
  int f, g;
 int month;
  int day;
  int year;
   char c;
   int months[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
   char *days[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
  int i; 
  
  printf ("Welcome to the Date to Day-of-Week program.\n");
 printf ("\nThe program will give the day of the week for any date from 1/1/1900\n");
 
 printf ("\nEnter date (mm/dd/yyyy):");
 scanf ("%i/%i/%i", &month, &day, &year);
 
 if ( month > 12)
 {
  printf ("Invalid month, please re-enter date");
  
  printf ("\nEnter date (mm/dd/yyyy):");
  scanf ("%i/%i/%i", &month, &day, &year);
 }
 if ( day > 31)
 {
  printf ("Invalid day, please re-enter date");
  
  printf ("\nEnter date (mm/dd/yyyy):");
  scanf ("%i/%i/%i", &month, &day, &year);
 }
 if ( year <= 1900)
 {
  printf ("Invalid year, please re-enter date. Year must be greater than 1900");
  
  printf ("\nEnter date (mm/dd/yyyy):");
  scanf ("%i/%i/%i", &month, &day, &year);
 }
 while ( (c = getchar() != '\n') && c != EOF);   /* clear input buffer  */
   
   
  
 if ( month <= 2)
  f = year - 1;
 else 
  f = year;
 
 if ( month <= 2)
  g = month +13;
 else 
  g = month +1;
  
 
 
 n = 1461 * f / 4 + 153 * g / 5 + day;
 n = n - 621049 % 7;
 
 
 
 printf ("%i/%i/%i falls on a %s\n", month, day, year, days[i]);
 }