您的位置:首页 > 其它

第17周项目4-两人生日相差几天

2014-12-20 11:01 190 查看
问题及代码:

/* 
*Copyright (c)2014,烟台大学计算机与控制工程学院 
*All rights reserved. 
*文件名称:days.cpp 
*作    者:单昕昕 
*完成日期:2014年12月20日 
*版 本 号: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);
}




运行结果:













知识点总结:

求两人生日相差多少天。用到了结构体。



学习心得:

主要是分情况进行比较,找到最小的作为一个基数,加上多的那几年,还要利用求当年第几天的程序。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: