calendar

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void is_leap(int );
void total_day(int ,int ,int);
int week(int ,int ,int );
void displays_week(int ,int ,int);
void display_month(int ,int,int);

int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int fale = 0;
void is_leap(int year){
    if (0==year%4 && year%100!=0 ||0==year%400){
        printf("%d is leap\n",year);
        fale = 1;
    }else{
        printf("%d is not leap\n",year);
    }
}
void total_day(int year,int month,int day){
    if (fale==1){
        months[1]+=1;
    }
    int days=0;
    for (int i=0;i<month-1;i++){
        days+=months[i];
    }
    days+=day;
    printf("%d-%d is %d for %d\n ",month,day,days,year);
}
int week(int year,int month,int day){
    int y=year;
    int m=month;
    int d=day;
    if (month==2 || month==1){
        m+=12;
        y-=1;
    }
    int weak=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7;
    return weak;
}
void displays_week(int year,int month,int day){
    int weak= week(year,month,day);
    switch(weak){
        case 0:
            printf("%d %d %d is 星期天\n",year,month,day);
            break;
        case 1:
            printf("%d %d %d is 星期一\n",year,month,day);
            break;
        case 2:
            printf("%d %d %d is 星期二\n",year,month,day);                    
            break;
        case 3:
            printf("%d %d %d is 星期三\n",year,month,day);
            break;
        case 4:
            printf("%d %d %d is 星期四\n",year,month,day);
            break;
        case 5:
            printf("%d %d %d is 星期五\n",year,month,day);
            break;
        case 6:
            printf("%d %d %d is 星期六\n",year,month,day);
            break;

    }
}
void display_month(int year,int month ,int day) {
    printf("\t\t\t%d %d %d\n", year, month, day);
    printf("日\t一\t二\t三\t四\t五\t六\n");
    int weak = week(year, month, 1);
    for (int i = 0; i < weak; i++) {
        printf("\t");
    }
    for (int i = 1; i <= months[month - 1]; i++) {
        if (day == i) {
            printf("\033[32m");
            printf("%d\t", i);
            printf("\033[0m");
        } else {
            printf("%d\t", i);
        }
        int weaks = week(year, month, i);
        if (6 == weaks) {
            putchar('\n');
        }
    }
    putchar('\n');
}
int main(){
    int year,month,day;
    scanf("%d%d%d",&year,&month,&day);
    is_leap(year);
    total_day(year,month,day);
    displays_week(year,month,day);
    display_month(year,month,day);
}
  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值