万年历程序

2022-04-06 01:30:18   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《万年历程序》,欢迎阅读!
万年历,程序
#include void main()

{//200111日是星期一为基准的万年历。 int run,year,month,day,i,leap,daymax,dif_year,dayth,NumOfLeap,week,alldays; do { printf("*******************这是一个万年历********************\n\n"); printf("请输入待查询的年月(请以'2010,10'格式输入):\n"); do { scanf("%d,%d",&year,&month); if(year<=0) printf("年份输入有误,请重新输入!\n"); if(month<0||month>12) printf("月份输入有误,请重新输入!\n"); }while(year<=0||month<1||month>12); if((year%4==0&&year%100!=0)||year%400==0) leap=1;//判别是否闰年。 else leap=0; if(month==2)//计算该月最大日期,以变量daymax记录 if(leap) daymax=29; else daymax=28; else if(month==4||month==6||month==9||month==11) daymax=30; else daymax=31; do { printf("请输入待查询的日期:"); scanf("%d",&day); if(day<0||day>daymax) printf("输入有误,请重新输入!\n"); }while(day<0||day>daymax);

//---------计算所给日期所在月份的1号是星期几(为变量week赋值)-------- switch(month) //计算所输入日期是该年的第几天(dayth)... { case 1:dayth=day;break; case 2:dayth=31+day;break; case 3:dayth=59+day;break; case 4:dayth=90+day;break; case 5:dayth=120+day;break; case 6:dayth=151+day;break; case 7:dayth=181+day;break; case 8:dayth=212+day;break; case 9:dayth=243+day;break; case 10:dayth=273+day;break; case 11:dayth=304+day;break; case 12:dayth=334+day;break; }


if(month>2&&leap) dayth++; printf("\n%d%d%d日是%d年的第%d!\n\n",year,month,day,year,dayth); if(year>=2001)//年份在2001年及之后的情况 { dif_year=year-2001; NumOfLeap=0; if(dif_year>0) //计算间隔多少个闰年 { for(i=1;i { if((2001+i)%4==0&&(2001+i)%100!=0||(2001+i)%400==0) NumOfLeap++; } } alldays=365*dif_year+NumOfLeap+dayth;//alldays记录与200111日相隔天数 week=(alldays-day+1)%7; } else //年份在2001年之前的情况... { dif_year=2001-year; NumOfLeap=0; if(dif_year>1) //计算间隔多少个闰年 { for(i=1;i { if((2001-i)%4==0&&(2001-i)%100!=0||(2001-i)%400==0) NumOfLeap++; } } alldays=365*(dif_year-1)+NumOfLeap+(365-dayth); if(leap) alldays++; week=(7-(alldays+day-1)%7)%7; } printf("相隔%d!\n该月1号是星期%d!\n",alldays,week); //--------月视图输出------- printf("%d%d%d%d...\n",year,month,day,((day-1)%7+week)%7);//((day-1)%7+week)%7用每月1日的星期求任一天的星期。 printf("\n-----------------------------------------\n%d%d:\n\n",year,month); printf("\t\t\t\t\t\t\n"); if(week) for(i=0;i


}

printf(" \t"); for(i=1;i<=daymax;i++) { printf("%d\t",i); if(++week%7==0) printf("\n"); } printf("\n\n---------------------月视图输出--------------------\n"); printf("是否继续查询?(1--;0--):"); scanf("%d",&run); }while(run);//循环查询控制

printf("********************谢谢使用万年历********************\n\n");


本文来源:https://www.wddqxz.cn/220a29eafab069dc50220171.html

相关推荐