This declaration
char day[7]={"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
is invalid.
There is not declared an array of strings. There is declared an array of 7 characters that are initialized by addresses of string literals.
The compiler should issue a message relative to this declaration because there is no implicit conversion from the type char * (the type of the initializing expressions) to the type char.
Instead you should declare a one-dimensional array of pointers like
char * day[7] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
or better like
const char * day[7] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
because you may not change string literals (though in C opposite to C++ string literals have types of non-constant character arrays)
In these declarations the string literals having array types are implicitly converted to pointers to their first characters.
Or a two-dimensional array like
char day[7][10] = {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
In this declaration all characters including the terminating zero character '\0' of the string literals are used to explicitly initialize elements of the declared array. All characters of the array that do not have a corresponding explicit initializer will be zero initialized.
day[0]evaluates to achar, but the format specifier%sexpects achar *.char*and provided argument of typechar". Did you ignore all these warnings?