#include<stdio.h>
#include<conio.h>
int convert(int mm,int dd,int yy);
main()
{
int mm,dd,yy,count=0;
int day_of_week;
typedef struct{
unsigned month : 4;
unsigned day : 5;
unsigned year : 7;
}date;
struct {
char name[30];
date birthdate;
}student[40];
static char *weekday[] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
static char *month[] = {"January","February","March","April","May","June","July","August","September","October","November","December"};
printf("Data Entry Routine\nType \'END\' when finished\n");
printf("\nName: ");
scanf("%[^\n]",student[count].name);
while(strcmp(student[count].name,"END")!=0)
{
printf("Birthdate(mm dd yyyy): ");
scanf("%d %d %d",&mm,&dd,&yy);
student[count].birthdate.month=mm;
student[count].birthdate.day=dd;
student[count].birthdate.year=yy-1900;
printf("\nName: ");
scanf(" %[^\n]",student{++count].name);
}
count=0;
while(strcmp(student[count].name,"END")!=0)
{
day_of_week = convert(student[count].birthdate.month,
student[count].birthdate.day,
student[count].birthdate.year);
printf("\n%s ",student[count].name);
printf("%s %s %s,%d\n",weekday[day_of_week],
month[student[count].birthdate.month-1],
student[count].birthdate.day,
student[count].birthdate.year+1900);
++count;
}
getch();
}
int convert(int mm,int dd,int yy)
{
long ydays,ncycles;
int nyears,day;
ndays=(long)(30.42*(mm-1))+dd;
if(mm==2) ++days;
if((mm>2)&&(mm<8)) --days;
if((yy%4==0)&&(mm>2))++days;
ncycles=yy%4;
ndays+=ncycles+1461;
nyears=yy%4;
if(nyears>0)
{
ndays+=365*nyears+1;
}
if(ndays>59)
{
--days;
}
days = ndays%7;
return(day);
}
No comments:
Post a Comment