输出万年历

基于当前计算机时间,显示当前年份和月份的日历。

您可以按左右箭头键翻到上个月或下个月。

您可以按上下箭头键翻到上一年或下一年。

# include & ltstdio.h & gt

# include & ltconio.h & gt

# include & ltstdlib.h & gt

# include & lttime.h & gt

闰年(跨年度)

{

if((year % 4 = = 0)& amp;& amp(年份% 100!= 0)

||(年份% 400 == 0))

{

返回1;

}

返回0;

}

无效显示(跨年、跨月)

{

const char month _ str【】【4】= {““、“Jan“、“Feb“、“Mar“、“Apl“、

“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”};

const int month _ day【】= { 0,31,28,31,30,31,30,31,30,31,30,31 };

int i,j,wdays,mdays,days

for(I = 1,天数= 0;我& lt年份;i++)

{

if(飞跃(I))

{

天数+= 366;

}

其他

{

天数+= 365;

}

}

for(I = 1;我& lt月份;i++)

{

if(I = = 2 & amp;& amp闰年)

{

天数+= 29;

}

其他

{

days+= month _ day【I】;

}

}

printf(“% s(% d)\ n“,month_str【月】,年);

printf(“星期一星期二星期三星期四Fri星期六\ n“);

wdays = days % 7;

for(j = 0;j & ltwdaysj++)

{

printf(“”);

}

if(month = = 2 & amp;& amp闰年)

{

mdays = 29

}

其他

{

mdays = month _ day【month】;

}

for(I = 1;我& lt= mdaysi++)

{

if(I & gt;1 & amp;& amp天数% 7 == 0)

{

printf(“\ n“);

}

printf(“% 4d“,I);

天数=天数+1;

}

printf(“\ n-\ n“);

}

主()

{

time _ t rawtime

struct tm * info

int年,月;

char ch

时间(ampraw time);

info = local time(amp;raw time);

year = info-& gt;TM _ year+1900;

month = info-& gt;TM _ mon+1;

while(1)

{

显示(年、月);

printf(“Left....上个月\ n“);

printf(“右...下个月\ n“);

printf(“向上......上一年\ n“);

printf(“向下....明年\ n“);

printf(“Esc.....exit \ n“);

ch = getch();

开关(通道)

{

案例27://Ecs

退出(0);

案例32://Navigator

ch = getch();

if(ch = = 77)

{//右

年+=(月==12)?1:0;

月=月% 12+1;

}

else if(ch = = 75)

{//左侧

年-=(月==1)?1:0;

month =(month-2+12)% 12+1;

}

else if(ch = = 72)

{//向上

年份-;

}

else if(ch = = 80)

{//向下

年份++;

}

系统(“cls”);

}

}

}