程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> NYOJ-20歲生日

NYOJ-20歲生日

編輯:C++入門知識

NYOJ-20歲生日


20歲生日

時間限制:1000 ms | 內存限制:65535 KB 難度:1
描述
路過這的20歲生日就要到了,他當然很開心,可是他突然想到一個問題,是不是每個人從出生開始,到達20歲生日時所經過的天數都是一樣的呢?似乎並不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達20歲生日所經過的總天數,讓他好來比較一下。
輸入
一個數T,後面T行每行有一個日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
輸出
T行,每行一個數,表示此人從出生到20歲生日所經過的天數。如果這個人沒有20歲生日,就輸出-1。
樣例輸入
1
1988-03-07
樣例輸出
7305

代碼:

#include
int f[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool leap_year(int n)
{
	if(n%4==0&&n%100!=0||n%4==0&&n%400==0)
	return true;
	else
	return false;
}
int DAY(int year,int month,int day)
{
	int i,sum=0;
	for(i=1;i2&&leap_year(year))
	return sum+1;
	else
	return sum;
}
int main()
{
	int T,year,month,day,i,sum;
	scanf("%d",&T);
	while(T--)
	{
	    scanf("%d-%d-%d",&year,&month,&day);
	    if(month==2&&day==29&&!leap_year(year+20))
	    {
	    	printf("-1\n");
	    	continue;
	    }
	    sum=0;
	    for(i=1;i<=19;++i)
	    {
	      if(leap_year(year+i))
	      sum+=366;
	      else
	      sum+=365;
	    }
		if(leap_year(year))
		sum=sum+(366-DAY(year,month,day));
		else
		sum=sum+(365-DAY(year,month,day));
	    sum+=DAY(year+20,month,day);
	    printf("%d\n",sum);
	}
	return 0;
}

解題報告:

閏年並不都是每四年一潤:【 四年一潤,百年不潤,四百年再潤】

例:1980是閏年,1900並不是閏年

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved