C Interview Questions and Answers


How can I find the day of the week given the date?

Here are three methods:

1. Use mktime or localtime # . Here is a code fragment which computes the day of
the week for February 29, 2000:

#include <stdio.h>

#include <time.h>

char *wday[] = {"Sunday", "Monday", "Tuesday", "Wednesday",

"Thursday", "Friday", "Saturday"};

struct tm tm;

tm.tm_mon = 2 - 1;

tm.tm_mday = 29;

tm.tm_year = 2000 - 1900;

tm.tm_hour = tm.tm_min = tm.tm_sec = 0;

tm.tm_isdst = -1;

if(mktime(&tm) != -1)

printf("%sn", wday[tm.tm_wday]);

When using mktime like this, it's usually important to set tm_isdst to -1,
as shown (especially if tm_hour is 0), otherwise a daylight saving time correction
could push the time past midnight into another day. # Use Zeller's congruence,
which says that if

J is the number of the century [i.e. the year / 100],

K the year within the century [i.e. the year % 100],

m the month,

q the day of the month,

h the day of the week [where 1 is Sunday];

Posted by:Richards