【发布时间】:2021-07-14 02:06:24
【问题描述】:
我正在为考试而学习,在一次旧考试中,有人询问以下代码的输出是什么。我对这段代码如何输出“天:33”感到困惑。有什么方法可以轻松解释吗?
编辑:感谢您的解释,是的,我知道这段代码的逻辑没有意义(就计算给定年份给定月份的实际天数而言),它只是一个古老的考试问题。
#include <stdio.h>
int calcDays(int, int);
int main(){
int days;
days = calcDays(11, 2020);
printf("days: %d\n", days);
return 0;
}
int calcDays(int month, int yr){
int days = 28;
switch(month)
{
case 2: days += 1 - yr % 4;
case 4:
case 6:
case 9:
case 11: days += 2;
default: days += 3;
}
return(days);
}
【问题讨论】:
-
请注意,
yr % 4是一个介于 0 到 3 之间的数字。 -
您的
switch/case没有breaks。 -
提示:
case失败。总是break! -
看来你需要了解一下
break声明 -
您还需要阅读公历闰年的完整规则。
标签: c switch-statement label break