|
|
本帖最后由 majia775 于 2015-2-13 10:26 编辑
//这个程序好久以前就写了,不过没写出来,今天给她搞定了~~偶也~
//不过有个BUG,就是如果输入错误的日期,会提示错误,然后输入一个正确的日期后,便会把刚才输入的错误日期给计算了,等于这个错误提示形同虚设,想了好久,不知道怎么解决.
//另外又goto了一把,暂时还想不到不用goto完美的解决办法
#include<iostream>
using namespace std;
int fun(int year,int month,int day); //计算天数函数
struct YEAR
{
int year;
int month;
int day;
}N;
int main()
{
cout<<"输入年月日,程序计算该日在本年中是第几天.(已考虑闰年问题)";
cout<<"格式:2004 5 28\n";
LOOP:cout<<"输入一个年月日:";
cin>>N.year>>N.month>>N.day;
cout<<N.year<<"年"<<N.month<<"月"<<N.day<<"日,是今年第 "<<fun(N.year,N.month,N.day)<<" 天.\n";
cout<<"继续查询请按Y,退出请按任意键!\n";
if(cin.get()=='Y' || cin.get()=='y')
goto LOOP;
return 0;
}
int fun(int year,int month,int day) //计算天数函数
{
int i,sum=0;
int years[12]={31,28,31,30,31,30,31,31,30,31,30,31}; //一年所有月份
int yearr[12]={31,29,31,30,31,30,31,31,30,31,30,31}; //一年所有月份(闰年情况)
while((year<1900 || year>2100) || (month<1 || month>12) || (day<1 ||day>31)) //判断年月日输入超过查询范围提示
{
cout<<"错误,查询范围公元1900年-公元2100年,请重新输入年月日:";
cin>>year>>month>>day;
}
if(year%4==0 && year%100!=0 || year%400==0) //如果是闰年...
{
for(i=0;i<(month-1);i++) //month-1才能显示正常:比如2004年366天,不然显示396天
sum=sum+yearr;
sum=sum+day; //sum等于该日在今天第多少天
return sum;
}
else //如果不是闰年
{
for(i=0;i<(month-1);i++)
sum=sum+years;
sum=sum+day;
return sum;
}
}
|
|