问题及代码:
/*
*Copyright(c)2014,烟台大学计算机学院
*Allrights reserved.
*文件名称:MADE84.cpp
*作 者:孙化龙
*完成日期:2014年12月22日
*版 本 号:v1.0
*
*问题描述:计算两人生日相差多少天
*输入描述:两人生日
*输出描述:两人生日相差多少天
*/
#include <iostream>
using namespace std;
struct Birthday
{
int year;
int month;
int day;
};
int days(Birthday date);
int figure(int y1,int d1,int y2,int d2);
int main()
{
Birthday bir1,bir2;
cout<<"input birthday 1:";
cin>>bir1.year>>bir1.month>>bir1.day;
cout<<"input birthday 2:";
cin>>bir2.year>>bir2.month>>bir2.day;
int day1,day2,t;
day1=days(bir1);//计算该日为当年第几天
day2=days(bir2);
if(bir1.year>bir2.year)//分3种情况计算两人生日相差几天
t=figure(bir1.year,day1,bir2.year,day2);
else if(bir1.year<bir2.year)
t=figure(bir2.year,day2,bir1.year,day1);
else
{
if(day1>day2)
t=day1-day2;
else
t=day2-day1;
}
cout<<"两人生日相差"<<t<<"天。";
return 0;
}
int days(Birthday date)
{
int days=0,i;
//计算days
for(i=1;i<date.month;i++)
switch(i)
{
case 2:days+=(((date.year%4==0&&date.year%100!=0)||date.year%400==0)?29:28);break;
case 4:
case 6:
case 9:
case 11:days+=30;break;
default:days+=31;break;
}
days+=date.day;
return days;
}
int figure(int y1,int d1,int y2,int d2)
{
int days=0;
for(;y2<y1;y2++)
{
days+=365;
if((y2%4==0&&y2%100!=0)||y2%400==0)
days+=1;
}
days=days+d1-d2;
return days;
}
运行结果: