//输入年月日,判断是该年的第几天,还可以进一步判断从1年开始的第几天
#include<iostream>
using namespace std;
int main()
{
int Day(int x,int y,int r);
int Calculate_1(int x,int y,int r);
int Calculate_2(int n);
int n,y,r;/*****************************************************年,月,日,很明显**/
int x;/*********************************************************判断闰年的标志,x=1是闰年,x=0不是闰年**/
char a;/********************************************************用户输入,是否进一步判断**/
cout<<"请输入"<<endl<<"年,月,日:";
cin>>n>>y>>r;
while(n<=0||n>=10000)/******************************************判断年份是否正确**/
{
cout<<"超出我的计算范围,请输入1~9999之间的年份"<<‘\001‘
<<"请再次输入年份:";
cin>>n;
}
if((n%4==0&&n%100!=0)||n%400==0)/*******************************判断是否是闰年**/
x=1;
else x=0;
while(y>12||y<1)/***********************************************判断月份是否正确**/
{
cout<<"你输入这样的月份是在逗我吗???"<<endl
<<"再给你一次输入月份的机会:";
cin>>y;
}
while(Day(x,y,r)==0)
{
cout<<"输入的日子不太对吧?请重新输入日:"<<endl;
cin>>r;
}
cout<<"你输入的日期是:"<<n<<‘.‘<<y<<‘.‘<<r<<‘.‘<<endl;
cout<<"你输入的日期是该年的第"<<Calculate_1(x,y,r)<<"天."<<endl;/************计算_1*/
cout<<"是否为你计算出是从公元1年开始的第几天???"<<‘(‘<<"Y/N"<<‘)‘;
cin>>a;
int b=1;
while(a!=‘y‘&&a!=‘Y‘&&a!=‘n‘&&a!=‘N‘)
{
cout<<"嘿!怎么输入的?再次输入:";
cin>>a;
++b;
if(b==5)
{
cout<<"我问的是:是否为你计算出是从公元1年开始的第几天???"<<‘(‘<<"Y/N"<<‘)‘<<‘\a‘<<endl;
b=0;
}
}
if(a==‘Y‘||a==‘y‘)
cout<<Calculate_2(n)+Calculate_1(x,y,r)<<endl;/*****************************************************************计算_2*/
else cout<<"那好吧"<<‘\002‘<<endl;
return 0;
}
int Day(int x,int y,int r)/***************************************************************判断日子对不对**/
{
switch(y)
{
case 2:
{
if(x==1)
{
if(r>0&&r<=29)
return 1;
else return 0;
}
else
{
if(r>0&&r<29)
return 1;
else return 0;
}
}
case 4:case 6:case 9:case 11:
{
if(r>0&&r<31)
return 1;
else return 0;
}
default:
{
if(r>0&&r<=31)
return 1;
else return 0;
}
}
}
int Calculate_1(int x,int y,int r)
{
int a,b;
if(x==1)
a=29;
else a=28;
switch(y)
{
case 1:{b=r;return b;}
case 2:{b=31+r;return b;}
case 3:{b=31+a+r;return b;}
case 4:{b=31+a+31+r;return b;}
case 5:{b=31+a+31+30+r;return b;}
case 6:{b=31+a+31+30+31+r;return b;}
case 7:{b=31+a+31+30+31+30+r;return b;}
case 8:{b=31+a+31+30+31+30+31+r;return b;}
case 9:{b=31+a+31+30+31+30+31+31+r;return b;}
case 10:{b=31+a+31+30+31+30+31+31+30+r;return b;}
case 11:{b=31+a+31+30+31+30+31+31+30+31+r;return b;}
case 12:{b=31+a+31+30+31+30+31+31+30+31+30+r;return b;}
}
}
int Calculate_2(int n)
{
int a=0;
for(int i=1;i<=n;++i)
{
if((i%4==0&&i%100!=0)||i%400==0)
++a;
}
return (n-1)*365+a;
}
输入年月日,判断是该年的第几天,还可以进一步判断从1年开始的第几天