#P1057. 一周中的第几天

题目描述

给定一个日期,请你判断它是对应一周中的哪一天。

输入格式

输入为三个整数:day、month 和 year,分别表示日、月、年。题目保证输入的日期为1971到2100年之间的合法有效日期

输出格式

输出该日期对应一周中的哪一天所对应的英文单词

Tip:周日到周六的英文分别是"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"; 1971.01.01是星期五

#include<bits/stdc++.h>


using namespace std;
bool run(int n){//闰年判断 
    if(n%400 == 0)
        return true; 
    else if(n%4 == 0 && n%100 != 0)
        return true;
    else 
        return false;
}
//主函数外建立篇全局变量: 
int y,m,d,sum=0;
int main(void) {
    
    /*
        思    路: 
        建立sum记录天数 
        已知1971.01.01是星期五
        日会比正常的多1
        sum=(sum+=3)%7就是星期  
    */
    //y是年m是月d是日;
    //sum用来记录过了几天 
    //输入 
    cin>>d>>m>>y;
    //遍历年 
    for(int i=1970;i<y;i++){
        if(run(i))
            sum+=366;
        else
            sum+=365;
    }
    //遍历月
    //建立一个a存储每月的天数
    int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    //注意2月是平年的情况 
    for(int i=1;i<m;i++){
        //如果是闰年还是2月29天
         if(i==2&&run(y)){
             sum+=29;
         } else sum+=a[i];
    }
    //加上日 
    sum+=d;
    //日会比正常的多1
    sum=(sum+=3)%7; 
    string week_name[8]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
    cout<<week_name[sum];
    return 0;
}

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值