您的位置:首页 > 其它

第十七周项目4-日期结构体(2)

2014-12-22 13:02 246 查看
/*
*Copyright (c)2014,烟台大学计算机与控制工程学院
*All rights reserved.
*文件名称:days.cpp
*作    者:梁璨
*完成日期:2014年12月22日
*版 本 号:v1.0
*
*问题描述:求两人生日相差几天。
*程序输入:两人生日。
*程序输出:两人生日相差几天。
*/
#include <iostream>
#include <cmath>
using namespace std;
int day(int y, int m, int d);
struct Date
{
int year;
int month;
int day;
};
int main()
{
Date date1,date2;
int sum1,sum2,s=0;
cout<<"请输入第一个人的生日:";
cin>>date1.year>>date1.month>>date1.day;
cout<<"请输入第二个人的生日:";
cin>>date2.year>>date2.month>>date2.day;
sum1=day(date1.year,date1.month,date1.day);  //先分别求是当年第几天
sum2=day(date2.year,date2.month,date2.day);
if(date1.year>date2.year)  //分两种情况进行计算
{
while(date1.year>=date2.year)
{
date1.year--;
if(((date1.year%4==0&&date1.year%100!=0)||date1.year%400==0))  //判断是否闰年
s+=366;
else
s+=365;
date1.year--;
}
sum1+=s;
sum1-=sum2;
cout<<"这两人的生日相差"<<sum1<<"天."<<endl;
}
else if(date1.year<date2.year)
{
while(date2.year>=date1.year)
{
date2.year--;
if(((date2.year%4==0&&date2.year%100!=0)||date2.year%400==0))
s+=366;
else
s+=365;
date2.year--;
}
sum2+=s;
sum2-=sum1;
cout<<"这两人的生日相差"<<sum2<<"天."<<endl;
}
else
cout<<"这两人的生日相差"<<fabs(sum1-sum2)<<"天."<<endl;  //直接求天数的绝对值
return 0;
}
int day(int y, int m, int d)  //求当年第几天
{
int sum=0,n;
for(n=1; n<m; ++n)
{
if ((y%4==0&&y%100!=0)||y%400==0)
{
if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
sum+=31;
else if (n==2)
sum+=29;
else
sum+=30;
}
else
{
if(n==1||n==3||n==5||n==7||n==8||n==10||n==12)
sum+=31;
else if (n==2)
sum+=28;
else
sum+=30;
}
}
sum+=d;
return (sum);
}
运行结果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: