题意:
根据输入的日期,计算是这一年的第几天。
保证年份为4位数且日期合法。
方法一:
数组模拟
思路:用数组存储每月的天数。
首先,遍历月份,累加上每月的天数;再加上日数;最后,判断是否是闰年并且月份大于2,如果是,则加一。
![]()
#include <bits/stdc++.h>
using namespace std;
int month[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
int y,m,d;
cin >> y >> m >> d;//输入年月日
int sum=0;
for(int i=1;i<m;i++){//加每月的天数
sum+=month[i-1];
}
sum+=d;//加日数
if(((y%4==0&&y%100!=0)||y%400==0)&&m>2)//闰年并且月份大于2,则加一
sum++;
cout << sum << endl;
return 0;
}
时间复杂度:
空间复杂度:![]()
方法二:
直接模拟
思路:思路跟方法一 一致。
不过不需要数组存储月份的天数,直接通过 多IF语句 实现累加效果。
#include <bits/stdc++.h>
using namespace std;
int main(){
int y,m,d;
cin >> y >> m >> d;//输入年月日
int sum=0;
//加每月的天数
if(m>1)
sum+=31;
if(m>2)
sum+=28;
if(m>3)
sum+=31;
if(m>4)
sum+=30;
if(m>5)
sum+=31;
if(m>6)
sum+=30;
if(m>7)
sum+=31;
if(m>8)
sum+=31;
if(m>9)
sum+=30;
if(m>10)
sum+=31;
if(m>11)
sum+=30;
sum+=d;//加日数
if(((y%4==0&&y%100!=0)||y%400==0)&&m>2)//闰年并且月份大于2,则加一
sum++;
cout << sum << endl;
return 0;
}
时间复杂度:
空间复杂度:![]()



京公网安备 11010502036488号