题解 | 今年的第几天?
今年的第几天?
https://www.nowcoder.com/practice/ae7e58fe24b14d1386e13e7d70eaf04d
#include <stdio.h>
using namespace std;
//法二:利用NextDay函数
void NextDay(int& year, int& month,
int& day) { //引用,NextDay函数中的三个值发生改变时,main函数中的三个值也改变
//相当于直接访问main函数中的三个值,
//&出现在定义或形参当中,表示引用的意思;出现在其他位置,表示取地址
//存储一下月份和天数的关系(数组)
int dayOfmonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
//是否是闰年
bool isLeap;
isLeap = year % 400 == 0 || year % 100 != 0 && year % 4 == 0;
if (isLeap) {
dayOfmonth[2] = 29;
}
++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);
}
int main() {
int year, month, day;
while (scanf("%d%d%d", &year, &month, &day) != EOF) {
int next = 1; //表示是一年中的第几天
int curmonth = 1, curday = 1; //当前年月是1月1日,从1.1开始
while (1) {
if (curmonth == month && curday == day) {
break;
}
NextDay(year, curmonth, curday);
next++;
}
printf("%d\n", next);
}
return 0;
}
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