c年历

# include & ltstdio.h & gt

# include & lttime.h & gt

# include & ltstdlib.h & gt

//打印当前年份的日历,并输出到以您的学号命名的文件夹下的文件名。

const char输出文件名!\n“,年,开始_年);

返回;

}

/*检查输入的月份*/

if(月份& lt0 ||月& gt12)

{

printf(“非法月份:%d!月份必须在范围内!\n“,年,开始_年);

返回;

}

/* * * * *开始打印日历* * * * * * * * * * * * *

/*日历年度标题*/

printf(“日历%d\n“,年份);

for(start month = 1;开始月份& lt=12;start month+= showMonthNumPerLine)

{

showMonthNumPerLine =(start month+maxShowMonthNumPerLine)& lt;=12 ?maxShowMonthNumPerLine:(12-start month+1);

/* 1日历月头*/

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

printf(“%-28s“,MONTH _ NAME【MONTH-1】);

}

printf(“\ n“);

/*双年日历的周首*/

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

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

{

printf(“% s“,WEEK _ NAME _ SHORT【I】);

}

printf(“”);

}

printf(“\ n“);

//分割线

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

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

{

printf(“_“);

}

printf(“”);

}

printf(“\ n“);

/*数据初始化*/

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

//每月第一天的周

first day ofmonthinweekday【month-start month】= getfirst day ofmonthinweekday(year,month);

//一个月中的每一天

daysofmount【month-start month】= getdaysofmount(year,month);

//已经输出的天数计数器

days counter【month-start month】=-first day ofmonthinweekday【month-start month】+1;

}

/*每天安排3个日历*/

showMonthCounterPerLine = 0;

while(showMonthCounterPerLine & lt;showMonthNumPerLine)

{

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

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

{

if(days counter【month-start month】& lt;= 0 | | days counter【month-start month】& gt;每月第几天【月-月开始】)

{

printf(“% 4s“,““);

}

其他

{

printf(“% 3d“,days counter【month-start month】);

}

days counter【month-start month】++;

if(days counter【month-start month】& gt;每月第几天【月-月开始】)

{

showMonthCounterPerLine ++;

}

}

printf(“”);

}

printf(“\ n“);

}

//分割线

for(月=开始月;月份& lt(start month+showMonthNumPerLine);月份++)

{

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

{

printf(“_“);

}

printf(“”);

}

printf(“\ n“);

}

}

int main(int argc,char *argv【】)

{

int年,月;

time_t t =时间(空);

struct TM * now = local time(& amp;t);

int choice

/*

1

显示任意年份和月份的日历。

以每行两个月的格式输出当年的年历。

以每行两个月的格式输出任何一年的年历。

*/

while(1)

{

printf(“××××××××××\ n“);

printf(“1输出当前月份的月历1 \ n“);

printf(“2输出当前年份历书2 \ n“);

printf(“3指定任意年份和月份的日历3 \ n“);

printf(“4指定任何年份的日历4 \ n“);

printf(“5 exits 5 \ n“);

printf(“××××××××××\ n“);

scanf(“% d“,& amp选择);

开关(选择)

{

案例1:

printMonthCalendar(现在-& gt;tm_year+1900,now-& gt;TM _ mon+1);

打破;

案例二:

春季日历(现在-& gt;tm_year+1900,2);

打破;

案例三:

Printf(“输入年和月(YYYY-MM):“);

scanf(“% d-% d“,& amp年份和年份。月);

printMonthCalendar(年、月);

打破;

案例4:

Printf(“输入年份(YYYY):“);

scanf(“% d-% d“,& amp年份);

printYearCalendar(year,2);

打破;

案例五:

退出(0);

默认值:

Printf(“选择错误,请重新选择\ n“);;

};

}

返回0;

}