定义一个结构体变量(包括年、月、日),输入两个人的生日,求出他们相差多少天。
/*
* Copyright (c) 2014,烟台大学计算机学院
* All right reserved.
* 作者:邵帅
* 文件:demo.cpp
* 完成时间:2014年12月17日
* 版本号:v1.0
*/
#include <iostream>
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<<"他们相差"<<days<<"天。";
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