您的位置:首页 > 其它

第十七周 项目四(2)--两人生日相差几天

2014-12-22 11:27 375 查看
问题及代码:

/*
*Copyright (c) 2014,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:吴胜男
*完成日期:2014年12月22日
*版本号:v1.0
*
*问题描述:定义一个结构体变量(包括年、月、日),要求输入年、月、日,计算输出该日是该年的第几天。
*输入描述:输入年月日
*程序输出:输出该年的第几天
*/
#include <iostream>
using namespace std;
struct Date
{
    int year;
    int month;
    int day;
};
int ldays(Date);
int main()
{
    Date date1,date2;
    int days1,days2,days,i;
    cout<<"请输入第一个人的生日:"<<endl;
    cin>>date1.year>>date1.month>>date1.day;
    days1=ldays(date1);
    cout<<"请输入第二个人的生日:"<<endl;
    cin>>date2.year>>date2.month>>date2.day;
    days2=ldays(date2);
    if(date1.year==date2.year)
    {
        if(days1>days2)
            days=days1-days2;
        else
            days=days2-days1;
    }
    else if(date1.year>date2.year)
    {
        if((date2.year%4==0&&date2.year%100!=0)||(date2.year%400==0))
            days=days1+(366-days2);
        else
            days=days1+(365-days2);
        for(i=date2.year+1; i<date1.year; i++)
        {
            if((i%4==0&&i%100!=0)||(i%400==0))
                days+=366;
            else
                days+=365;
        }
    }
    else
    {
        if((date1.year%4==0&&date1.year%100!=0)||(date1.year%400==0))
            days=days2+(366-days1);
        else
            days=days2+(365-days1);
        for(i=date1.year+1; i<date2.year; i++)
        {
            if((i%4==0&&i%100!=0)||(i%400==0))
                days+=366;
            else
                days+=365;
        }
    }
    cout<<"两人生日相差"<<days<<"天"<<endl;

    return 0;
}
int ldays(Date date)
{
    int days;
    //计算days
    int sum=date.day;
    int i;
    for (i=1; i<date.month; i++)
    {
        if(i==1||i==3||i==5||i==7||i==8||i==10||i==12)
            sum=sum+31;
        if(i==4||i==6||i==9||i==11)
            sum=sum+30;
        if(i==2)
        {
            if((date.year%4==0&&date.year%100!=0)||date.year%400==0)
                sum=sum+29;
            else
                sum=sum+28;
        }
    }
    days=sum;
    return days;
}

运行结果:


知识点总结:这个程序关键在于,如果两人的生日年分相差很多要考虑到中间年份是不是闰年,并且中间相差年份要用到循环,这样就比较简单。

学习心得:这个程序自己也写了,但是写的不对就参考的别人的,因为已经在这个程序上花费了很长时间,不想在卡在这儿了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: