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

为什么编写的C语言代码输入Y不生效但输入N可正常运行

问题原因
  • 变量类型与输入格式完全不匹配:代码中定义fever为float浮点类型,scanf使用%f格式符用于读取浮点数,但实际需要用户输入的是Y/N类字符。当输入字符时,scanf会匹配失败,不会修改fever的取值,fever会保留未初始化的随机垃圾值,几乎不可能等于'y'对应的ASCII编码值,因此if(fever == 'y')判断永远为假,始终走else分支。
  • 输入N看似正常是巧合:N对应的业务逻辑本来就应该进入else分支,不管输入的是Y、N还是其他非浮点数内容,都会触发else分支,只是输入N时刚好和预期结果一致,本质逻辑是错误的。
修复代码
#include <stdio.h>

int main(){
    char fever;

    printf("do you have fever? Enter Y or N: ");
    // 格式符前加空格可过滤前置空白字符,避免读取到残留的换行、空格
    scanf(" %c", &fever);
    
    if(fever == 'y' || fever == 'Y') {
        printf("you have symptom\n");
    } 
    else {
        printf("you dont have symptom\n");
    }

  return 0;
}

内容的提问来源于stack exchange,提问作者qal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:08