目录
【编程题】获得月份天数 -- 来自牛客网
方案一:if...else语句
方案二:数组(最简单)
方案三:switch语句
【编程题】获得月份天数 -- 来自牛客网
链接:【BC54】获得月份天数[牛客网]
题目要求:输入年份和月份,计算这一年这个月有多少天。
输入描述:多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。
输出描述:针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。
注意:
下面👇方案中,我把代码解释放到代码里面
方案一:if...else语句
有逻辑性,方便看明白
int main()
{//y表示年份year,m表示月份month,d表示天数dayint 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;elsereturn 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;elsed = 28;break;}}printf("%d\n", d);}
}
***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:“我们风雨兼程,绝不空手而归”。
我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!!
好了划走吧。