首页 > 学院 > 开发设计 > 正文

【九度oj】1070题(修改自王道机试指南)

2019-11-11 05:28:17
字体:
来源:转载
供稿:网友
# include <stdio.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 Day;	int Month;	int Year;	void nextDay(){//这个函数是计算下一天的日期 		Day++;		if(Day>dayOfMonth[Month][ISYEAP(Year)]){			//若自增的日数超过了当月的最大日数			Day = 1;			Month++;//进入下一月 			if(Month>12){//月数大于12 				Month = 1;				Year++;//进入下一年 			} 		} 	} };int buf[3001][13][32];//创建一个三维数组int Abs(int x){//求绝对值的函数 	return x<0?-x:x;} int  main(){	Date tmp;	int cnt=0;//计数器计算天数	tmp.Day=1;	tmp.Month = 1;	tmp.Year = 0;//初始化日期为0年1月1日 	while(tmp.Year !=3001){//日期不超过5000年 		buf[tmp.Year][tmp.Month][tmp.Day] = cnt;						//将该日与0年1月1号天数差保存起来		tmp.nextDay();  //计算下一天日期		cnt++;//日期每向前走一个计数器自动+1 	} 		int d1, m1, y1;		while(scanf("%d%d%d", &y1, &m1, &d1)!=EOF){		PRintf("%d/n", Abs(buf[y1][m1][d1] -buf[y1][1][1]) + 1 );				//用预处理的数据计算两日期的差值,注意需对其求绝对值 	} 		return 0; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表