优美的大乔 2023-02-25 16:15 采纳率: 94.7%
浏览 45
已结题

关于日历的问题,如何解决?(C++)

img

img

神犇们帮忙看一下,为什么只有40分?传送门
代码:

#include <bits/stdc++.h>
using namespace std;
long long a[5]= {0,1,4,100,400},b[5]= {0,365,1461,36524,146097},c[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
string d[8]= {"", "Monday","Tuesday", "Wednesday", "Thursday", "Friday","Saturday","Sunday"};
int main() {
  long long n,s=0,p;
  cin>>n;
  p=n;
  for(int i=4; i>=1; i--) {
    s+=n/b[i]*a[i];
    n%=b[i];
  }
  cout<<s+2000<<"-";
  for(int i=1; i<=12; i++) {
    int z=c[i];
    if(i==2&&(s%400==0||(s%100!=0&&s%4==0)))z++;
    if(n<z) {
      s=i;
      break;
    }
    n-=z;
    if(i==12)s=12;
  }
  cout<<s<<"-"<<n<<" ";
  p+=6;
  if(p%7==0)cout<<d[7];
  else cout<<d[p%7];
  return 0;
}
  • 写回答

3条回答 默认 最新

  • ksgpjhqf 2023-03-04 00:52
    关注

    日期计算可以不用循环和数组,如果想了解更多,可以看看这个文章:c语言将元年1月1日起的天数转化成日期,不用循环和数组
    针对这个问题的代码:

    #include<iostream>
    #include<string>
    using namespace std;
    string d[8]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    
    void getdate(long long offsetdays,long long *year, long long *month, long long *day) {
        long long d = offsetdays + 306+145731;
        *year = 1;
        *year += d / 146097 * 400;
        d %= 146097;
        *year += d / 36524 * 100;
        d %= 36524;
        *year += d / 1461 * 4;
        d %= 1461;
        *year += d / 365;
        d %= 365;
        if (d < 306) {
            (*year)--;
        }
        *year += 1600;
        d++;
        *month = (d * 12 - 8) / 367 + 1;
        *day = d - ((*month - 1) * 367 + 7) / 12;
        *month = (*month + 1) % 12 + 1;
    }
    
    int main(){
        long long n,w,year,month,day;
        cin>>n;
        getdate(n,&year,&month,&day);
        w=(n+6)%7;
        cout<<year<<'-';
        if(month<10)cout<<'0';
        cout<<month<<'-'<<day<<' '<<d[w];
        return 0;
    }
    
    

    运行结果:

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月12日
  • 已采纳回答 3月4日
  • 创建了问题 2月25日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效