计算某日之后,这年所剩余的天数

来源:互联网 发布:js 数组 map方法 编辑:程序博客网 时间:2024/06/06 18:03
#include<iostream>
#include<cstring>
#include"test1.h"

#include"stdio.h"

using std::cout;
using std::cin;
using std::endl;

#define TRUE    1
#define FALSE   0
#define BIGMONTHLENG 7

int bigMonth[BIGMONTHLENG] =
{
    1,
    3,
    5,
    7,
    8,
    10,
    12
};


bool bLeapYear = FALSE;


int countDay(int month, int day);
bool findBigMonth(int month);


int main()  
{  


   int year,month,day;
   int totall = 0;


   year = 0;
   month = 0;
   day = 0;
   
   cout<<" please input year, month, day\n";
   cin >> year;
   
   if(year <1000 || year > 9999)
   {
        cout<<" year is invalid, please input again.\n"; 
        cin >> year;  
   }
   cin >> month;

   if(month <0 || month > 12)
   {
        cout<<" month is invalid, please input again.\n"; 
        cin >> month;  
   }
   cin >> day;
   
   if(day < 1 || day > 31)
   {
        cout<<" day is invalid, please input again.\n"; 
        cin >> day;  
   }

   if(year % 100 == 0)
   {
        if(year % 400 == 0)
            bLeapYear = TRUE;
   }
   else
   {
        if(year % 4 == 0)
            bLeapYear = TRUE;
   }


   totall = countDay(month, day);


   using namespace std;
   
   printf( "year: %d, month: %d, day: %d" , year , month , day); 
   printf("\n Left   %d day int this year.\n", totall);
   
   return 0;
}


int countDay(int month, int day)
{
    int totall = 0;
    if(month > 12 || month < 0 || day >31 || day < 0 || (month == 2 && day > 29))
    {
        cout<< "\n\n";
        cout<< "parameter is error!!\n";
        cout<< "\n\n";
    }


    int tmpMonth = month;
    if(TRUE == findBigMonth(tmpMonth))
    {
        totall = 31 - day;
    }
    else
    {
        if(tmpMonth == 2 && bLeapYear == TRUE)
            totall = 29 - day;
        else if(tmpMonth == 2)
            totall = 28 - day;
        else
            totall = 30 - day;
    }

    tmpMonth++;
    while(tmpMonth < 13)
    {
        if(TRUE == findBigMonth(tmpMonth))
        {
            totall += 31;
        }
        else
        {
            if(tmpMonth == 2 && bLeapYear == TRUE)
                totall += 29;
            else if(tmpMonth == 2)
                totall += 28;
            else
                totall += 30;
        }
        
        tmpMonth++;
    }


    return totall;
    
}


bool findBigMonth(int month)
{
    bool tmp = FALSE;
    for(int i = 0; i< BIGMONTHLENG; i++)
    {
        if(month == bigMonth[i])
        {
            tmp = TRUE;
            break;
        }
    }


    return tmp;
}

阅读全文
0 0
原创粉丝点击