C 语言输入年和月打印出本月的日历

来源:互联网 发布:伺服电机怎么编程控制 编辑:程序博客网 时间:2024/04/30 09:23

环境:vs2012,执行结果:


代码:

#include <stdio.h>      /* printf, scanf */#include <conio.h>int main (){// 判断输入月份的天数函数int monthDays(int year, int month);//日期转为星期函数int  CaculateWeekDay(int y, int m, int d);int year = 1900, month = 11, day = 1; char ch ;// get yearprintf("Input The Year:");scanf("%d", &year);while ( (ch = getchar()) != EOF && ch != '\n' ) ;// get Monthprintf("Input The Month:");scanf("%d", &month);while ( (ch = getchar()) != EOF && ch != '\n' ) ;printf("The %d-%d Calendar:\n", year, month);printf("-----------------------------------------------------------\n");printf("\tMon\tTue\tWed\tThu\tFri\tSat\tSun\n\t");int j;for (j = 0; j < CaculateWeekDay(year,month,day); j++){printf("\t");}printf("%d",day);int days = monthDays(year,month);for (int i = 2; i<= days; i++){if (j == 6){j = -1;printf("\n");}printf("\t%d",i);j++;}printf("\n");printf("-----------------------------------------------------------\n");_getch();return 0;}//日期转为星期函数int  CaculateWeekDay(int y, int m, int d){if(m==1 || m==2) {m += 12;y--;}int iWeek=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;return iWeek;} // 判断输入月份的天数函数int monthDays(int year, int month){int days = 0;switch (month){case 1:  days = 31; break;case 2:  days = ((year%400 == 0) || (year%100 !=0 && year%4 ==0)) ? 29 : 28; break;case 3:  days = 31; break;case 4:  days = 30; break;case 5:  days = 31; break;case 6:  days = 30; break;case 7:  days = 31; break;case 8:  days = 31; break;case 9:  days = 30; break;case 10: days = 31; break;case 11: days = 30; break;case 12: days = 31; break;default:break;}return days;}


原创粉丝点击