生日(扩展)

/*
*Corpyright (c)2013,烟台大学计算机学院
*All right reseved.
*作者:z张梦佳
*完成日期:2014年2月28日
*版本号:v1.0
*输入描述:
*问题描述:依次输入您的年月日。输出相差几天!
*程序输出:
*问题分析:
*算法设计:
*/
#include <iostream>

using namespace std;

int num(int,int,int);
int num2(int,int,int,int,int,int);

struct Date
{
    int year;
    int month;
    int day;
};

int main()
{
    Date date,date1;
    cout<<"input your year,month,day!"<<endl;
    cin>>date.year>>date.month>>date.day;
    cout<<"input his/her year,month,day!"<<endl;
    cin>>date1.year>>date1.month>>date1.day;
    int days=0,h;
    for(h=num(date.year,date1.year,0);h<num(date.year,date1.year,1);h++)
    {
        if(date.year%4==0&&date.year%100!=0||date.year%400==0)
            days=days+366;
        else
            days=days+365;
    }
    h=num2(date.year,date.month,date.day,date1.year,date1.month,date1.day);
    cout<<"相差"<<days+h<<"天!"<<endl;
    return 0;
}
int num(int a,int b,int c)
{
    int num1,num2;
    if(a>b)
    {
        num1=b;
        num2=a;
    }
    else
    {
        num1=a;
        num2=b;
    }
    if(c==0)
        return num1;
    else
        return num2;
}
int num2(int a,int b,int c,int d,int e,int f)
{
    int ap1[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int ap[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int days=0,day2=0;
    if(a%4==0&&a%100!=0||a%400==0)
        ap1[2]=29;
    for(int i=1;i<b;i++)
        days=days+ap[i];
    if(d%4==0&&d%100!=0||d%400==0)
        ap[2]=29;
    for(int i=1;i<e;i++)
        day2=day2+ap[i];
    if(a>d)
        return days-day2;
    else
        return day2-days;
}






感悟

调了好久!感觉把问题搞麻烦了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值