项目 5 玩转日期
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:score.cpp * 作 者: 徐本锡 * 完成日期: 2013 年 03 月 09 日* 版本号: v1.0 * 输入描述:已经在程序中初始化* 问题描述:* 输出: */#include<iostream>#include<fstream> using namespace std;bool y(struct date a);//声明bool T(struct date a);//声明int year_day(struct date a);//声明int day_second(struct date a);//声明int year_second(struct date a);//声明struct date{int year;int month;int day;int hour;int minute;int second;};int main(){ int a1,a2;date a;do{cout<<"****请输入 年 月 日 时 分 秒****"<<endl;cout<<" 年";cout<<'\r';cin>>a.year;cout<<endl;cout<<" 月";cout<<'\r';cin>>a.month;cout<<endl;cout<<" 日";cout<<'\r';cin>>a.day;cout<<endl;cout<<" 时";cout<<'\r';cin>>a.hour;cout<<endl;cout<<" 分";cout<<'\r';cin>>a.minute;cout<<endl;cout<<" 秒";cout<<'\r';cin>>a.second;cout<<endl;if(T(a)==false){cout<<"日期输入错误!"<<endl;cout<<"重新输入请按1 退出请按其他数字";cin>>a2;if(a2==1)continue;elsebreak;}else{cout<<" 该日为本年第:"<<year_day(a)<<"天。"<<endl<<endl;cout<<" 该秒为本日第:"<<day_second(a)<<"秒。"<<endl<<endl;cout<<" 该秒为本年第:"<<year_second(a)<<"秒。"<<endl<<endl;cout<<"重新输入请按1 退出请按其他数字";cin>>a1;if(a1==1)continue;elsebreak;}}while(1);return 0;}bool y(struct date a)//判断是否为闰年;{bool Y=false;if(a.year/400==0||(a.year/4&&a.year/100==0))Y=true;return Y;}bool T(struct date a)//判断日期输入是否正确{bool Y=true;switch(a.month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:if(a.day>31||a.day<1)Y=false;break;case 4:case 6:case 9:case 11:if(a.day>30||a.day<1)Y=false;break;case 2:if(y(a)){if(a.day>29||a.day<1)Y=false;break;}elseif(a.day>28||a.day<1)Y=false;break;}if(a.month>12||a.month<1)Y=false;if(a.hour>24||a.hour<0)Y=false;if(a.minute>60||a.minute<0)Y=false;if(a.second>60||a.second<0)Y=false;return Y;}int year_day(struct date a)//本年的第几天 自定义函数{int d;switch(a.month){case 1:d=a.day;break;case 2:d=31+a.day;break;case 3:d=59+a.day;break;case 4:d=90+a.day;break;case 5:d=120+a.day;break;case 6:d=151+a.day;break;case 7:d=181+a.day;break;case 8:d=212+a.day;break;case 9:d=243+a.day;break;case 10:d=273+a.day;break;case 11:d=304+a.day;break;case 12:d=334+a.day;break;}if(y(a)&&(a.month>=3&&a.month<=12))d=d+1;return d;}int day_second(struct date a)//当天第几秒{int s;s=((a.hour*60+a.minute)*60+a.second);return s;}int year_second(struct date a)//当年第几秒{int s;s=(year_day(a)-1)*86400+day_second(a);return s;}