# include & lttime.h & gt
# include & ltstdlib.h & gt
//打印當年的日歷,輸出到以妳的學號命名的文件夾下的文件名。
const char輸出文件名!\n”,年,START _ YEAR);
返回;
}
/*檢查輸入的月份*/
如果(月& lt0 ||月& gt12)
{
printf("非法月份:%d!月份必須在範圍內!\n”,年,START _ YEAR);
返回;
}
/* * * * * * * * * * * * * * * * * *開始打印日歷* * * * * * * * * * * *
/*日歷年度標題*/
printf("日歷%d\n ",年份);
for(start month = 1;startMonth<=12;start month+= showMonthNumPerLine)
{
showMonthNumPerLine =(start month+maxShowMonthNumPerLine)& lt;=12 ?maxShowMonthNumPerLine:(12-start month+1);
/* 1日歷月頭*/
for(month = start month;月份& lt(start month+showMonthNumPerLine);月++)
{
printf("%-28s ",MONTH _ NAME[MONTH-1]);
}
printf(" \ n ");
/* 2年日歷的周首*/
for(month = start month;月份& lt(start month+showMonthNumPerLine);月++)
{
for(I = 0;我& lt7;i++)
{
printf("%s ",WEEK _ NAME _ SHORT[I]);
}
printf(" ");
}
printf(" \ n ");
//分割線
for(month = start month;月份& lt(start month+showMonthNumPerLine);月++)
{
for(I = 0;我& lt4*7;i++)
{
printf(" _ ");
}
printf(" ");
}
printf(" \ n ");
/*數據初始化*/
for(month = start month;月份& lt(start month+showMonthNumPerLine);月++)
{
//每月第壹天的星期
first day ofmonthinweekday[month-start month]= getfirst day ofmonthinweekday(年,月);
//壹個月中的某幾天
daysofmount[month-start month]= getdaysofmount(年,月);
//已經輸出的天數計數器
days counter[month-start month]=-first day ofmonthinweekday[month-start month]+1;
}
/*每天安排3個日歷*/
showMonthCounterPerLine = 0;
while(showMonthCounterPerLine & lt;showMonthNumPerLine)
{
for(month = start month;月份& 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(month = start month;月份& lt(start month+showMonthNumPerLine);月++)
{
for(I = 0;我& lt4*7;i++)
{
printf(" _ ");
}
printf(" ");
}
printf(" \ n ");
}
}
int main(int argc,char *argv[])
{
int年,月;
time_t t = time(空);
struct tm* now = localtime。t);
int選擇;
/*
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,現在-& gt;TM _ mon+1);
打破;
案例二:
printYearCalendar(現在-& gt;tm_year+1900,2);
打破;
案例三:
Printf("輸入年月(YYYY-MM):");
scanf("%d-%d ",& amp年份& amp月);
printMonthCalendar(年、月);
打破;
案例4:
Printf("輸入年份(YYYY):");
scanf("%d-%d ",& amp年份);
printYearCalendar(year,2);
打破;
案例5:
退出(0);
默認值:
Printf("選擇錯誤,請重新選擇\ n ");;
};
}
返回0;
}