1、“请输入要打印的年份(XXXX)” 运行后输出XXXX年的日历, XXXX X(月数) x x S M T W T F S X X X X X X X X X X 运行完成后显示:“是否继续打印(Y/N)?” 如果输入Y,则重新显示“请输入要打印的年份(XXXX)”,否则回到主菜单。 (4) 在主菜单中输入4后,显示:“是否要真的退出(Y/N)? 如果输入Y,结束程序运行,否则重新显示主菜单。#include stdlib.htypedef struct int year; char month; char day;*DATE;DATE NewDate(void);int DestroyDat
2、e(DATE date);int DaysAMonth(DATE date);int CheckDate(DATE date);int SetDate(DATE date,int year,int month,int day);int GetWeek(DATE date);int QueryDay(void);int ShowMonth(DATE date);int QueryMonth(void);int QueryYear(void);int ConfirmExit(void);int Calendar(void);int main() if(Calendar() return 0; el
3、se return 1;DATE NewDate(void) DATE date; date=(DATE)malloc(sizeof(*date); return date;int DestroyDate(DATE date) if(!date) free(date);int DaysAMonth(DATE date) int days; switch(date-month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; case 4: case 6: case 9: case 11: day
4、s=30; default: days=0; if(date-month=2)year%4=0 & date-year%400!=0 | date-year%400=0) days=29; days=28; return days;int CheckDate(DATE date)monthmonth12)dayDaysAMonth(date)int SetDate(DATE date,int year,int month,int day)year=year;month=month;day=day; return CheckDate(date);int GetWeek(DATE date) in
5、t year,month,day; year=date-year; month=date-month; day=date-day; if(month=2) month+=12; -year; return (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7+1;int QueryDay(void) char cont; static char *week=星期一,星期二星期三星期四星期五星期六星期日;(date=NewDate() do printf(请输入年月日(XXXX,XX,XX); scanf( %d, %d, %d,
6、&year,&month,&day); if(SetDate(date,year,month,day)%4d年%2d月%2d日是%s,是否继续查询(Y/N)?, year,month,day,weekGetWeek(date)-1); %ccont);日期输入错误!n while(cont=Y | cont=y DestroyDate(date);int ShowMonth(DATE date) int startweek; int i; startweek=GetWeek(date); days=DaysAMonth(date); S M T W S F S n startweek=star
7、tweek%7; for(i=0;istartweek;+i) for(i=1;=days; %2d ,i); startweek=(startweek+1)%7; if(startweek=0) if(startweek!=0)int QueryMonth(void) int year,month;请输入要打印的月份(XXXX,XX) %d, %dmonth); if(SetDate(date,year,month,1)%4d年%2d月n,year,month); ShowMonth(date);月份输入错误!int QueryYear(void) int month;请输入要打印的年份(X
8、XXX) %dyear);%4d年n,year); for(month=1;=12;+month) SetDate(date,year,month,1);%2d月n,month);是否继续打印(Y/N)?int ConfirmExit(void) char exit;是否要真的退出(Y/N)?exit); if(exit= | exit=)int Calendar(void) int menu=1; int tmp; switch(menu)n |1 查星期| |2 月日历| |3 年日历| |4 退出|:tmp); switch(tmp) menu=11; case 2: menu=12; menu=13; menu=14;选择有误! QueryDay(); menu=1; QueryMonth(); case 13: QueryYear(); case 14: if(ConfirmExit() menu=0; while(menu);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1