this is [0], right? Your months MUST be 0-11, not 1-12, to use this array of names.
the user types in 3, they are NOT gonna get march.
try
cout << month_names[month-1]; //this will produce march for 3
it will also crash if the user type in 1234 for the month.
To check if a year is a leap year, then as well as checking for a multiple of 4 you also need to check that it's either not a multiple of 100 or is a multiple of 400. This gives: