输出月历

输出月历

在这里插入图片描述


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <math.h>
int month[]= {31,28,31,30,31,30,31,31,30,31,30,31};
const long long date=3;
int runnian (int y)
{
    if (y%400==0)
        return 1;
    else if (y%100==0)
        return 0;
    else if (y%4==0)
        return 1;
    else
        return 0;
}

int printm(int f, int d)
{
    int w=f;
    int i, j;
    printf("Sun Mon Tue Wen Thu Fri Sat\n");
    if (w!=7)
    {
        printf("   ");
        for (i=1; i<w; i++)
        {
            printf("    ");
        }
    }
    else
        w=0;
    for (i=1; i<=d; i++, w++)
    {
        if (w==0)
            printf("%3d", i);
        else
            printf("%4d", i);

        if (w==6)
        {
            putchar('\n');
            w=-1;
        }
    }
    if (w!=0)
        putchar('\n');
    return 0;
}

int getd (int y, int m)
{
    return m==2?runnian(y)+month[m-1]:month[m-1];
}


int getf(int y, int m)
{
    long long days=0;
    int i;
    if (y<2020)
    {
        for (i=y+1; i<2020; i++)
            days+=365+runnian(i);
        for (i=m; i<=12; i++)
        {
            days+=getd(y, i);
        }
        return (date+(7-days%7))%7==0?7:(date+(7-days%7))%7;
    }
    else if (y>2020)
    {
        for (i=2020; i<y; i++)
            days+=365+runnian(i);
        for (i=1; i<m; i++)
            days+=getd(y, i);
        return (date+days%7)%7==0?7:(date+days%7)%7;
    }
    else
    {
        for (i=1; i<m; i++)
        {
            days+=getd(y, i);
        }
        return (date+days%7)%7==0?7:(date+days%7)%7;
    }
}


int main()
{
    int y, m;
    int f=0;
    while (scanf("%d%d", &y, &m)==2)
    {
        if (f)
            putchar('\n');
        else
            f=1;

        printm(getf(y, m), getd(y, m));
    }

    return 0;
}

在这里插入图片描述

// A code block
var foo = 'bar';
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int month, i, j;
    scanf("%d", &month);printf("Sun Mon Tue Wen Thu Fri Sat\n");
    if(month >= 7)
        month -= 7;

        for(i = 1; i <= month; i++)
            printf("    ");
        for(i = month + 1, j = 1; j <= 30; i++, j++)
        {
            printf("%3d", j);
            if(i % 7 == 0 && j != 30)
                printf("\n");
            if(i % 7 != 0 && j != 30)
                printf(" ");
        }

    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值