ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

日期模拟

2022-04-08 21:31:19  阅读:252  来源: 互联网

标签:int 28 31 30 y% ++ 日期 模拟


若已知当前年月日,要计算过了n天后天的年月日,代码如下:

//代码是当前2022年4月8日, 过100天后的年月日

#include<stdio.h>
static int M[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void Data()
{
int y=2022;
int m=4;
int d=8;
int i;
for(i=1;i<101;i++) //i<101 实际上是过了100天
{
if(y%400==0||((y%100!=0)&&y%4==0))
M[2]=29;
else
M[2]=28; //记得恢复M[2]=28;
d++;
if(d>M[m])
{
d=d-M[m]; //这两行不能颠倒
m++;
}
if(m>12)
{
m=m-12;
y++;
}
}

printf("%d %d %d",y,m,d);
}
int main()
{
Data();
}

 

若现在已知两个年月日,要求这两个年月日之间相隔多少天呢?比如现在是2022年4月8日,2022年7月6日放暑假,这中间要过多少天?

只需要改变for循环的终止条件,和初始条件即可即可:

#include<stdio.h>
static int M[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
void Data()
{
int y=2022;
int m=4;
int d=8;
int i;
for(i=0;y!=2022||m!=7||d!=6;i++)  //i的初始值为0,因为不算今天
{
if(y%400==0||((y%100!=0)&&y%4==0))
M[2]=29;
else
M[2]=28; //记得恢复M[2]=28;
d++;
if(d>M[m])
{
d=d-M[m]; //这两行不能颠倒
m++;
}
if(m>12)
{
m=m-12;
y++;
}
}
printf("%d %d %d\n",y,m,d);
printf("过了%d天",i);
}
int main()
{
Data();
}

标签:int,28,31,30,y%,++,日期,模拟
来源: https://www.cnblogs.com/cowmilk/p/16119915.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有