#include
void shileapyear(); //确定是否为a年函数
void CaculateWeekDay(); //判断是星期几的函数
void Calendarmonth(); //用于打印一年和一个月的日历的功能
void Calendaryear(); //打印特定年份日历的功能
int leap年(int year); //判断the年
int caculateWeekDay(int year,int month,int day); //某年中某星期几的判断
void Calendar(int year,int month); //打印一年零一个月的日历
int main()//菜单主界面
{
int choice,i; // choice是选择代码
for(i = 1; i <= 4; i ++){
printf(“ 1-今年是否是leap年\ n”);
printf(“ 2-今天是星期几\ n”);
printf(“ 3-今年的日历\ n”);
printf(“ 4-一年中该月的日历\ n”);
printf(“ 0 -Exit \ n”);
printf(“请选择选项: ”); //提示用户输入选项
scanf(“%d”,&choice);
if(choice == 0)// 0直接退出程序
休息;
切换(选择){
案例1: shileapyear(); //这是a年吗?
休息;
情况2: CaculateWeekDay(); //周历
休息;
情况3: Calendaryear(); //年日历
休息;
案例4: Calendarmonth(); //每月日历
休息;
}
中断; //仅让程序判断一次
}
返回0;
}
void shileapyear()//确定是否为a年函数
{
int年,跨越;
printf(“请输入年份: ”); //提示用户输入年份
scanf(“%d”,&year);
leap = leapyear(year); //调用函数
if(leap == 0)//如果是a年,则获取返回值0
printf(“%d年是leap年\ n”,year);
else //如果不是a年,则返回值1
printf(“年份%d不是leap年\ n”,年);
}
void CaculateWeekDay()//判断是星期几的功能
{
int年,月,日,iWeek;
printf(“请输入日期: ”); //提示用户输入年,月和日
scanf(“%d-%d-%d”,&year,&month,&day);
如果(month> 12 || day> 31)
printf(“此日期已破\ n”);
else iWeek = caculateWeekDay(year,month,day); //通话功能
switch(iWeek)// iWeek获取返回值
{
情况0: printf(“今天%d-d-d是星期一\ n”万年历程序,年,月,日);休息;
情况1: printf(“今天%d-d-d是星期二\ n”,年,月,日);休息;
情况2: printf(“今天%d-d-d是星期三\ n”,年,月,日);休息;
情况3: printf(“今天%d-d-d是星期四\ n”,年,月,日);休息;
情况4: printf(“今天%d-d-d是星期五\ n”,年,月,日);休息;
情况5: printf(“今天%d-d-d是星期六\ n”万年历程序,年,月,日);休息;
情况6: printf(“今天%d-d-d是星期日\ n”,年,月,日);休息;
}
}
void Calendaryear()//用于打印特定年份日历的功能
{
int年,月;
printf(“请输入日期: ”); //提示用户输入年份
scanf(“%d”,&year);
for(month = 1; month <= 12; month ++){//将月份定义为1,然后循环,总共打印12个月
日历(年,月); //通话功能
}
}
void Calendarmonth()//函数用于打印年份和月份的日历
{
int年,月;
printf(“请输入日期: ”); //提示用户输入年份和月份
scanf(“%d-%d”,&year,&month);
如果(月> 12)
printf(“这个月累了\ n”);
else Calendar(year,month); //调用函数以打印输入月份的日历
}
int jumpyear(int year)//判断所经过的年份是否为a年///
{
if((year%4 == 0)&&(year0!= 0)||(year%400 == 0)){
返回0; //它是the年返回值0
}否则返回1; //不是a年返回值1
}
int caculateWeekDay(int year,int month,int day)//传入日的日期/月份/天的判断为///
{
int iWeek; // Kim Larson W的计算公式=(d + 2 * m + 3 *(m + 1)/ 5 + y + y / 4-y / 100 + y / 400)%7 <
if(month == 1 || month == 2){// 1月份和2月被视为上一年的13和14
month + = 12;
year-;
}
返回iWeek =(day + 2 * month + 3 *(month + 1)/ 5 + year + year / 4-year / 100 + year / 400)%7;
}
无效的日历(年,月)//打印特定的年月日历
{
int jump,first,h,sum;
int标签[2] [13] = {
{0,31,29,31,30,31,30,31,31,30,31,30,31},// a年的天数
{0,31,28,31,30,31,30,31,31,30,31,30,31} //正常年份每月的天数
};
printf(“日历%d \ n”,年);
if(month == 1)//将阿拉伯数字转换为英语输出
printf(“一月”);
否则if(month == 2)
printf(“二月”);
否则if(month == 3)
printf(“三月”);
否则if(month == 4)
printf(“四月”);
否则if(month == 5)
printf(“五月”);
否则if(month == 6)
printf(“ June”);
否则if(month == 7)
printf(“ July”);
否则if(month == 8)
printf(“ August”);
否则if(month == 9)
printf(“九月”);
否则if(month == 10)
printf(“十月”);
否则if(month == 11)
printf(“十一月”);
其他
printf(“ 12月”);
printf(“ \ n -d- \ n”,month); //输出2位数字,不足以填充0
printf(“ SUN MON TUE WED THU FRI SAT \ n”); //第1天2 3 4 5 6 7
leap = leapyear(year); //调用函数
sum = tab [leap] [month]; //一年中一个月的总天数
first = caculateWeekDay(year,month,1); //调用该函数以确定该月的第一天中的某天
if(first <= 5){//因为首先获取CaculateWeekDay函数的返回值,所以5表示星期六,当大于5表示星期日时,不需要空格
for(h = 0; h printf(“”);
}
int i = 1; //从第一个开始
first + = 1; //让first对应于星期几,以方便进行以下操作
while(i <= sum){//从第一个月初到月底
printf(“%4d”,i);
first =(first + 1)%7; //换行
if(first%7 == 0)
printf(“ \ n”);
i ++;
}
printf(“ \ n”);
printf(“ **************************** \ n”);
}
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-270329-1.html