题解 | 今年的第几天?

今年的第几天?

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;
}

王道机试指南 文章被收录于专栏

这个专栏是参考王道机试指南中相关的练习题哦

全部评论

相关推荐

02-26 16:52
门头沟学院 Java
Lunarloop:董事长亲自到ssob来要IM项目的技术方案来了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务