输入不同year,month,打印月历
提示:
思路:
第一步判断该月第一天是周几:计算方式是计算该年该月第一天距离1900.1.1的天数,则week=天数%7;
第二步输出:输出前先打印week个空格,再输出,然后7个换行。
#include<stdio.h> #include<math.h> #include<malloc.h> #include<string.h> bool func(int y){ if((y%4==0&&y%100!=0)||y%400==0){ return true; } return false; } main() { int y,m,i,j,ds=0; int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; scanf("%d%d",&y,&m); for(i=1900;i<y;i++){ ds=ds+365; if(func(i)){ ds++; } } if(func(y)){ mon[2]=mon[2]+1; } for(i=1;i<m;i++){ ds=ds+mon[i]; } ds=ds+1; ds=ds%7; j=0; for(i=0;i<ds;i++){ printf(" "); j++; } for(i=1;i<=mon[m];i++){ printf("%-3d ",i); j++; if(j%7==0){ printf("\n"); } } }