日期计算 201509-2
程序员文章站
2022-03-20 22:51:51
问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有29天。满足下面条件之一的是闰年: 1) 年份是4的整数倍,而且不是100的整数倍; 2) 年份是400的整数倍。输入格式 输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。 输入的第二行包含一个整数d,d在1至365之间。输出格式 输出两行,每行一个整数,分别表示答案的月份和日期。样例输入201580样例输出321样例输入2000...
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天。满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍。
输入格式
输入的第一行包含一个整数y,表示年份,年份在1900到2015之间(包含1900和2015)。
输入的第二行包含一个整数d,d在1至365之间。
输出格式
输出两行,每行一个整数,分别表示答案的月份和日期。
样例输入
2015
80
样例输出
3
21
样例输入
2000
40
样例输出
2
9
蠢办法只得了70分 ,后来想想原因 如果输入d=365那么月份就是13了,不满足题意,然后随意将30改成31,变成60分,改成29,变成50分。。。看来这平台对于这种可数的结果是按照正确的个数给分的。
代码段:
```cpp
```cpp
#include <iostream>
using namespace std;
int main()
{
int run[12]= {31,29,31,30,31,30,31,31,30,31,30,31};
int ping[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int y,d,yue;
cin>>y;
cin>>d;
int a[12];
for(int i=0; i<12; i++)
{
if((y/4)==0&&(y/100)!=0&&(y/400==0))
{
a[i]=run[i];
}
else
{
a[i]=ping[i];
}
}
yue=d/30+1;
cout<<yue<<endl;
switch(yue)
{
case 1:
cout<<d;
break;
case 2:
cout<<(d-a[0]);
break;
case 3:
cout<<(d-(a[0]+a[1]));
break;
case 4:
cout<<(d-(a[0]+a[1]+a[2]));
break;
case 5:
cout<<d-(a[0]+a[1]+a[2]+a[3]);
break;
case 6:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]);
break;
case 7:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]);
break;
case 8:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]);
break;
case 9:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]);
break;
case 10:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]);
break;
case 11:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]);
break;
case 12:
cout<<d-(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10]);
break;
default:
break;
}
}
本文地址:https://blog.csdn.net/weixin_43373277/article/details/110672788