跪求一个用C语言写的日历程序(最好带注释)

# include & ltiostream & gt

# include & lttime.h & gt

使用命名空间std

班级日历

{

int day[2][12];

公共:

日历();

~calendar(){}

闰年常数;

int周(int年,int月)常数;

void show year()const;

void show month()const;

void showDay()const;

};

日历::日历()

{

int i,j;

int days[2][12]= { { 31,28,31,30,31,30,31,30,31,30,31,

{31,29,31,30,31,30,31,31,30,31,30,31}};

for(I = 0;我& lt2;i++)

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

day[I][j]= days[I][j];

}

//判断年份是否是闰年,如果是闰年返回1,不返回0。

int calendar::闰年(int year)常数

{

如果(!(年份%400)||(年份% 100)& amp;& amp!(第%4年))

返回1;

否则返回0;

}

//一年中一个月的第一天是星期几的函数,0是星期日,1是星期一,依此类推。

int calendar::week(int year,int month)常量

{

int i,w _ day = 6;

如果(公元2000年& gt=0)

{

for(I = 2000;我& lt年份;i++)

w _ day+= 1+leap(I);

}

其他

{

for(I = 1999;我& gt=年份;我-)

w _ day+= 6-leap(I);

}

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

w _ day+= day[闰年]][I-1];

返回第%7天;

}

//通过输入年份输出今年的日历。

void calendar::showYear()常量

{

int i,j;

int年、月、日、周;

int Leap

系统(“cls”);

cout & lt& lt"请输入年份"

CIN & gt;& gt年份;

闰=闰(年);

cout & lt& lt年份& lt& lt"日历年" < & ltendl

for(Month = 1;月份& lt=12;月++)

{

日=日[闰][月-1];

周=周(年、月);

cout & lt& lt月份& lt& lt"月份"

cout & lt& lt" Day \ t1 \ T2 \ T3 \ T4 \ t5 \ T6 " < & lt;endl

for(I = 0;我& lt=天;i++)

{

如果(i==0)

{

for(j = 0;j & lt周;j++)

cout & lt& lt”\ t”;

}

其他

{

cout & lt& lt我;

如果((I+周)%7)

cout & lt& lt”\ t”;

其他

cout & lt& ltendl

}

}

cout & lt& ltendl

}

}

//通过输入的年月输出本月的日历。

void calendar::showMonth()const

{

int i,j;

int年、月、日、周;

系统(“cls”);

cout & lt& lt"请输入年份和月份"

CIN & gt;& gt年份& gt& gt月份;

日=日[闰(年)][月-1];

周=周(年、月);

cout & lt& lt年份& lt& lt"年份"

cout & lt& lt" Day \ t1 \ T2 \ T3 \ T4 \ t5 \ T6 " < & lt;endl

for(I = 0;我& lt=天;i++)

{

如果(i==0)

{

for(j = 0;j & lt周;j++)

cout & lt& lt”\ t”;

}

其他

{

cout & lt& lt我;

如果((I+周)%7)

cout & lt& lt”\ t”;

其他

cout & lt& ltendl

}

}

cout & lt& ltendl

}

//通过输入日期,输出这一天与今年的区别,今天是什么日子,是否是公历节日。

void calendar::showDay()const

{

int i,j=0,flag=1,a[6],sum,Day_tem=0,Week

int year1,month1,day1,year2,month2,day2,sumDay1=0,sum day 2 = 0;

time _ t t

时间(& ampt);

day1=localtime。t)-gt;tm _ mday

month1=localtime。t)-gt;tm _ mon

year1=localtime。t)-gt;TM _ year+1900;

系统(“cls”);

cout & lt& lt请输入年、月、日

CIN & gt;& gtyear2 & gt& gtmonth2 & gt& gt第二天;

sumday 1 = local time(& amp;t)-gt;tm _ yday

for(I = 1;我& ltmonth2i++)

