输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
2 1999 10 20 2001 1 31
1999-10-21 2001-02-01
注意个位数日期前面要有0。
#include<iostream> using namespace std; int main(){ int n; cin>>n; int table[12]={31,28,31,30,31,30,31,31,30,31,30,31}; while(n>0){ int y,m,d; cin>>y>>m>>d; if(d==table[m-1]&&m!=12){ m=m+1; d=1; } else if(d==table[m-1]&&m==12){ y=y+1; m=1; d=1; } else d=d+1; if(m<10) cout<<y<<"-0"<<m; else cout<<y<<"-"<<m; if(d<10) cout<<"-0"<<d<<endl; else cout<<"-"<<d<<endl; n--; } }
#include<iostream> #include<cstdio> //#define IsLeapYear(x) ((x%4==0&&x%100!=0)||(x%400==0)?1:0); using namespace std; const int daytab[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; typedef struct date{ int year,month,day; }Date; int trans2num(Date x){ int number=0; int month=x.month,day=x.day; for(int i=0; i<month; i++){ number += daytab[i]; } number += day; return number; } int main(){ int plus; int CaseNumber; cin>>CaseNumber; Date date_1; while(CaseNumber--){ scanf("%04d %02d %02d",&date_1.year,&date_1.month,&date_1.day); plus = trans2num(date_1)+1; if(plus>365){ plus -= 365; date_1.year += 1; } int month=0,day; while(plus>daytab[month]){ plus -= daytab[month]; month ++; } day = plus; printf("%04d-%02d-%02d\n",date_1.year,month,day); } return 0; }
#include<bits/stdc++.h>
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(){
int n,y,m,d;
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++){
scanf("%d %d %d",&y,&m,&d);
int t=d+1;
d=t%(a[m]+1);
if(d==0) d=1;
int tt=m+t/(a[m]+1);
m=(tt)%13;
if(m==0) m=1;
y=y+tt/13;
printf("%d-%02d-%02d\n",y,m,d);
}
}
}
#include<iostream> using namespace std; //区分闰年,平年中2月的区别,以及月末时期,年末时期的进位 void caculate(int year,int month,int day) { day += 1; if(year % 400 == 0 ||(year % 4 == 0 && year % 100 != 0)) { if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { if(day > 31) { day = 1; month += 1; if(month > 12) { year += 1; month = 1; } } } else if(month == 2) { if(day > 29) { day = 1; month += 1; } } else { if(day > 30) { day = 1; month += 1; } } } else { if(month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { if(day > 31) { day = 1; month += 1; if(month > 12) { year += 1; month = 1; } } } else if(month == 2) { if(day > 28) { day = 1; month += 1; } } else { if(day > 30) { day = 1; month += 1; } } } cout << year << "-"; printf("%02d-%02d\n",month,day);//c的格式化输出右对齐宽度为2,不足用0补位 } int main(void) { int m; while(cin >> m) { while(m--) { int year,month,day; cin >> year >> month >> day; caculate(year, month, day); } } return 0; }
#include<stdio.h> int main() { int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}}; int n,y,m,d,key; scanf("%d",&n); while(n--) { scanf("%d%d%d",&y,&m,&d); key=0; if(y%4==0&&y%100!=0||y%400==0) key=1; d=d+1; if(d>a[key][m])//月份加一 { m=m+1;d=1; } if(m>12)//年份加一 { y=y+1;m=1;d=1; } printf("%4d-%02d-%02d\n",y,m,d); } }
#include <stdio.h> int month_day[12]= {31,28,31,30,31,30,31,31,30,31,30,31}; int main() { int m; while(scanf("%d",&m)!=EOF) { for(int i=0; i<m; i++) { int year,month,day; scanf("%d%d%d",&year,&month,&day); int days=month_day[--month]; month+=day/days; day%=days; year+=month/12; month%=12; printf("%04d-%02d-%02d\n",year,month+1,day+1); } } }
#include <bits/stdc++.h> using namespace std; int main(){ int y,m,d,n; cin>>n; while(n--){ cin>>y>>m>>d; switch(d){ case 28: if(m==2) cout<<y<<"-0"<<m+1<<"-01"<<endl; else if(m<10)cout<<y<<"-0"<<m<<"-29"<<endl; else cout<<y<<"-"<<m<<"-29"<<endl; break; case 30: if(m==4||m==6) cout<<y<<"-0"<<m+1<<"-01"<<endl; else if(m==9||m==11) cout<<y<<"-"<<m+1<<"-01"<<endl; else if(m==12)cout<<y<<"-"<<m<<"-31"<<endl; else cout<<y<<"-0"<<m<<"-31"<<endl; break; case 31: if(m==12) cout<<y+1<<"-01-01"<<endl; else if(m==10) cout<<y<<"-"<<m+1<<"-01"<<endl; else cout<<y<<"-0"<<m+1<<"-01"<<endl; break; default: if(m<10){ if(d+1<10) cout<<y<<"-0"<<m<<"-0"<<d+1<<endl; else cout<<y<<"-0"<<m<<"-"<<d+1<<endl; } else { if(d+1<10) cout<<y<<"-"<<m<<"-0"<<d+1<<endl; else cout<<y<<"-"<<m<<"-"<<d+1<<endl; } } } return 0; }
#include<iostream> #include<iomanip> using namespace std; int dayofmonth[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; class Data { int year; int month; int day; public: Data(int year=0, int month=0, int day=0) { this->year = year; this->month = month; this->day = day; } ~Data() {}; void getdata() { day++; if (day > dayofmonth[month]) { day = 1; month++; if (month > 12) { year++; } } cout << year << "-" << setfill('0') << setw(2) << month << "-" << setfill('0') << setw(2) << day << endl; } }; int main() { int n, year, month, day; while (cin >> n) { Data *a[n]; for(int i=0;i<n;i++)//把数据全部输入,所以前面创建了指针数组指向每个类对象 { cin >> year >> month >> day; a[i] = new Data(year, month, day); } for (int i = 0; i < n; i++)a[i]->getdata();//再把要求的答案全部输出 } return 0; }
#include<iostream> using namespace std; int daytab[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int main() { int caseNumber; scanf("%d", &caseNumber); int year, month, day; int newYear, newMonth, newDay; for (int i = 0; i < caseNumber; i++) { scanf("%d%d%d", &year, &month, &day); //除非输入日期是12月的最后一天,则第二天是新的一年 //否则,年份不变 if (month == 12 && day == 31) { newYear = year + 1; newMonth = 1; newDay = 1; printf("%04d-%02d-%02d\n", newYear, newMonth, newDay); continue; } else newYear = year; //排除本年度最后一天 //如果输入日期是本月份最后一天,则第二天是下一个月 //否则,月份不变 if (daytab[month] == day) { newYear = year; newMonth = month + 1; newDay = 1; printf("%04d-%02d-%02d\n", newYear, newMonth, newDay); continue; } else newMonth = month; //排除本年分最后一天和本月最后一天 //只需将天数加一即可 newDay = day + 1; printf("%04d-%02d-%02d\n", newYear, newMonth, newDay); } return 0; }
#include <iostream>
#include <cstdio>
using namespace std;
int monDay[12]={31,28,31,30,31,30,31,31,30,31,30,31};
class Date
{
private:
int year,mon,day;
public:
void cal()
{
cin >> year >> mon >> day;
if(++day > monDay[mon-1])
{
mon++;
day=1;
if(mon > 12)
{
year++;
mon=1;
}
}
printf("%d-%02d-%02d\n",year,mon,day);
}
};
int main()
{
int m;
cin >> m;
while(m--)
{
Date x;
x.cal();
}
return 0;
}
#include<iostream> #include<cstring> using namespace std; const int month[13] = { 0,31, 28,31,30,31,30,31,31,30,31,30,31 }; int fun(int year, int mon, int day) { if (mon == 12 && day == 31) { year++; mon = day = 1; } else { if (day < month[mon]) { day++; } else { mon++; day = 1; } } printf("%04d-%02d-%02d\n", year, mon, day); return 0; } int main() { int m, year, mon, day; while (cin >> m) { for (int i = 0; i < m; i++) { cin >> year >> mon >> day; fun(year, mon, day); } } return 0; }
#include <stdio.h> int day[13] = {0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int main() { int m; while(~scanf("%d", &m)) { while(m--) { int y, m, d; scanf("%d%d%d", &y, &m, &d); if(y % 400 == 0 && (y % 4 == 0 && y % 100 != 0)) day[2] = 29; else day[2] = 28; d++; if(d == day[m] + 1) { m++; d = 1; if(m > 12) { y++; m = 1; } } printf("%04d-%02d-%02d\n", y, m, d); } } }
#include <iostream> #include <cstdio> using namespace std; bool isleap(int x){ if(x%4==0&&x%100!=0||x%400==0) return true; else return false; } int main() { int n; cin>>n; int month[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} }; while(n--){ int y,m,d; cin>>y>>m>>d; int sum=d+1; while(sum>month[isleap(y)][m]){ sum-=month[isleap(y)][m]; m++; if(m>12){ y++; m=1; } } printf("%04d-%02d-%02d",y,m,sum); cout<<endl; } }
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { // TODO 自动生成的方法存根 Scanner in = new Scanner(System.in); int num = in.nextInt(); for (int i = 0; i < num; i++) { int year = in.nextInt(); int month = in.nextInt(); int day = in.nextInt(); if (day == 30 && (month == 4 || month == 6 || month == 9 || month == 11)) { month += 1; day = 1; } else if (day == 31 && (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10)) { month += 1; day = 1; } else if (day == 31 && month == 12) { year += 1; month = 1; day = 1; } else if (day == 28 && month == 2) { month += 1; day = 1; } else { day += 1; } System.out.print(year); if (month < 10) { System.out.print("-0" + month); } else { System.out.print("-" + month); } if (day < 10) { System.out.print("-0" + day); } else { System.out.print("-" + day); } System.out.println(); } } }
#include <stdio.h> int main() { int n; scanf("%d",&n); int year[]={0,31,0,31,30,31,30,31,31,30,31,30,31}; while (n--) { int y,m,d; scanf("%d %d %d",&y,&m,&d); if ((y%4==0&&y%100!=0)||y%400==0) { year[2]=29; }else { year[2]=28; } d=d+1; if (year[m]<d) { d=1; m=m+1; if (m>12) { m=1; y=y+1; } } printf("%4d-%02d-%02d\n",y,m,d); } return 0; }
#include<stdio.h> int Months[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; bool IsRun(int year){ if((year%100!=0&&year%4==0)||(year%400==0)){ return true; }else return false; } void nextDay(int &year,int &month,int &day){ int maxDay = Months[month]; if(month==2&&IsRun(year)) maxDay++; if(day==maxDay){ if(month==12) { year++; month = 1; day =1;} else {month++; day = 1;} }else{ day ++; } } int main(){ int N; int y,m,d; scanf("%d",&N); for(int i=0;i<N;i++){ scanf("%d%d%d",&y,&m,&d); nextDay(y,m,d); printf("%d-",y); if(m/10==0) printf("0"); printf("%d-",m); if(d/10==0) printf("0"); printf("%d\n",d); } }
#include <stdio.h> int arr[2][12] = { {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31} }; int main() { int n; scanf("%d", &n); for (int i = 0; i < n; ++i) { int y, m, d; scanf("%d%d%d", &y, &m, &d); int b = (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0); // 是否闰年 d++; if (d > arr[b][m - 1]) { // 若当前日为当前月的最后一天,需要改变月 d = 1; m++; if (m == 13) { // 若当前月是本年的最后一月,需要改变年 y++; m = 1; } } if (m < 10 && d < 10) { printf("%d-0%d-0%d\n", y, m, d); } else if (m >= 10 && d < 10) { printf("%d-%d-0%d\n", y, m, d); } else if (m < 10 && d >= 10) { printf("%d-0%d-%d\n", y, m, d); } else { printf("%d-%d-%d\n", y, m, d); } } return 0; }
#include <iomanip> #include <iostream> #include <istream> #include <ostream> using namespace std; inline int daysOfMonth(int month) { //一个月的天数 switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: return 28; //测试数据不会有闰年 default: return 30; } } class Date { //日期类 private: int year, month, day; //年月日 public: //重载输入流运算符 friend istream& operator>>(istream& in, Date& date); //重载输出流运算符 friend ostream& operator<<(ostream& out, const Date& date); //重载前置“++”运算符 Date& operator++(); }; istream& operator>>(istream& in, Date& date) { in >> date.year >> date.month >> date.day; return in; } ostream& operator<<(ostream& out, const Date& date) { out << date.year << "-" << setw(2) << setfill('0') << date.month << "-" << setw(2) << setfill('0') << date.day; return out; } Date& Date::operator++() { day++; if (day > daysOfMonth(month)) { day -= daysOfMonth(month); month++; if (month > 12) { month -= 12; year++; } } return *this; } int main() { int m; cin >> m; while (m--) { Date date; cin >> date; cout << ++date << endl; } return 0; }
#include <iostream> #include <cstdio> #include<iomanip> using namespace std; int daytab[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 is_leap_year(int year) { return (year%4==0&&year%100==0) || year%400==0; } int day_of_year(int year) { if(is_leap_year(year)) return 366; return 365; } int main() { int m,year,month,day; cin>>m; while(m-->0) { cin>>year>>month>>day; int count = day+1; int row = is_leap_year(year); //year for(int i = 1; i < month; i++) { count+=daytab[row][i]; } if(count>day_of_year(year)) { count-=day_of_year(year); year++; } //month row = is_leap_year(year); for(int i = 1; i < 13; i++) { if(count<=daytab[row][i]) { month=i; break; } count-=daytab[row][i]; } day=count; cout<<setw(4)<<setfill('0')<<year<<"-"; cout<<setw(2)<<setfill('0')<<month<<"-"; cout<<setw(2)<<setfill('0')<<day<<endl; } }