- #include<stdio.h>[img=110,0]https://bbs.codeaha.com/forum.php?mod=image&aid=6472&size=300x300&key=3b420b0df125b3f5&nocache=yes&type=fixnone[/img]
- int fdyear (int a)
- {
- if(a%400==0||a%100!=0&&a%4==0) //判断是不是闰年
- return(a-1+a/4-a/100+a/400)%7;//闰年元旦计算
- else
- return(a+a/4-a/100+a/400)%7;//平年元旦计算
- }
- int main()
- {
- int n,i,y,fdmonth[12];
- printf ("****************欢迎****************");
- printf("");
- printf("请输入年份:");
- scanf("%d",&y);
- if(y<1)
- printf("输入的是错误的年份。");
- else
- {
- n=(y%400==0||y%100!=0&&y%4==0);
- char
- *month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
- char week[]="日 一 二 三 四 五 六";
- printf("");
- int
- daysmonth[12]={31,28+n,31,30,31,30,31,31,30,31,30,31,};//输入年份每个月的总天数
- printf(" %d年的日历 ",y);
- for(i=0;i<12;i++)//计算每个月的第一天
- {
- static int day=0;
- fdmonth[i]=(day+fdyear(y))%7;
- day=day+daysmonth[i];
- }
- for(i=0;i<12;i+=3)//每三个月并排打印
- {
- printf(" %s %s %s",month[i],month[i+1],month[i+2]);
- char s[]=" ";
- printf("%-3s %s %-3s %s %-3s %s",s,week,s,week,s,week);
- for(int j=0;j<6;j++)//每个月最多占行
- {
- for(int d=i;d<i+3;d++)//三个月并排打印每一行
- {
- printf(" ");
- for(int n=0;n<7;n++)//每一行有日
- {
- int k=1-fdmonth[d]+n+7*j;
- if(k<1||k>daysmonth[d])
- printf(" ");
- else
- printf("%-3d",k);//计算日期输入
- }
- }
- printf("");
- }
- printf("");
- }
- }
- }
复制代码 |