输入不同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");
        }
    }
}
posted @ 2019-11-05 11:43  dreamy_java  阅读(250)  评论(0编辑  收藏  举报