标签:表示 span oid 一个 日期转换 空白 判断 fir std
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("\t\t%d年%d月\n", year, month); 34 printf("--------------------------\n"); 35 printf("日\t一\t二\t三\t四\t五\t六\n"); 36 37 //计算1号的星期数 38 firstDateWeek = weekNum(year, month, 1); 39 printBlank(firstDateWeek); //每个月日历前的空白 40 41 //开始打印日期 42 for (i = 1; i <= days; i++) { 43 printf("%d\t", i); 44 dateWeek = weekNum(year, month, i); 45 if (dateWeek == 6) { 46 printf("\n"); 47 } 48 } 49 50 printf("\n"); 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("\t"); 82 } 83 }
标签:表示 span oid 一个 日期转换 空白 判断 fir std
原文地址:https://www.cnblogs.com/2018jason/p/12888417.html