在线编译器 C

#include <stdio.h> #include <math.h> int main() { int a; char ans[4][7]={"winter", "spring", "summer", "autumn"}; scanf("%d",&a); printf("%s",ans[(a+1)/4]);//is it correct that 12,1,2 is "winter"and so on so on?? return 0; }
这段代码根据输入的月份数字(1-12)输出对应的季节名称。它把月份分成四组,每组三个月,用公式 (a+1)/4 计算数组索引。

代码有一个边界问题。当输入月份为12时,(12+1)/4 的结果是3,对应数组索引3,输出"autumn"。但按照注释中的期望,12月应该属于冬季。

- 检查一下月份分组与数组索引的对应关系。冬季包含12、1、2月,这些月份在计算索引时是否都落到了同一个索引值上?
- 考虑一下整数除法的特性,以及如何调整公式让12月与1、2月归入同一组。