2 solutions

  • 0
    @ 2025-10-30 21:55:15

    这道题是要我们根据输入的年、月、日,算出来这是这一年的第几天。咱们可以这么来做哈。

    解题步骤

    1. 判断是否是闰年:闰年的2月有29天,平年的2月有28天。闰年的判断规则是:能被4整除但不能被100整除,或者能被400整除的年份就是闰年。
      • 比如说2000年,它能被400整除,所以2000年就是闰年;再比如2018年,它既不能被400整除,也不能被4整除,所以2018年就是平年。
    2. 计算每个月的天数:除了2月因为闰年和平年不同,其他月份的天数是固定的。1、3、5、7、8、10、12月有31天,4、6、9、11月有30天。
    3. 计算总天数:先把前面几个月的天数加起来,再加上当前月份的天数,就得到这是这一年的第几天啦。

    C++代码示例

    #include<bits/stdc++.h>
    using namespace std;
    
    // 判断是否是闰年的函数
    bool isLeapYear(int y) {
        return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0);
    }
    
    int main() {
        int y, m, d;
        // 输入年、月、日
        cin >> y >> m >> d;
    
        // 每个月的天数,2月的天数先按平年算
        int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    
        // 如果是闰年,2月的天数改为29天
        if (isLeapYear(y)) {
            days[2] = 29;
        }
    
        // 计算前面几个月的总天数
        int totalDays = 0;
        for (int i = 1; i < m; i++) {
            totalDays += days[i];
        }
    
        // 再加上当前月份的天数
        totalDays += d;
    
        // 输出结果
        cout << totalDays << endl;
    
        return 0;
    }
    

    代码解释

    1. isLeapYear函数:这个函数是用来判断是不是闰年的。如果是闰年就返回true,不是就返回false
    2. days数组:这个数组存的是每个月的天数,2月的天数先按平年的28天算。
    3. 判断闰年并修改2月天数:如果是闰年,就把days[2]改成29天。
    4. 计算前面几个月的总天数:用一个for循环把前面几个月的天数加起来。
    5. 加上当前月份的天数:把前面几个月的总天数加上当前月份的天数,就得到这是这一年的第几天啦。
    6. 输出结果:最后把结果输出就好啦。

    • 0
      @ 2025-10-26 22:56:28

      简单分析

      🌟关键思路:先计算前面每个月的天数总和,再加上当前月的天数。要注意区分平年和闰年,闰年 2 月有 29 天,平年 2 月有 28 天哦😉。 🚫易错点:判断闰年的条件别弄错啦,是能被 4 整除但不能被 100 整除,或者能被 400 整除。还有在累加月份天数的时候,别把月份数和天数弄混咯🤭。

      详细解题报告

      📖题目内容

      小明每天都坚持写日记,突然有一天小明在想,我今年写了多少篇日记了?一篇一篇的数好麻烦,没办法小明只能把这个艰难的问题交给聪明的你来解决。输入三个整数 y,m,d 分别表示年月日,数据均在 int 范围内。输出一个整数,表示这是今年的第几天。

      🧐题意分析

      这道题就是让我们根据输入的年、月、日,算出这一天是这一年的第几天。我们要考虑每个月的天数不一样,而且 2 月的天数还会因为平年和闰年而不同呢。

      ⭐难度等级

      ★★ 这道题对于刚接触编程的同学来说,有一点点小难度,主要是要处理平年和闰年的问题,还有月份天数的累加。

      💡解题思路

      1. 首先,我们要判断这一年是平年还是闰年。闰年的判断条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
      2. 然后,我们用一个数组来存储每个月的天数。如果是闰年,2 月的天数就改成 29 天。
      3. 接着,我们把前面每个月的天数加起来,再加上当前月的天数,就得到这是今年的第几天啦。

      🤔解题反思

      在做这道题的时候,要特别注意闰年的判断条件,不能写错。还有数组的下标,要和月份对应好,别弄乱了。另外,代码的逻辑要清晰,一步一步算,这样就不容易出错啦。

      🖥️参考程序

      #include<bits/stdc++.h>
      using namespace std;
      
      // 判断是否为闰年的函数
      bool isLeapYear(int year) {
          // 能被 4 整除但不能被 100 整除,或者能被 400 整除就是闰年
          return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
      }
      
      int main() {
          int y, m, d;
          // 输入年、月、日
          cin >> y >> m >> d;
      
          // 存储每个月的天数,下标从 1 开始,0 不用
          int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
      
          // 如果是闰年,2 月有 29 天
          if (isLeapYear(y)) {
              days[2] = 29;
          }
      
          int totalDays = 0;
          // 累加前面每个月的天数
          for (int i = 1; i < m; i++) {
              totalDays += days[i];
          }
      
          // 加上当前月的天数
          totalDays += d;
      
          // 输出结果
          cout << totalDays << endl;
      
          return 0;
      }
      
      • 1

      Information

      ID
      226
      Time
      1000ms
      Memory
      64MiB
      Difficulty
      8
      Tags
      # Submissions
      16
      Accepted
      7
      Uploaded By