北京理工大学计算机考研机试KY258 日期累加
发布时间
阅读量:
阅读量
题目
描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
示例1
输入:
1
2008 2 3 100
复制
输出:
2008-05-13
代码解读
思路
#include<iostream>
using namespace std;
int daymonth[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 IsRun(int y){
if(y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return true;
else
return false;
}
int main(){
int n;
cin >> n;
int y,m,d,num;
for(int i = 1;i <= n;i++){
cin >> y >> m >> d >> num;
int sum = 0;
if(IsRun(y)){
for(int i = 1;i < m;i++){
sum = sum + daymonth[1][i];
}
}else{
for(int i = 1;i < m;i++)
sum = sum + daymonth[0][i];
}
sum = sum + d;
num = num + sum;
while(true){
if(IsRun(y))
{
if(num > 366)
{
y++;
num = num - 366;
}
else
break;
}else
{
if(num > 365)
{
y++;
num = num - 365;
}
else
break;
}
}
if(IsRun(y)){
for(m = 1;num > daymonth[1][m];m++)
num=num-daymonth[1][m];
}else{
for(m = 1;num > daymonth[0][m];m++)
num=num-daymonth[0][m];
}
printf("%04d-%02d-%02d\n",y,m,num);
}
}
代码解读
全部评论 (0)
还没有任何评论哟~
