第十八周项目四-1 定义结构体算两人生日相差多少天

问题及代码

/*  
*ALL rights reserved.      
*文件名称:shibazhouxiangmu4(2)      
*作者:李长鸿      
*完成时间:2014.12.23     
*问题描述:生日相差多少天     
*/ 
#include <iostream>
using namespace std;
int days(int,int,int);
int change(int,int,int,int);
bool R(int);
void W(int,int,int);
struct Date
{
    int year;
    int mouth;
    int day;
} date1 ,date2,date;
int d[13]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int main()
{
    cout<<"请依次输入两个人的生日:"<<endl;
    cin>>date1.year>>date1.mouth>>date1.day;
    W(date1.year,date1.mouth,date1.day);
    cin>>date2.year>>date2.mouth>>date2.day;
    W(date2.year,date2.mouth,date2.day);
    int a,b;
    if(date1.year>date2.year){date=date2;date2=date1;date1=date;}
    a=days(date1.year,date1.mouth,date1.day);
    b=days(date2.year,date2.mouth,date2.day);
    cout<<"两人生日相差:"<<change(date1.year,date2.year,a,b)<<"天"<<endl;
   return 0;
}

int days(int a,int b,int c)
{
    int days=0,i;
    for(i=1; i<b; i++)
        days=days+d[i];
    days=days+c;
    if(R(a)&&b>2)
        days=days+1;
    return days;
}

int change(int y1,int y2,int a,int b)
{
    int c=0;
    if(y1==y2)
    {
        c=b-a;
        if(c<0)
            c=-c;
    }
    else
    {
        for(y1; y1<y2;y1++)
        {
            c=c+365;
            if(R(y1))
                c+=1;
        }
        c=c+b-a;
    }
    return c;
}

bool R(int x)
{
    if((x%4==0&&x%100!=0)||(x%400==0))
        return 1;
    else return 0;
}

void W(int y,int m,int t)
{
       while(m>12||m<0||t>d[m]||t<0||(m==2&&t>29))
    {
        cout<<"输入有误,请再次输入正确的日期:"<<endl;
        cin>>y>>m>>t;
    }
}

      

总结:感觉好麻烦,又要考虑闰年,输入错误之类的——平年的二月29的情况还未除去——头都大了!好几次写结构体变量的时候都用错了。

            思路一清晰的话,还算比较好,可就是容易晕。

            对结构体的用法掌握的更多了。比较熟练了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值