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

#include<iostream>
using namespace std;
bool isLeap(int y)
{
if(y%== || y%==&&y%!=)
return true;
return false;
}
int main()
{
int a,b,c;
int y1,y2;
int pre_ydays = ; //
int pre_mdays = ;
int week = ;
int b1 = ;//用于计数,第b1个星期c
int day = ;//用于记录当前是是第a月的第几天
int months[]= {,,,,,,,,,,,,};//每个月的天数
cin>>a>>b>>c>>y1>>y2;
if(c == ) //因为7%7 =0
c = ;
for(int i=;i<y1;i++) //计算从1850年到y1年之前共有多少天
{
if(isLeap(i))
pre_ydays += ;
else
pre_ydays += ;
}
week = (pre_ydays+) % ;//计算y1年1月1号是星期几,因为1850年1月1号是星期二,所以要加2
for(int y = y1;y<=y2;y++)//从y1年到y2年遍历
{
//如果是闰年2月份是29天
if(isLeap(y))
months[] = ;
for(int m=;m<a;m++)
{
pre_mdays += months[m];//记录从y年1月1号到a月1号之前有多少天
}
week = (pre_mdays + week)%; //计算呢a月1号是星期几
b1 = ;//用于记录第b1个星期c,初始化为0
day = ;//记录到第几天了
for(int d = ;d<=months[a]; d++)
{ if(week == c)//是星期c
{
b1 ++;
}
if(week==c && b1==b)//是当前日期
break;
day++;
week = (week+)%;
}
printf("%4d/%02d/%02d\n",y,a,day);
//为计算下一年做准备
pre_ydays = pre_ydays+;
if(isLeap(y))
{
pre_ydays += ;
months[] = ;
}
week = (pre_ydays +)%;
pre_mdays = ;
}
return ;
}

计算a月的第b个星期c的更多相关文章

  1. SQL 计算某月有多少天

    今天用SQL Server 2005写查询语句,要求计算一个月平均每天发生的金额.以前往往喜欢查询相关的所有列,在代码中进行计算,还没有在SQL中写过. 第一印象就是:要考虑到润年还是平年,再判断是大 ...

  2. iOS 计算某个月的天数 计算某天的星期

    // 某年某月的天数 - (NSInteger)dayCount:(NSInteger)years { NSInteger count = ; ; i <= ; i++) { == i) { = ...

  3. java截取日期范围并计算相差月数

    前两天,媳妇单位让整理excel的某一个单元格内两个日期范围的相差月数,本人对excel操作不是很熟练,便写了个小程序计算了一下,原始需求如下: 计算投资期限的范围,并得到期限范围的相差月数 思路1: ...

  4. java计算一个月有多少天和多少周

    import java.util.Calendar; /** * 功能概述:计算指定年月的天数和周数<br> * 创建时间:2010-5-17 下午05:25:58<br> * ...

  5. java 计算一个月有多少天和多少周

    import java.util.Calendar; /** * 功能概述:计算指定年月的天数和周数<br> */ public class Test{ public static voi ...

  6. 需求:输入一个年份和月份 ,显示当前月日情况 ,星期数要对应准确 * 1.1900年1月1号开始 * 2.星期 : 直接用总天数对7求余数 31 28 59 / 7 = 5 * 3.以\t来个开

    public class Demo4 { /** * @param args */ public static void main(String[] args) { // TODO Auto-gene ...

  7. C#WinForm中显示实时时间:年/月/日 时/分/秒 星期X

    //加载窗体时 string weekstr = ""; private void Form22_Load(object sender, EventArgs e) { this.t ...

  8. php中cal_days_in_month不可用时的替代方法(计算一个月的天数)

    在计算某个月中的天数时,由于PHP编译时没有加上--enable-calendar选项,会导致cal_days_in_month方法不可用. 这时,如果不能更改服务器的编译设置,可以通过以下方法实现该 ...

  9. oracle 年龄计算 岁 月 天

    select trunc(months/12) || '岁' || trunc(mod(months, 12)) || '月' ||       trunc(sysdate - add_months( ...

随机推荐

  1. 搭建自己的Docker registry(五)

    弄了一天,在网上查了很多资料,感觉都好复杂好复杂,一步一步踩坑踩出来就好了. 服务器:阿里云(香港) 环境:CentOS Linux release 7.4.1708 (Core) Docker:1. ...

  2. sed用法说明

    sed介绍 sed:stream editor 是一个行编辑器,或叫流编辑器,每次处理一行,处理完一行再处理下一行.sed并不直接处理源文件,而是读取一行后放入模式空间(patten space)里, ...

  3. centos 7 su jenkins 切换不过去

    root切换到jenkins用户: passwd jenkins:设置jenkins用户密码 su jenkins : 切换不过去, 查看passwd文件 cat /etc/passwd 找到:jen ...

  4. delphi字符串分割

    function GetLeft(sText, sepStr: string): string; var p: Integer; begin p := Pos(sepStr, sText); then ...

  5. [zz] 拍照需谨慎:20张错位照片让人笑喷

    http://www.kaixin001.com/qiushi/repaste/105876543_10386791939.html?uid=130103872&urpid=103957489 ...

  6. 关于tpg例程的仿真

    关于tpg例程的仿真 processor system reset---rst_clk_wiz_0_148M 可以看出interconnect_aresetn和peripheral_aresetn的复 ...

  7. 问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式。需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机。 模块“CPUIDEarly”启动失败。

    问题 Windows7VMware14安装虚拟机时出现 此主机不支持虚拟化实际模式.需要具备 Intel“VMX 不受限客户机”功能才能在 Intel 处理器上运行此虚拟机. 模块“CPUIDEarl ...

  8. 搭建sparksql的hive测试环境

    sbt依赖 name := "Pi" version := "1.0" scalaVersion := "2.10.6" libraryDe ...

  9. bitbucket 上公钥SSH key如何add key并进行项目运用

    前提:从sourcetree 添加项目时老是拉取不下来,查到原因是应为bitbucket需要SSH key公钥 目的:公钥相当于你在任何一台电脑只要有公钥授权就可以随时提交代码到服务器 原因: 1.很 ...

  10. 关于javabean

    [javabean定义]定义:JavaBeans是Java语言中可以重复使用的软件组件,实质上是一种特殊的Java类.特点是可序列化,提供无参构造器,提供getter方法和setter方法访问对象的属 ...