题解 | 今年的第几天?
今年的第几天?
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; }
王道机试指南 文章被收录于专栏
这个专栏是参考王道机试指南中相关的练习题哦