编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入描述:
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
示例1
输入
复制
2
1999 10 20
2001 1 31
输出
复制
1999-10-21
2001-02-01
备注:
注意个位数日期前面要有0。
题解
#include
#include
int day_month[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}
};
bool isLeap(int year){//判断是否是闰年
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main()
{
int year, month = 1, day = 0;
int i, m;
while(scanf("%d", &m) != EOF){
while(m--){
scanf("%d%d%d", &year, &month, &day);
if(day + 1 > day_month[month][isLeap(year)]){//超过当月天数
month++;
day = 1;//日期变为下个月的1号
}
else{
day++;
}
if(month == 13){//满十二个月
year++;
month=1;//日期变为下一年的1月
}
printf("%04d-%02d-%02d\n", year, month, day);
month = 1, day = 0;//重新初始化
}
}
return 0;
}
wyatt007
原创文章 191获赞 213访问量 4万+
关注
私信
展开阅读全文
作者:wyatt007