提示:
思路:先算出每月1号星期几week;输出前先打印week个空格,再输出,然后7个换行。
/* 输入年、月份,打印日历 */ #include <stdio.h> #include<string.h> int func(int y){ int rs; rs=0; if(y%4==0&&y%100!=0||y%400==0){ rs=1; } return rs; } void main(int argc,char *argv[]) { int month[5][7]; int y,m,rs,nowday,agoday,sumday,week; int y1[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}; int y2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int i,j; i=0;j=0;agoday=0;nowday=0;sumday=0; scanf("%d%d",&y,&m); rs=func(y); for(i=1900;i<y;i++){ if(rs){ agoday+=366; }else{ agoday+=365; } } for(i=1;i<m;i++){ if(rs){ nowday+=y1[i]; }else{ nowday+=y2[i]; } } sumday=agoday+nowday+2; week=sumday%7; printf("7 1 2 3 4 5 6\n"); if(rs){ for(i=0;i<week;i++){ printf(" "); j++; } for(i=1;i<=y1[m];i++){ printf("%-3d",i); j++; if(j%7==0){ printf("\n"); } } }else{ for(i=0;i<week;i++){ printf(" "); j++; } for(i=1;i<=y2[m];i++){ printf("%-3d",i); j++; if(j%7==0){ printf("\n"); } } } }
原文:https://www.cnblogs.com/zhaohuan1996/p/11797488.html