趣味程序设计_打印日历
题目描述
打印出任意年份的日历。提示:要判断该年份是否是闰年,若是闰年,二月为29天,平年为28天。而判断闰年的规则是:如果((该年能被4除尽且不能被100除尽) 或 能被400除尽),则该年是闰年。
输入
输入年份。
输出
与输入相对应,输出该年12个月的日历。
样例输入
2012
样例输出
*Mon Tue Wed Thu Fri Sat Sun
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
*Mon Tue Wed Thu Fri Sat Sun
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
*Mon Tue Wed Thu Fri Sat Sun
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
*Mon Tue Wed Thu Fri Sat Sun
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
*Mon Tue Wed Thu Fri Sat Sun
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
*Mon Tue Wed Thu Fri Sat Sun
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
*Mon Tue Wed Thu Fri Sat Sun
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
提示
重点是要将某天对应星期几算出来,其它就只要搞好排版就行了。
关于求星期几,可以先找一个基准,比如1年1月1日是星期一,或1990年1月1日是星期一,然后按7天一个周期,计算出任意一天是星期几。当然,这还需要知道每个月有多少天,2月份还要看是否是闰年。
代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,i,j,b,q,cha,z;
int x[]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&a);
if(a%4==0&&a%100!=0)
x[1]=29;
if(a%400==0)
x[1]=29;
cha=a-2001;
if(cha>=0)
{z=cha/4;
cha=z*2+(cha-z);
b=cha%7;
b++;
}
else
{cha=2000-a;
z=cha/4;
cha=-z*2-(cha-z)+6;
b=cha%7;
b=b+7;
b=b%7;
}
for(i=0;i<12;i++)
{
printf("%4s%4s%4s%4s%4s%4s%4s\n","*Mon","Tue","Wed","Thu","Fri","Sat","Sun");
for(q=0;q<b-1;q++)
printf("%4s","");
for(j=0;j<x[i];j++)
{
b++;
printf("%4d",j+1);
if(b==8)
{b=1;
printf("\n");
}
}
if(b!=1)
printf("\n");
}
return 0;
}
#include<stdlib.h>
int main()
{
int a,i,j,b,q,cha,z;
int x[]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d",&a);
if(a%4==0&&a%100!=0)
x[1]=29;
if(a%400==0)
x[1]=29;
cha=a-2001;
if(cha>=0)
{z=cha/4;
cha=z*2+(cha-z);
b=cha%7;
b++;
}
else
{cha=2000-a;
z=cha/4;
cha=-z*2-(cha-z)+6;
b=cha%7;
b=b+7;
b=b%7;
}
for(i=0;i<12;i++)
{
printf("%4s%4s%4s%4s%4s%4s%4s\n","*Mon","Tue","Wed","Thu","Fri","Sat","Sun");
for(q=0;q<b-1;q++)
printf("%4s","");
for(j=0;j<x[i];j++)
{
b++;
printf("%4d",j+1);
if(b==8)
{b=1;
printf("\n");
}
}
if(b!=1)
printf("\n");
}
return 0;
}