输入年份和月份打印当月日历

Posted 2018jason

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输入年份和月份打印当月日历相关的知识,希望对你有一定的参考价值。

 1 /*
 2     QQ:778138708
 3     date:2020-5-14
 4     输入年份和月份,打印当月日历
 5  
 6 */
 7 /*
 8     日期转换为星期的方法
 9     W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
10     在公式中d表示日期中的日数,m表示月份数,y表示年数
11     把一月和二月看成是上一年的十三月和十四月,例:如果是2004-1-10则换算成:2003-13-10来代入公式计算。
12 */
13 #include <stdio.h>
14 int weekNum(int year, int month, int day);
15 int isLeap(int year);
16 void printBlank(int n);
17 int main(void)
18 {
19     int year, month;
20     int leap, days;
21     int i, firstDateWeek, dateWeek;
22     int tab[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
23         {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};
24     
25     printf("请输入一个年份(例如:2020):");
26     scanf("%d", &year);
27     printf("请输入一个月份(1-12的数字):");
28     scanf("%d", &month);
29     
30     leap = isLeap(year);
31     days = tab[leap][month];    //每个月的总天数
32     
33     printf("		%d年%d月
", year, month);
34     printf("--------------------------
");
35     printf("日	一	二	三	四	五	六
");
36     
37     //计算1号的星期数
38     firstDateWeek = weekNum(year, month, 1);
39     printBlank(firstDateWeek);      //每个月日历前的空白
40     
41     //开始打印日期
42     for (i = 1; i <= days; i++) {
43         printf("%d	", i);
44         dateWeek = weekNum(year, month, i);
45         if (dateWeek == 6) {
46             printf("
");
47         }
48     }
49     
50     printf("
");
51     
52     return 0;
53 }
54 //日期转换为星期
55 int weekNum(int year, int month, int day)
56 {
57     int week;
58     
59     if (month == 1 || month == 2) {
60         year =year - 1;
61         month = 12 + month;
62     }
63     week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400 + 1) % 7;
64     
65     return week;
66 }
67 //判断闰年
68 int isLeap(int year)
69 {
70     int leap = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
71     
72     return leap;
73 }
74 //打印1号之前的空白
75 void printBlank(int n)
76 {
77     int i;
78     
79     for (i = 0; i < n; i++)
80     {
81         printf("	");
82     }
83 }

 

以上是关于输入年份和月份打印当月日历的主要内容,如果未能解决你的问题,请参考以下文章

JAVA中怎么实现,根据用户输入的年份和月份得到当月第1天(该月1号)

在Java中如何用calendar类输入年和月份打印当月的日历

JAVA 输入年份月份打印该月的日历

编写万年历:输入一个年份,再输入一个月份,把那个月的日历打印出来(1900年1月1日是星期一)

从给定的月份/年份打印日历

delphi 输入年月判断天数,判断指定年份与月份判断当月有多少天