{

if(闰年2)

sum day 2+= day[1][I-1];

其他

sum day 2+= day[0][I-1];

}

sum day 2+= day 2-1;

if(year 2 & gt;=year1)

{

for(I = year 1;我& lt第二年;i++)

day _ tem+= 365+leap(I);

if(Day _ tem+sum Day 2-sum Day 1 & gt;=0)

cout & lt& lt“距离”< & lt第二年& lt& lt"年份"

其他

cout & lt& lt“您输入的天数已经过了”< & ltsumday 1-sumday 2 & lt;& lt“上帝”

}

其他

{

for(I = year 2;我& ltyear 1;i++)

day _ tem+= 365+leap(I);

if(Day _ tem+sum Day 1-sum Day 2 & gt;=0)

cout & lt& lt“您输入的天数已经过了”< & ltday _ tem+sum day 1-sum day 2 & lt;& lt“上帝”

其他

cout & lt& lt“距离”< & lt第二年& lt& lt"年份"

}

Week=week(year2,month 2);

Week =(Week+day 2-1)% 7;

cout & lt& lt第二年& lt& lt"年份"

切换(周)

{

案例0:cout & lt;& lt《星期日》

案例1:cout & lt;& lt“星期一”

案例2:cout & lt;& lt"星期二"

案例三:cout & lt& lt“星期三”

案例4:cout & lt;& lt"星期四"

案例5:cout & lt;& lt"星期五"

案例6:cout & lt;& lt“星期六”

}

cout & lt& lt第二年& lt& lt"年份"

//65438+10月最后一个周日国际麻风节

周=周(年2,1);

sum = day[leap(year 2)][0];

for(i=0,j = 0;我& lt总和;i++)

{

如果(!((第+i周)%7))

a[j++]= I;

}

if(sumDay2==a[ - j])

{

cout & lt& lt国际麻风病节;

flag = 0;

}

//3月最后一个整周的周一为中小学生安全教育日。

Week =周(year2,3);

sum = day[leap(year 2)][2];

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==6)

a[j++]= I-5;

}

j-;

for(I = 0;我& lt2;i++)

a[j]+= day[leap(year 2)][I];

if(sumDay2==a[j])

{

cout & lt& lt“中小学生安全教育日”;

flag = 0;

}

//五月的第二个星期天是母亲节

//5月的第三个星期天是全国助残日

Week =周(year2,5);

sum = day[leap(year 2)][4];

for(i=0,j = 0;我& lt总和;i++)

{

如果(!((第+i周)%7))

a[j++]= I;

}

for(I = 0;我& lt4;i++)

{

a[1]+= day[闰(年2)][I];

a[2]+= day[leap(year 2)][I];

}

if(sumDay2==a[1])

{

cout & lt& lt母亲节;

flag = 0;

}

if(sumDay2==a[2])

{

cout & lt& lt“全国助残日”;

flag = 0;

}

//六月的第三个星期天是父亲节

Week =周(year2,6);

sum = day[leap(year 2)][5];

for(i=0,j = 0;我& lt总和;i++)

{

如果(!((第+i周)%7))

a[j++]= I;

}

for(I = 0;我& lt5;i++)

a[2]+= day[leap(year 2)][I];

if(sumDay2==a[2])

{

cout & lt& lt父亲节;

flag = 0;

}

//9月的第三个星期二是国际和平日

Week =周(year2,9);

sum = day[leap(year 2)][8];

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==2)

a[j++]= I;

}

for(I = 0;我& lt8;i++)

a[2]+= day[leap(year 2)][I];

if(sumDay2==a[2])

{

cout & lt& lt“国际和平日”;

flag = 0;

}

//九月的第三个星期六为国防教育日

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==6)

a[j++]= I;

}

for(I = 0;我& lt8;i++)

a[2]+= day[leap(year 2)][I];

if(sumDay2==a[2])

