大家根据 题目编号搜搜 就不给链接了 这两道题基本一样 但是可以练习类
KY258 日期累加
设计一个程序能计算一个日期加上若干天后是什么日期。
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出m行,每行按yyyy-mm-dd的个数输出。
输入:
1 2008 2 3 100
复制输出:
2008-05-13
复制
相似企业真题
#include
#include
using namespace std;
#include
class Date{
public:
Date(int year,int month,int day)
:_year(year)
,_month(month)
,_day(day)
{
}
static int GetDay(int year,int month)
{
static vector day={0,31,28,31,30,31,30,31,31,30,31,30,31};
int day1=0;
if(month==2&&(year%400==0||(year%4==0&&year%100!=0)))
{
return day[2]+1;
}
return day[month];
}
Date operator+(int day)
{
_day+=day;
int day1=GetDay(_year,_month);
while(_day>day1)
{
_day-=day1;
_month++;
if(_month==13)
{
_month=1;
_year++;
}
day1=GetDay(_year,_month);
}
return *this;
}
void print()
{
cout<<_year<<'-';
if(_month>0&&_month<=9)
{
cout<<0<<_month;
}
else {
cout<<_month;
}
cout<<'-';
if(_day>0&&_day<=9)
{
cout<<0<<_day;
}
else {
cout<<_day;
}
cout<>m;
while(m--)
{
int year=0,month=0,day=0,day1=0;
cin>>year>>month>>day>>day1;
Date date(year,month,day);
date=date+day1;
date.print();
}
}
KY222 打印日期
给出年分m和一年中的第n天,算出第n天是几月几号。
输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。
可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。
输入:
2000 3 2000 31 2000 40 2000 60 2000 61 2001 60
复制输出:
2000-01-03 2000-01-31 2000-02-09 2000-02-29 2000-03-01 2001-03-01
#include
using namespace std;
#include
class Date{
public:
Date(int year,int month=1,int day=1)
:_year(year)
,_month(month)
,_day(day)
{
}
static int GetDay(int year,int month)
{
static vector day={0,31,28,31,30,31,30,31,31,30,31,30,31};
int day1=0;
if(month==2&&(year%400==0||(year%4==0&&year%100!=0)))
{
return day[2]+1;
}
return day[month];
}
Date operator+(int day)
{
_day+=day;
int day1=GetDay(_year,_month);
while(_day>day1)
{
_day-=day1;
_month++;
if(_month==13)
{
_month=1;
_year++;
}
day1=GetDay(_year,_month);
}
return *this;
}
void print()
{
cout<<_year<<'-';
if(_month>0&&_month<=9)
{
cout<<0<<_month;
}
else {
cout<<_month;
}
cout<<'-';
if(_day>0&&_day<=9)
{
cout<<0<<_day;
}
else {
cout<<_day;
}
cout<