3607. 打印日期
⭐️难度:简单
⭐️类型:模拟
📖题目:题目链接
📚题解:
利用好NextDay函数。
#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<vector>// vector不需要.h#include<list>#include<set>// // 可以用 set 和 multiset#include<unordered_set>// 可以用 unordered_set 和 unordered_multisetusingnamespacestd;voidNextDay(int&year,int&month,int&day){intdayOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};intisLeap;// 是否是闰年if(year%400==0||(year%4==0&&year%100!=0)){// 闰年二月29天dayOfMonth[2]=29;}day++;if(day>dayOfMonth[month]){day=1;month++;}if(month>12){month=1;year++;}}intmain(){intyear=0;intnum=0;while(scanf("%d%d",&year,&num)!=EOF){intmonth=0;intday=0;intcount=0;while(num!=count){NextDay(year,month,day);count++;}printf("%04d-%02d-%02d\n",year,month,day);}return0;}答案:
#include<stdio.h>#include<string.h>usingnamespacestd;voidNextDay(int&year,int&month,int&day){// & 出现在定义or形参当中 表示引用的意思 出现在其他位置,表示取地址// 存储一下 月份和天数的对应关系intdayOfMonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};intisLeap;// 是否是闰年isLeap=year%400==0||year%4==0&&year%100!=0;if(isLeap){dayOfMonth[2]=29;}else{dayOfMonth[2]=28;}++day;if(day>dayOfMonth[month]){day=1;++month;}if(month>12){month=1;++year;}//printf("NextDay year = %d, month = %d, day = %d\n", year, month, day);}intmain(){intyear,days;while(scanf("%d%d",&year,&days)!=EOF){intmon=1;intday=1;for(inti=1;i<days;++i){NextDay(year,mon,day);}printf("%04d-%02d-%02d\n",year,mon,day);}return0;}