{

cout & lt& lt“国防教育日”;

flag = 0;

}

//9月的第四个星期天是国际聋人日

for(i=0,j = 0;我& lt总和;i++)

{

如果(!((第+i周)%7))

a[j++]= I;

}

for(I = 0;我& lt8;i++)

a[3]+= day[闰(年2)][I];

if(sumDay2==a[3])

{

cout & lt& lt国际聋人日;

flag = 0;

}

//65438+10月第一个星期一的世界住房日。

周=周(年2,10);

sum = day[leap(year 2)][9];

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==1)

a[j++]= I;

}

for(I = 0;我& lt9;i++)

a[0]+= day[leap(year 2)][I];

if(sumDay2==a[0])

{

cout & lt& lt世界住房日;

flag = 0;

}

//六月第二星10-加拿大感恩节

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==1)

a[j++]= I;

}

for(I = 0;我& lt9;i++)

a[1]+= day[闰(年2)][I];

if(sumDay2==a[1])

{

cout & lt& lt“加拿大感恩节”;

flag = 0;

}

//65438+10月第二个星期三的国际减少自然灾害日

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==3)

a[j++]= I;

}

for(I = 0;我& lt9;i++)

a[1]+= day[闰(年2)][I];

if(sumDay2==a[1])

{

cout & lt& lt“国际减少自然灾害日”;

flag = 0;

}

//65438+10月第二个星期四世界爱眼日

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==4)

a[j++]= I;

}

for(I = 0;我& lt9;i++)

a[1]+= day[闰(年2)][I];

if(sumDay2==a[1])

{

cout & lt& lt“世界爱眼日”;

flag = 0;

}

//165438+美国感恩节在十月的最后一个星期四

Week =周(year2,11);

sum = day[leap(year 2)][10];

for(i=0,j = 0;我& lt总和;i++)

{

if((Week+i)%7==4)

a[j++]= I;

}

j-;

for(I = 0;我& lt10;i++)

a[j]+= day[leap(year 2)][I];

if(sumDay2==a[j])

{

cout & lt& lt“美国感恩节”;

flag = 0;

}

if((sum day 2 & gt;59)& amp;& amp(闰年(第二年)))

sum day 2-;

开关(sumDay2)

