前言:
21考研,不论能否进复试记录一下准备路上写下的垃圾代码。本来啃《算法笔记》,但是感觉太多了做不完,改做王道机试指南。
题目描述:
设计一个程序能计算一个日期加上若干天后是什么日期。
输入
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
解答:
#include <stdio.h>
const int daytab[2][13] = {
{
0,31,28,31,30,31,30,31,31,30,31,30,31},
{
0,31,29,31,30,31,30,31,31,30,31,30,31}
};
bool isleapyear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0));
}
int main()
{
int m, year, mon, day, date;
scanf("%d", &m);
for (int j = 0; j < m; j++) {
scanf("%d%d%d%d", &year, &mon, &day, &date);
date += day;
for (int i = mon; i < 13; i++)
{
if ((date - daytab[isleapyear(year)][i]) > 0)
date -= daytab[isleapyear(year)][i];
else break;
mon++;
if (mon == 13) {
mon = 1;
i = 1;
year++;
}
}
day = date;
printf("%04d-%02d-%02d\n", year, mon, day);
}
return 0;
}
牛客网上的OJ,不能全对,不知道为什么,也不明白这个用例啥意思,日期还往前推了。
大概是题目出问题了。