/*
* Copyright (c) 2013, 烟台大学计算机学院
* All rights reserved.
* 作 者:申玉迪
* 完成日期:2014 年 3 月 8 日
* 版 本 号:v1.0
*/
#include <iostream>
using namespace std;
struct Date
{
int year;
int month;
int day;
int hour;
int minute;
int second;
} date1,date2;
int day(int,int,int);
int time(int,int,int);
/*输入两个人的生日,看和1900年1月1日相差多少天,然后在相减*/
int main()
{
int d1=0,d2=0,s1=0,s2=0,s,t;/*d1,m1,y1代表第一个人的出生年月日,同理d2,m2,d2,
t表示相差天数,i和j分别作为循环的年和月*/
cout<<"第一个日期:";
cin>>date1.year>>date1.month>>date1.day>>date1.hour>>date1.minute>>date1.second;
d1=day(date1.year,date1.month,date1.day);
s1=time(date1.hour,date1.minute,date1.second);
cout<<"第二个日期:";
cin>>date2.year>>date2.month>>date2.day>>date2.hour>>date2.minute>>date2.second;
d2=day(date2.year,date2.month,date2.day);
s2=time(date2.hour,date2.minute,date2.second);
t=d2-d1;
if(t<=0)
{
t=-t;//若出现负数,则将其化为正数
s=t*86400+s1-s2;
}
else
{
s=t*86400+s2-s1;
}
cout<<"相差"<<t<<"天。"<<endl;
cout<<"相差"<<s<<"秒。"<<endl;
}
int day(int year,int month,int day)
{
int d,y=0,i,j,m=0;
for(i=1900; i<year; i++)//算出这年之前到1900年共多少天
{
y+=365;
if(i%400==0||(i%4==0&&i%100!=0))
{
y++;
}
}
for(j=0; j<month; ++j)//算出本年到生日共多少天
{
int x;
if(j==2)
{
if(year%400==0||(year%4==0&&year%100!=0))
{
x=29;
}
else
{
x=28;
}
}
else if(j==1||j==3||j==5||j==7||j==8||j==10||j==12)
x=31;
else if(j==4||j==6||j==9||j==11)
x=30;
else if(j==0)
x=day;
m+=x;
}
d=y+m;//生日到1900年1月1日共多少天
return d;
}
int time(int hour,int minute,int second)
{
int s;
s=hour*60*60+minute*60+second;
return s;
}
写这个时一开始出现些小意外,函数不知道该怎么声明,后来问了老师才明白应该在哪个地方改一改。其实这个题和第一周的项目三的选做差不多,就是多了一个秒数的问题,那个题我没用函数,这个题就用函数试了试,一开始还真是弄不出来,不实践永远不知道自己到底会不会。