{

案例0:cout & lt;& lt“元旦”

案例32:cout & lt;& lt“世界湿地日”

案例44:cout & lt;& lt《情人节》

案例61:cout & lt;& lt“全国爱耳日”

案例63:cout & lt;& lt“青年志愿服务日”endl打破;

案例66:cout & lt;& lt“国际妇女节”

案例67:cout & lt;& lt“母亲河保护日”endl打破;

案例70:cout & lt;& lt“中国植树节”< & ltendl打破;

案例72:cout & lt;& lt“白色日国际警察日”

案例73:cout & lt;& lt“世界消费者权益日”

案例79:cout & lt;& lt“世界森林日,世界睡眠日”endl打破;

案例80:cout & lt;& lt“世界水日”endl打破;

案例81:cout & lt;& lt“世界气象日”endl打破;

案例82:cout & lt;& lt“世界结核病日”

案例90:cout & lt;& lt“愚人节”

案例94:cout & lt;& lt《清明节》

案例96:cout & lt;& lt“世界卫生日”

案例111:cout & lt;& lt“地球日”

案例115:cout & lt;& lt“世界知识产权日”endl打破;

案例120:cout & lt;& lt“国际劳动节”

案例122:cout & lt;& lt“世界哮喘日”

案例123:cout & lt;& lt“中国青年节”

案例127:cout & lt;& lt“世界红十字日”

案例131:cout & lt;& lt“国际护士节”endl打破;

案例134:cout & lt;& lt“国际家庭日”

案例136:cout & lt;& lt“世界电信日”< & ltendl打破;

案例139:cout & lt;& lt“全国学生营养日”

案例142:cout & lt;& lt“国际牛奶日”

案例150:cout & lt;& lt“世界无烟日”endl打破;

案例151:cout & lt;& lt“国际儿童节”

案例155:cout & lt;& lt《世界环境日》

案例156:cout & lt;& lt“全国爱眼日”

案例167:cout & lt;& lt“世界防治荒漠化和干旱日”

案例173:cout & lt;& lt“国际奥林匹克日”

案例175:cout & lt;& lt“国家土地日”endl打破;

案例176:cout & lt;& lt“国际禁毒日”endl打破;

案例181:cout & lt;& lt“中国* * *生产党诞生日国际建筑日”

案例187:cout & lt;& lt“中国人民抗日战争纪念日”

案例191:cout & lt;& lt“世界人口日”

案例212:cout & lt;& lt《中国人民解放军建军节》< & ltendl打破;

案例223:cout & lt;& lt“国际青年日”

案例250:cout & lt;& lt“国际扫盲日”

案例252:cout & lt;& lt“中国教师节”< & ltendl打破;

案例258:cout & lt;& lt中国脑健康日、国际臭氧层保护日

案例262:cout & lt;& lt“全国爱牙日”

案例263:cout & lt;& lt“世界停火日”

案例269:cout & lt;& lt“世界旅游日”

案例273:cout & lt;& lt中华人民共和国国庆节、国际音乐日和国际老人节

案例276:cout & lt;& lt“世界动物日”

案例277:cout & lt;& lt“世界教师节”< & ltendl打破;

案例280:cout & lt;& lt“全国高血压日”endl打破;

案例281:cout & lt;& lt“世界邮政日”

案例282:cout & lt;& lt“世界精神卫生日”

案例286:cout & lt;& lt“世界标准日”

案例287:cout & lt;& lt“国际盲人节,世界农村妇女节”

案例288:cout & lt;& lt“世界粮食日”

案例289:cout & lt;& lt“国际消除贫穷日”

案例296:cout & lt;& lt联合国日、世界发展新闻日

案例300:cout & lt;& lt“中国男性健康日”< & ltendl打破;

案例301:cout & lt;& lt“国际生物多样性日”

案例303:cout & lt;& lt“万圣节”

案例311:cout & lt;& lt“中国记者节”endl打破;

案例312:cout & lt;& lt“防火宣传日”endl打破;

案例317:cout & lt;& lt“世界糖尿病日”

案例320:cout & lt;& lt“国际大学生日”

案例328:cout & lt;& lt“消除对妇女的暴力行为国际日”

案例334:cout & lt;& lt“世界艾滋病日”

案例336:cout & lt;& lt“世界残疾人日”

案例337:cout & lt;& lt“全国法制宣传日”

案例342:cout & lt;& lt“世界足球日”

案例358:cout & lt;& lt“圣诞节”

案例362:cout & lt;& lt“国际生物多样性日”

默认值:if(flag)cout & lt;& lt“没有节日”< & ltendlelse cout & lt& ltendl打破;

}

}

主()

{

日历obj

int i,flag = 1;

while(标志)

{

系统(“cls”);

cout & lt& lt"日历显示\ n请按下列数字" < & ltendl

cout & lt& lt“1,输入年份,输出的是屏幕上显示的年份日历”< & ltendl

cout & lt& lt2、输入年月,输出本月日历

cout & lt& lt"3.输入年、月、日,并输出从今天起还有多少天,以及是否是公历假日“< & ltendl

cout & lt& lt4,退出

scanf("%d ",& ampI);

开关(一)

{

case 1:obj . show year();系统(“暂停”);打破;

案例二:obj . show month();系统(“暂停”);打破;

案例三:obj . showday();系统(“暂停”);打破;

情况4:flag = 0;打破;

默认值:cout & lt& lt“输入错误,请重新输入”< & ltendl系统(“暂停”);打破;

}

}

返回0;

}