定义一个结构体变量(包括年、月、日),输入两个人的生日,求出他们相差多少天。
/** Copyright (c) 2014,烟台大学计算机学院* All right reserved.* 作者:邵帅* 文件:demo.cpp* 完成时间:2014年12月17日* 版本号:v1.0*/#include运行结果:using namespace std;struct Date{ int year; int month; int day;};bool year(int y);int main(){ int day(int y, int m, int d); Date date; int days_1,days_2,days; int n,allday1,allday2; cout<<"请输入第一个人的 year,month,day:"; cin>>date.year>>date.month>>date.day; allday1=day(date.year, date.month, date.day); cout<<"请输入第二个人的 year,month,day:"; cin>>date.year>>date.month>>date.day; allday2=day(date.year, date.month, date.day); days=allday1-allday2; if (days<0) days=-days; cout<<"他们相差"< <<"天。"; return 0;}int day(int y, int m, int d){ int sum; int i=1,alldays=0; while (i<=y) { if (year(i)) alldays+=366; else alldays+=365; i++; } switch (m) { case 1: sum = d; break; case 2: sum = d + 31; break; case 3: sum = d + 59; break; case 4: sum = d + 90; break; case 5: sum = d + 120; break; case 6: sum = d + 151; break; case 7: sum = d + 181; break; case 8: sum = d + 212; break; case 9: sum = d + 243; break; case 10: sum = d + 273; break; case 11: sum = d + 304; break; case 12: sum = d + 334; break; } if (year(y)) { if (m>2) sum--; } alldays+=sum; return alldays;}bool year(int y){ if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0 && y % 100 == 0)) return true; else return false;}
第一次提交时的代码有点问题,只能计算同年或者相差一年的时间差,一开始想与格林威治标准时间:1970年1月1日做对比,还是失败。后来想出来一个方法:算出他们与1年1月1日的天数再相减,虽然效率很低,但是实在是想不到更好的方法,等待解决。
@ Mayuko