KY258 日期累加.
#includeusing namespace std; const int N = 13; int arr[N] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int GetMonthDay(int year, int month) { //判断闰年的情况 if(month == 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) return 29; //平常年 return arr[month]; } int main() { int n = 0; cin >> n; for(int i = 0; i < n; i++) { int y , m ,d, num; cin >> y >> m >> d >> num; d += num; while(d > GetMonthDay(y, m)) { d -= GetMonthDay(y, m); m++; if(m == 13) m = 1, y++; } printf("%4d-%02d-%02dn", y, m, d); } return 0; }
KY222 打印日期.
#includeusing namespace std; const int N = 13; int arr[N] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int y, m; while(cin >> y >> m) { if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) arr[2] += 1; //润年 int i = 0; for( i = 1; i <= 12; i++ ) { if(m > arr[i]) m -= arr[i]; //当前天减去当前月份天数 else break; //相等或者小于的情况 } printf("%4d-%02d-%02dn", y,i,m) ; //大于年、月、天 } return 0; }
计算日期到天数转换.
#includeusing namespace std; const int N = 13; int arr[N] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int y, m, d; while(cin >> y >> m >> d) { int ret = 0; if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) arr[2] += 1; for(int i = 1; m <= 12 && i <= m - 1; i ++) { ret += arr[i]; } ret += d; printf("%dn",ret); } return 0; }



