码迷,mamicode.com
首页 > 其他好文 > 详细

万年历

时间:2018-11-20 00:09:09      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:代码   https   floor   公式   ret   .com   tuesday   sda   atoi   

题目描述

技术分享图片

实现思路

利用蔡勒公式计算

代码实现

#include <iostream>
#include <cstdlib>
#include<cmath>
using namespace std;
int main()
{
    string input;
    cin>>input;
    int first_=input.find("-");//第一次出现"-"的位置.
    int last_=input.rfind("-");//最后一次出现"-"的位置.
    //cout<<first_<<endl;
    //cout<<last_;
    int year = atoi(input.substr(0,4).c_str());//取出年份
    int month= atoi(input.substr(first_+1,last_-first_-1).c_str());//取出月份
    int day = atoi(input.substr(last_+1).c_str());//取出天数
    //cout<<year<<endl;
    //cout<<month<<endl;
    //cout<<day;
    //利用蔡勒公式计算
    if(month==1||month==2){
        month=month+12;//1月份相当于上一年的13月,2月份相当于上一年的14月
        year=year-1;
    }
    int c=year/100;//取年份的前两位数
    int y=year%100;//取年份的后两位数
    int m=month;
    int d=day;
    int w=int((y+floor(y/4)+floor(c/4)-2*c+floor(26*(m+1)/10)+d-1))%7;
    if(w<0){
        w=w+7;
    }
    switch(w){
    case 0:
        cout<<"Sunday";
        break;
    case 1:
        cout<<"Monday";
        break;
    case 2:
        cout<<"Tuesday";
        break;
    case 3:
        cout<<"Wednesday";
        break;
    case 4:
        cout<<"Thursday";
        break;
    case 5:
        cout<<"Friday";
        break;
    case 6:
        cout<<"Saturday";
        break;
    }
    return 0;
}

万年历

标签:代码   https   floor   公式   ret   .com   tuesday   sda   atoi   

原文地址:https://www.cnblogs.com/overlows/p/9986327.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!