define _CRT_SECURE_NO_WARNINGS
include <stdio.h>
include <string.h>
using namespace std;
void NextDay(int &year, int &month, int &day) {
//存储一下月份和天数的关系
int dayOfMonth[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int isLeap; //是否是闰年
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) {
day = month;
++year;
}
}
int main() {
int year, month, day;
while (scanf("%d%d", &year, &day) != EOF) {
int next = 1;//NextDay的执行次数,计算当年的第几天
int curmonth = 1;
int curday = 1;
while (1) {
if (next==day) {
break;
}
else{
NextDay(year, curmonth, curday);
}
++next;
}
printf("%d-%2d-%2d\n", year,curmonth,curday);
}
return 0;
}
倒数第四行的代码错误 printf("%d-%2d-%2d\n", year,curmonth,curday);实际运行效果如下
错误在于格式控制时,虽然让月份和天数控制在了最小宽度为2,但是并没有标明当数字宽度不足2时如何让程序自己补全
正确的做法是在2前加上一个0,即printf("%d-%02d-%02d\n", year,curmonth,curday);