万年历
程序员文章站
2023-08-18 09:42:56
"题目描述" 实现思路 "利用蔡勒公式计算" 代码实现 include include include using namespace std; int main() { string input; cin input; int first_=input.find(" ");//第一次出现" "的位 ......
实现思路
代码实现
#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; }
下一篇: C语言中使用递归解决汉诺塔问题