- C++
信奥【0420】上午班-日期问题研究
- 2024-4-20 10:31:58 @
要研究的问题是:两个日期(y1-m1-d1和y2-m2-d2)之间的差值
> 1、总分解问题:
> 1)、求y1-m1-d1和y1-1-1的差值sum1
> 2)、求y2-m2-d2和y1-1-1的差值sum2
> 3)、sum2-sum1就是我们要求的结果
> 2、求差值分解
> 1)、完整年份的天数(区分闰年和平年)
> 2)、完整月份的天数(区分大月、小月、闰年2月、非闰年2月)
> 3)、零散天数
> 3、闰年的判断:
> 1)、普通闰年:year%4==0&&year%100!=0
> 2)、世纪闰年:year%400==0
> 4、判断日期是周几
> 1)、确认锚点(知道某一天y-m-d是周几)
> 2)、计算要判断日期和锚点差值天数
> 3)、差值除以7的余数进行分支判断进行推导(周期性)
#include<bits/stdc++.h>
using namespace std;
int main(){
int y1,m1,d1,y2,m2,d2;
char ch;
cin>>y1>>ch>>m1>>ch>>d1;
cin>>y2>>ch>>m2>>ch>>d2;
int sum1=0,sum2=0;
// 完整月份
for(int i=1;i<m1;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum1+=31;
}else if(i==2)
{
if(y1%4==0&&y1%100!=0||y1%400==0)
{
sum1+=29;
}else{
sum1+=28;
}
}else{
sum1+=30;
}
}
sum1+=d1;
// 完整的年份
for(int i=y1;i<y2;i++){
if(i%4==0&&i%100!=0||i%400==0)sum2+=366;
else sum2+=365;
}
// 完整月份
for(int i=1;i<m2;i++){
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
{
sum2+=31;
}else if(i==2)
{
if(y2%4==0&&y2%100!=0||y2%400==0)
{
sum2+=29;
}else{
sum2+=28;
}
}else{
sum2+=30;
}
}
sum2+=d2;
cout<<sum2-sum1;
return 0;
}
作业:
1、生日是周几
2、最老入职员工的天数
3、智能日历
6 条评论
-
xinao023 LV 7 @ 2024-4-27 9:38:15
-
2024-4-27 9:30:12@
#include<bits/stdc++.h> #include<ctime> using namespace std; const int N = 1e6+10; int main(){ time_t now; tm *p; time(&now); p = localtime(&now); int y_1,m_1,d_1; y_1 = p->tm_year+1900; m_1 = p->tm_mon +1; d_1 = p->tm_mday; printf("今天是%d年%d月%d日\n",y_1,m_1,d_1); switch (p->tm_wday) { case 1:cout<<"周一"<<endl;break; case 2:cout<<"周二"<<endl;break; case 3:cout<<"周三"<<endl;break; case 4:cout<<"周四"<<endl;break; case 5:cout<<"周五"<<endl;break; case 6:cout<<"周六"<<endl;break; default:cout<<"周日"<<endl;break; } int c; while(1){ printf("***********************************************************\n\n"); printf("请选择:\n"); printf("1、倒计时系统\n"); printf("2、日期查询系统\n"); printf("***********************************************************\n"); cin>>c; if(c==1){ printf("请输入倒计时截止日期(格式为:年-月-日):\n"); }else if(c==2){ } } return 0; }
-
2024-4-23 22:10:07@
无
-
2024-4-21 12:17:58@
#include<bits/stdc++.h> using namespace std; int main(){ int n,y=1; for(int i=1;i<10;i++;){ n=(y+1)*2; n=y; } cout<<y<<endl; system("pause"); return 0; }
-
2024-4-20 10:53:52@
-
2024-4-20 10:38:17@
- 1