概述
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出
输出m行,每行按yyyy-mm-dd的个数输出。
样例输入
1 2008 2 3 100
样例输出
2008-05-13
个人思路:日期处理的问题主要是得区分闰年平年二月的天数及每个月的天数,细节比较繁琐,本题输格式也有了限定yyyy-mm-dd 且需要补0,增加了细节问题,采用一个二维数组分别存储平年闰年的月份。每次数组内判断闰年平年(详细见代码),并且我将累加n天分解为每次加一天,使用while(n--)循环达到累加n天,分解成累加一天的问题。参考代码比较好理解:
#include <iostream>
#include <iomanip>
using namespace std;
int a[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}};//int a[][0]代表平年月份a[][1]代表闰年
bool isLeap(int year)
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
int main()
{
int x; //输入测试用例的组数
cin >> x;
while(x--)
{
int y,m,d,n; //年月日及其相加天数
cin >> y >> m >> d >> n;
while(n--)//相当于d天数 n次加一
{
for(int i = 0; i < 13; i++)
{
if(m == i && d
< a[i][isLeap(y)])
{
d++;
break;
}
else if(m == i && d
== a[i][isLeap(y)])
{
d = 1;
m++;
if(m > 12)
{
m = 1;
y++;
}
break;
}
}
}
cout << setw(4) << setfill('0') << y << "-";
cout << setw(2) << setfill('0') << m << "-";
cout << setw(2) << setfill('0') << d << endl;
}
return 0;
}
最后
以上就是朴实鸡翅为你收集整理的code up 日期累加题目描述输入输出样例输入样例输出的全部内容,希望文章能够帮你解决code up 日期累加题目描述输入输出样例输入样例输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复