天天看點

YTU 2715: 函數---判斷某年某月某日是這一年中的第幾天

2715: 函數---判斷某年某月某日是這一年中的第幾天

時間限制: 1 Sec  

記憶體限制: 128 MB

送出: 380  

解決: 155

題目描述

在主程式(main)中輸入某年某月某日,例如2012 9 18(年月日之間用空格隔開), 調用函數dayth來得到某年某月某日是這一年中是第幾天。     

注意 在利用dayth函數前要調用isValid_date函數來判斷日期是合法的。

dayth函數和isValid_date函數聲明如下:

int isValid_date(int year,int month,int day); //判斷日期(年月日)是否合法的函數聲明,如果日期合法傳回1,如果不合法傳回0

int dayth(int year,int month,int day); //擷取日期(年月日)是本年中的第幾天的函數聲明

在以下程式的基礎上,添加isValid_date函數和dayth函數的定義,使程式能夠正确執行。

送出時,隻需要送出isValid_date函數和dayth函數的定義代碼即可。

#include <iostream>
 using namespace std; int isValid_date(int year,int month,int day); //判斷日期(年月日)是否合法的函數聲明,如果日期合法傳回1,如果不合法傳回0
 int dayth(int year,int month,int day); //擷取日期(年月日)是本年中的第幾天的函數聲明
 int main()
 {
   int y,m,d; //定義3個變量分别來存放輸入的年、月、日
   cin>>y>>m>>d;
   if(isValid_date(y,m,d) ==0)
      cout<<"not valid"<<endl;
   else
      cout<<dayth(y,m,d)<<endl;
   return 0;
 }      

輸入

一個日期(年 月 日)

輸出

如果該日期和法則輸出該日期是本年中的第幾天,如果該日期不合法輸出提示資訊

例如 輸入2002 3 1 輸出 60                    輸入2008 2 30 輸出not valid

樣例輸入

2002 3 1      

樣例輸出

60      

你  離  開  了  ,  我  的  世  界  裡  隻  剩  下  雨  。  。  。

#include <iostream>
using namespace std;
int isValid_date(int year,int month,int day); //判斷日期(年月日)是否合法的函數聲明,如果日期合法傳回1,如果不合法傳回0
int dayth(int year,int month,int day); //擷取日期(年月日)是本年中的第幾天的函數聲明
int main()
{
    int y,m,d; //定義3個變量分别來存放輸入的年、月、日
    cin>>y>>m>>d;
    if(isValid_date(y,m,d)==0)
        cout<<"not valid"<<endl;
    else
        cout<<dayth(y,m,d)<<endl;
    return 0;
}
int a[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
int isValid_date(int year,int month,int day)
{
    if((year%4==0&&year%100!=0)||year%400==0)a[1]+=1;
    if(month>12||month<1||day>a[month-1]||day<1)return 0;
    else return 1;
}
int dayth(int year,int month,int day)
{
    int b,s=0;
    if((year%4==0&&year%100!=0)||year%400==0)a[1]=29;
    for(b=0; b<month-1; b++)
        s+=a[b];
    s+=day;
    return s;
}