日期换星期

#include <stdio.h>
int Change(int year,int month,int day){//根据日期判断出星期几
    if(month ==1||month==2){month+=12;year--;}//一二月计为上一年的13、14月
    int c=year/100; //年份高两位
    int y=year%100; //年份低两位
    int m=month;    //月份
    int d=day;      //日份
    int W=c/4-2*c+y+y/4+26*(m+1)/10+d-1;//公式求出星期
    int ans;        //定义答案
    if(W<0)ans=(W+(-W/7+1)*7)%7;    //负数先变正数再模
    else ans=W%7;                   //正数直接模7即可
    if(ans==0)return ans+7;         //星期7而不是星期0
    else return ans;
}
int main(){
    int year,month,day;cin>>year,month,day;//输入年月日
    cout<<Change(year, month, day)<<endl;//输出星期
    return 0;
}
/*
蔡勒公式(根据日期计算出周几)
W = 5 - C + y + [y/4] + [13 * (M+1) / 5] + d – 1
例如2018年10月23日是周二
In 2018 10 23
Out 2
*/

猜你喜欢

转载自blog.csdn.net/cj1064789374/article/details/84890826
今日推荐