输入一个日期,求这个日期是该年中的第几天。
输入三个整数,分别代表年、月、日。(假设数据都是合理的)
这个日期是该年中的第几天。
思维很好的解法
#include<iostream> using namespace std; int main(){ unsigned A,B,C; /*最笨的方法是对于b=1,2,3,,,依次讨论
加几的问题,但是这个就太妙了吧
果然需要数学思维*/ cin>>A>>B>>C; //天!!!!这种做法好神奇!!! if(A%400==0||(A%4)==0&&(A%100)!=0) { if(B<3) cout<<B/2*31+C<<endl; else cout<<(B/2-1)*30+B/2*31+29+C<<endl; } else{ if(B<3) cout<<B/2*31+C<<endl; else cout<<(B/2-1)*30+B/2*31+28+C<<endl; } return 0; }
使用数组
#include <iostream>
using namespace std;
int main()
{
int a,b,c,n=0;
int days,i;
cin>>a>>b>>c;
int month[12] ={31,28,31,30,31,30,31,30,31,30,31,30};
if(a%4==0&&a%100!=0||a%400==0)
month[1]=29;
for(i=0;i<b-1;i++)
n+=month[i];
days=n+c;
cout <<days<<endl;
return 0;
}
原文:https://www.cnblogs.com/yuanyuxinnihao/p/14197355.html