📄 ch23-17.c
字号:
#include<stdio.h>
#include<conio.h>
struct ymd
{
int year;
int month;
int day;
};
/*if a year is a leap one*/
int yn_rn(int year)
{
if(year%4==0&&year%100!=0||year%400==0)
return 1;
else
return 0;
}
/*return which day in the year*/
int d_of_day(struct ymd dayof)
{
int days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int i,d=0;
if(yn_rn(dayof.year))
days[2]=29;
for(i=1;i<dayof.month;i++)
d=d+days[i];
return(d+dayof.day);
}
/*return the positive days if day1>day2,or negative days if day1<day2*/
int day_diff(struct ymd day1,struct ymd day2)
{
int d1,d2,i,diff=0;
d1=d_of_day(day1);
d2=d_of_day(day2);
if(day1.year>day2.year)
{
for(i=day2.year;i<day1.year;i++)
if(yn_rn(i))
diff=diff+366;
else
diff=diff+365;
}
else
{
for(i=day1.year;i<day2.year;i++)
if(yn_rn(i))
diff=diff-366;
else
diff=diff-365;
}
return diff+d1-d2;
}
void main()
{
struct ymd oldday,day;
int oldweek,week,diff;
char *rq[7]={"Sun","Mon","Tue","Wen","Thu","Fri","Sat"};
/*2003-4-3: Thursday*/
oldday.year=2003;
oldday.month=4;
oldday.day=3;
oldweek=4;
printf("\nPlease input day(YYYY-MM-DD):");
scanf("%d-%d-%d",&day.year,&day.month,&day.day);
diff=day_diff(day,oldday);
week=(diff%7+oldweek)%7;
printf("\n%d*%d-%d: %s\n",day.year,day.month,day.day,rq[week]);
getch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -