获得月份天数

简介: 获得月份天数

【编程题】获得月份天数 -- 来自牛客网


链接:【BC54】获得月份天数[牛客网]

题目要求:输入年份和月份,计算这一年这个月有多少天。


输入描述:多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。

输出描述:针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。

注意:

下面👇方案中,我把代码解释放到代码里面

方案一:if...else语句

有逻辑性,方便看明白

int main()
{
  //y表示年份year,m表示月份month,d表示天数day
  int y = 0, m = 0, d = 0;
  //printf("请输入某年某月份:");
  while (scanf("%d %d", &y, &m) != EOF)
  {
    //判断月份的输入是否错误
    if (m > 12 && m < 1)
    {
      printf("输入月份错误,请重新输入:");
    }
    else
    {
      //判断年份是否闰年
      if ((y % 100 != 0 && y % 4 == 0) || (y % 400 == 0))
      {
        if (m == 2)
        {
          d = 29;
        }
        else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
        {
          d = 31;
        }
        else
        {
          d = 30;
        }
      }
      //年份不是闰年
      else
      {
        if (m == 2)
        {
          d = 28;
        }
        else if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
        {
          d = 31;
        }
        else
        {
          d = 30;
        }
      }
 
    }
    //printf("%d年%d月份的天数是:%d\n", y, m, d);
    
    //printf("请输入某年某月份:");
 
  }
  return 0;
}

方案二:数组(最简单)

int main()
{
  int y = 0, m = 0, day = 0;
  int d[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
  //注意下标: 0  1  2  3  4  5  6  7  8  9  10 11 12(1月份对应下标1,以此类推)
  //输入年份和月份
  while (scanf("%d %d", &y, &m) != EOF)
  {
    day = d[m];
    //判断是否闰年
    if ((y % 400 == 0) && ((y % 100 != 0) || (y % 4 == 0)))
    {
      if(m==2)
      {
        day++;
      }
    }
    printf("%d\n", day);
  }
}

方案三:switch语句

 

int is_runnian(int y)
{
  if ((y % 400 == 0) && ((y % 100 != 0) || (y % 4 == 0))) 
    return 1;
  else
    return 0;
}
 
int main()
{
  int y = 0, m = 0;
  while(scanf("%d %d", &y, &m)!=EOF)
  {
    int d = 31;
    switch (m)
    {
    case 4:
    case 6:
    case 9:
    case 11:
    {
      d = 30;
      break;
    }
    case 2:
    {
      if (is_runnian(y))
        d = 29;
      else
        d = 28;
      break;
    }
    }
    printf("%d\n", d);
  }
}
目录
相关文章
|
6月前
|
Java
利用Java实现月份的天数
利用Java实现月份的天数
113 0
|
6月前
指定月份计算最大天数
指定月份计算最大天数
|
6月前
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
|
6月前
计算某年某月的天数
计算某年某月的天数
55 0
jeDate可提供选择日期不超过当前日期
jeDate可提供选择日期不超过当前日期
81 1
根据日期获得当天是星期几?
根据日期获得当天是星期几?
81 0
wustojc4005求月份对应的英文名称及天数
wustojc4005求月份对应的英文名称及天数
35 0
获得月份天数
获得月份天数
92 0