POJ日历问题

#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<algorithm>
using namespace std;

int type(int );
char week[7][10]= {"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
int year[2]= {365,366}; //year[0]表示非闰年的天数,year[1]表示闰年的天数。
int month[2][12]= {31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,31,30,31,31,30,31,30,31};
//month[0]表示非闰年里每个月的天数,month[1]表示闰年里每个月的天数。

int main() {
	int days, dayofweek; //days 表示输入的天数,dayofweek 表示星期几。
	int i = 0, j = 0;
	while (scanf("%d", &days) && days != -1) {
		dayofweek = days % 7;
		for(i = 2000; days >= year[type(i)]; i++)//如果剩余的天数大于等于当前年份的天数 
			days -= year[type(i)];//进入下一年 
		for(j = 0; days >= month[ type(i) ][ j ]; j++)
			days -= month[ type(i) ][ j ];
		printf("%d-%02d-%02d %s\n", i, j + 1, days + 1, week[dayofweek]);
	}
	return 0; 
}
int type(int m) { //判断第m 年是否是闰年,是则返回1,否则返回0。
	if(m % 4 != 0 || (m % 100 == 0 && m % 400 != 0)) return 0; //不是闰年
	else return 1; // 是闰年
}




发布了73 篇原创文章 · 获赞 0 · 访问量 719
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览