You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言按日期匹配季节的代码始终输出Winter,是哪里出错了?

错误原因&修正方案

1. 核心逻辑错误:strcmp用法完全写反

C语言中strcmp(str1, str2)的返回规则是:

  • 两个字符串完全相等时返回0
  • 字符串不相等时返回非0值

你代码里所有判断月份匹配的条件都只写了strcmp(inputMonth, "月份名"),实际等价于判断「输入月份不等于该月份名」,和你想要的「输入月份等于该月份名」的逻辑完全相反。
比如输入April 10时,第二个冬季判断的条件strcmp(inputMonth, "January") && (1 <= inputDay && inputDay <= 31)会完全成立:April和January不相等所以strcmp返回非0(条件为真),同时10在1-31范围内,自然就会输出Winter。

修正方法:所有月份判断的地方都加上== 0,示例如下:

// 修正前
if (strcmp(inputMonth, "December") && (21 <= inputDay && inputDay <= 30))
// 修正后
if (strcmp(inputMonth, "December") == 0 && (21 <= inputDay && inputDay <= 31))

2. 次要错误1:12月冬季日期范围错误

12月有31天,你写的范围是<=30,会导致12月31日被判定为无效,把上限改成31即可。

3. 次要错误2:8月输出语句有多余占位符

夏季8月对应的printf("%sSummer\n");多写了%s占位符,但没有传入对应字符串参数,运行时会输出乱码,删掉%s改成printf("Summer\n");即可。


内容的提问来源于stack exchange,提问作者Claudıa Villałoro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:27:02