日期練習

九度1070

題目描述:

輸入年、月、日,計算該天是本年的第幾天。

輸入:

包括三個整數年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

輸出:
輸入可能有多組測試數據,對於每一組測試數據,
輸出一個整數,代表Input中的年、月、日對應本年的第幾天。
樣例輸入:
1990 9 20
2000 5 1
樣例輸出:
263
122
#include<stdio.h>
#include<string.h>
#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0
int dayOfMonth[13][2]={
	0,0,
	31,31,
	28,29,
	31,31,
	30,30,
	31,31,
	30,30,
	31,31,
	31,31,
	30,30,
	31,31,
	30,30,
	31,31
};
//定義日期類
struct Date{
	int Year;
	int Month;
	int Day;
	void nextday(){
		Day++;
		if(Day>dayOfMonth[Month][ISYEAP(Year)])
		{
			Day=1;
			Month++;
			if(Month>12)
			{
				Month=1;
				Year++;
			}
		}
	}
};
//定義buf記錄日期數
int buf[3001][13][32];

int main(int argc, char* argv[])
{
	//初始化
	Date temp;
	int count=0;
	temp.Year=0,temp.Month=1,temp.Day=1;
	while(temp.Year!=3001){
		buf[temp.Year][temp.Month][temp.Day]=count;
		temp.nextday();
		count++;
	}
	//題目程序
	int y,m,d;
	while(scanf("%d %d %d",&y,&m,&d)!=EOF)
	{
		printf("%d\n",buf[y][m][d]-buf[y][1][1]+1);
	}
	return 0;
}

九度1186

題目描述:

給出年分m和一年中的第n天,算出第n天是幾月幾號。

輸入:

輸入包括兩個整數y(1<=y<=3000),n(1<=n<=366)。

輸出:

可能有多組測試數據,對於每組數據,
按 yyyy-mm-dd的格式將輸入中對應的日期打印出來。

樣例輸入:
2000 3
2000 31
2000 40
2000 60
2000 61
2001 60
樣例輸出:
2000-01-03
2000-01-31
2000-02-09
2000-02-29
2000-03-01
2001-03-01
#include<stdio.h>
#include<string.h>
#define ISYEAP(x) x%100!=0&&x%4==0||x%400==0?1:0
int dayOfMonth[13][2]={
	0,0,
	31,31,
	28,29,
	31,31,
	30,30,
	31,31,
	30,30,
	31,31,
	31,31,
	30,30,
	31,31,
	30,30,
	31,31
};
//定義日期類
struct Date{
	int Year;
	int Month;
	int Day;
	void nextday(){
		Day++;
		if(Day>dayOfMonth[Month][ISYEAP(Year)])
		{
			Day=1;
			Month++;
			if(Month>12)
			{
				Month=1;
				Year++;
			}
		}
	}
};
//定義buf記錄日期數
int buf[3001][13][32];

int main(int argc, char* argv[])
{
	//初始化
	Date temp;
	int count=0;
	temp.Year=0,temp.Month=1,temp.Day=1;
	while(temp.Year!=3001){
		buf[temp.Year][temp.Month][temp.Day]=count;
		temp.nextday();
		count++;
	}
	//題目程序
	int y,m,d;
	int days;
	while(scanf("%d %d",&y,&days)!=EOF)
	{
		for(int i=1;i<13;i++)
		{
			for(int j=1;j<32;j++)
			{
				if(days==(buf[y][i][j]-buf[y][1][1]+1))
				{
					m=i,d=j;
				}
			}
		}
		printf("%04d-%02d-%02d\n",y,m,d);  //輸出2000-03-04的方式%02d
	}
	return 0;
}


發佈了39 篇原創文章 · 獲贊 3 · 訪問量 5278
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章