输入年月日,推断是该年的第几天,还能够进一步推断从1年開始的第几天

//输入年月日,推断是该年的第几天,还能够进一步推断从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;


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值