【牛客网】北京理工大学 日期类 解题报告

Chynna ·
更新时间:2024-11-13
· 972 次阅读

题目描述

编写一个日期类,要求按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



北京理工大学 牛客 大学

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章