zoukankan      html  css  js  c++  java
  • 计算a月的第b个星期c

    计算从y1到y2年a月的第b个星期c的日期

    #include<iostream>
    using namespace std;
    bool isLeap(int y)
    {
        if(y%400==0 || y%4==0&&y%100!=0)
            return true;
        return false;
    }
    int main()
    {
        int a,b,c;
        int y1,y2;
        int pre_ydays = 0; //
        int pre_mdays = 0;
        int week = 0;
        int b1 = 0;//用于计数,第b1个星期c
        int day = 1;//用于记录当前是是第a月的第几天
        int months[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};//每个月的天数
        cin>>a>>b>>c>>y1>>y2;
        if(c == 7)  //因为7%7 =0
            c = 0;
        for(int i=1850;i<y1;i++) //计算从1850年到y1年之前共有多少天
        {
            if(isLeap(i))
                pre_ydays += 366;
            else
                pre_ydays += 365;
        }
        week = (pre_ydays+2) % 7;//计算y1年1月1号是星期几,因为1850年1月1号是星期二,所以要加2
        for(int y = y1;y<=y2;y++)//从y1年到y2年遍历
        {
            //如果是闰年2月份是29天
            if(isLeap(y))
                months[2] = 29;
            for(int m=1;m<a;m++)
            {
                pre_mdays += months[m];//记录从y年1月1号到a月1号之前有多少天
            }
            week = (pre_mdays + week)%7;  //计算呢a月1号是星期几
            b1 = 0;//用于记录第b1个星期c,初始化为0
            day = 1;//记录到第几天了
            for(int d = 1;d<=months[a]; d++)
            {
                
                if(week == c)//是星期c
                {
                    b1 ++;
                }
                if(week==c && b1==b)//是当前日期
                    break;
                day++;
                week = (week+1)%7;
            }
            printf("%4d/%02d/%02d
    ",y,a,day);
            //为计算下一年做准备
            pre_ydays = pre_ydays+365;
            if(isLeap(y))
            {
                pre_ydays += 1;
                months[2] = 28;
            }
            week = (pre_ydays +2)%7;
            pre_mdays = 0;
        }
        return 0;
    }
  • 相关阅读:
    从一个表复制信息到另一个表
    Base64原理 bits 3>4 8bits/byte>6bits/byte
    blockchain
    routing decisions based on paths, network policies, or rulesets configured by a network administrator
    Least_squares 最小二乘法
    How to Write a Spelling Corrector
    prior knowledge
    Law of total probability
    Subset sum problem
    wdateyearmonthweekgategoryamountcoin
  • 原文地址:https://www.cnblogs.com/ttzz/p/10553929.html
Copyright © 2011-2022 走看看