ADD file via upload

main
p78gniqao 9 months ago
parent 332227b89d
commit 8dfe0bfb3c

@ -0,0 +1,230 @@
#include "wudi.h"
void printBlank(int n);
void printYearCalendar();
void createMonthCalendar(int year,int month);
void printMonthCalendar();
int getWeekDay(int year,int month,int day);
int getDays(int year,int month);
int menu();
void third();
int getDays(int year,int month)// 得到该月有多少天
{
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:// 这些月份有31日
return 31;
break;
case 4:case 6:case 9:case 11:// 这些月份有30日
return 30;
break;
case 2:
return isLeapYear(year)?29:28;// 如果该年为闰年2月有29日否则2月只有28日
default:
return 0;// 如果月份输入有误返回0
}
}
int getWeekDay(int year,int month,int day)// 得到该日期是星期几
{
// 基姆拉尔森计算公式
int w;// 代表星期
if(month<3)
{
month+=12;
year-=1;
}
w=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400+1)%7;// w的取值范围为0到60为星期日1为星期一
return w;
}
void printMonthCalendar()// 得到某年某月的日历
{
int year,month,day,m,i;
loop:system("cls");
while(1)
{
printf("\n请输入年月来查询您要的月份的日历:");
scanf("%d%d",&year,&month);
if(year>=1900&&year<=2100&&month>0&&month<13)
{
break;
}
printf("\n输入的年月不合规,请重新输入。");
}
int firstDay=getWeekDay(year,month,1);
int daysMonth=getDays(year,month);
printf(" %d年%d月 \n",year,month);
printf(" SUN MON TUE WED THU FRI SAT \n");
for(i=0;i<firstDay;i++)
{
printf(" ");
}
for(day=1;day<=daysMonth;day++)
{
printf("%4d",day);
if((day+firstDay)%7==0)// 为星期六时,从下一行输出
{
printf(" \n");
}
}
printf("\n");
printf("继续查询请输入[1]");
printf("返回菜单请输入[0]");
while(1)
{
scanf("%d",&m);
if(m==1||m==0)
{
break;
}
printf("\n输入数字无对应选项,请重新输入。\n");
}
if(m==0)
{
return;
}
if(m==1)
{
goto loop;
}
}
void createMonthCalendar(int year,int month)// 得到确定的年份的日历
{
int daysMonth=getDays(year,month);
int firstDay=getWeekDay(year,month,1);
int day,i;
printf(" %d年%d月 \n",year,month);
printf(" SUN MON TUE WED THU FRI SAT \n");
for(i=0;i<firstDay;i++)
{
printf(" ");
}
for(day=1;day<=daysMonth;day++)
{
printf("%4d",day);
if((firstDay+day)%7==0&&(day!=daysMonth))
{
printf("\n");
}
}
printf("\n\n");
}
void printYearCalendar()// 得到某年的日历
{
int year,n,month;
loop:system("cls");
printf("\n请输入年份来查询您要的年份的日历:");
scanf("%d",&year);
for(month=1;month<=12;month++)
{
createMonthCalendar(year,month);
}
printf("\n");
printf("继续查询请输入[1]");
printf("返回菜单请输入[0]");
while(1)
{
scanf("%d",&n);
if(n==1||n==0)
{
break;
}
printf("\n输入数字无对应选项,请重新输入。");
}
if(n==1)
{
goto loop;
}
if(n==0)
{
return;
}
}
void printBlank(int n)// 输出空格
{
int i;
for(i=1;i<=n;i++)
{
putchar(' ');
}
}
int menu()
{
int select;
system("cls");
printBlank(45);
printf("日历\n");
printBlank(20);
printf("******************************************************\n");
printBlank(20);
printf("[1]年日历查询\n");
printBlank(20);
printf("[2]月日历查询\n");
printBlank(20);
printf("[3]目标日期距今还有多少天,是星期几,是否为节日查询\n");
printBlank(20);
printf("[4]进入备忘录\n");
printBlank(20);
printf("[0]退出程序\n");
printBlank(20);
printf("******************************************************\n");
printBlank(20);
printf("请输入:");
scanf("%d",&select);
return select;
}
void third()
{
int year,month,day,n;
loop:system("cls");
printf("\n请输入年月日:");
scanf("%d%d%d",&year,&month,&day);
printf("\n距今天有%d天",-daysBetweenGivenDateAndNow(year,month,day));
switch(getWeekDay(year,month,day))
{
case 0:
printf("是星期日,");
break;
case 1:
printf("是星期一,");
break;
case 2:
printf("是星期二,");
break;
case 3:
printf("是星期三,");
break;
case 4:
printf("是星期四,");
break;
case 5:
printf("是星期五,");
break;
case 6:
printf("是星期六,");
break;
default:
printf("不存在,");
break;
}
wang(year,month,day);
printf("\n");
printf("继续查询请输入[1]");
printf("返回菜单请输入[0]");
while(1)
{
scanf("%d",&n);
if(n==1||n==0)
{
break;
}
printf("\n输入数字无对应选项,请重新输入。\n");
}
if(n==0)
{
return;
}
if(n==1)
{
goto loop;
}
}
Loading…
Cancel
Save