获得月份天数

简介: 获得月份天数

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


链接:【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);
  }
}
目录
相关文章
|
5月前
指定月份计算最大天数
指定月份计算最大天数
|
5月前
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
日期工具,校验当年开始年份,结束年份,当月开始日期,结合素日期
|
11月前
jeDate可提供选择日期不超过当前日期
jeDate可提供选择日期不超过当前日期
75 1
|
11月前
根据日期获得当天是星期几?
根据日期获得当天是星期几?
71 0
wustojc4005求月份对应的英文名称及天数
wustojc4005求月份对应的英文名称及天数
26 0
获得月份天数
获得月份天数
84 0
判断月份天数
判断月份天数
47 0
1185. 一周中的第几天 : 简单日期统计模拟题
1185. 一周中的第几天 : 简单日期统计模拟题
|
JavaScript
js日期、月份:日期加一天等
原文:js日期、月份:日期加一天等 // 日期,在原有日期基础上,增加days天数,默认增加1天 function addDate(date, days) { if (days == undefined || days == '') { ...
1614 0