笑824 2023-11-06 20:34 采纳率: 88.9%
浏览 6
已结题

最后一个输入为啥输入不了?求解答

img


是因为回车算一个字符吗,那怎么解决呢,求各位神仙帮忙解答,后面省略,,

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-06 23:23
    关注

    【以下回答由 GPT 生成】

    问题的原因是在输入完"是否喜欢体育锻炼?"之后,键盘输入缓冲区中仍然残留了一个回车符。当程序执行到"是否有良好的卫生饮食习惯?"时,该回车符会被作为输入读取,导致最后一个输入无法正常接收。

    为了解决这个问题,可以在读取"是否有良好的卫生饮食习惯?"的输入之前,清空输入缓冲区。可以使用以下代码来清空输入缓冲区:

    fflush(stdin);
    

    修改后的代码如下:

    #include<stdio.h>
    int main() {
        float faHeight, moHeight, h;
        char sex, sports, diet;
    
        printf("请输入是男性还是女性,男性输入M,女性输入F: ");
        scanf("%c", &sex);
    
        printf("请输入父亲身高: ");
        scanf("%f", &faHeight);
    
        printf("请输入母亲身高: ");
        scanf("%f", &moHeight);
    
        if (sex == 'M') {
            h = (faHeight + moHeight) * 0.54;
        } else {
            h = (faHeight * 0.923 + moHeight) / 2;
        }
    
        printf("是否喜欢体育锻炼? 喜欢输入Y,不喜欢输入N: ");
        scanf(" %c", &sports);
    
        if (sports == 'Y') {
            h = h * 0.02 + h;
        }
    
        fflush(stdin); // 清空输入缓冲区
    
        printf("是否有良好的卫生饮食习惯? 有输入Y,没有输入N: ");
        scanf(" %c", &diet);
    
        if (diet == 'Y') {
            h = h * 0.015 + h;
        }
    
        printf("计算结果: %f", h);
        return 0;
    }
    

    这样修改后,最后一个输入就能正常接收了。



    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月15日
  • 已采纳回答 11月7日
  • 创建了问题 11月6日

悬赏问题

  • ¥50 求一位精通京东相关开发的专家
  • ¥100 求懂行的大ge给小di解答下!
  • ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
  • ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
  • ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
  • ¥100 华为手机私有App后台保活
  • ¥15 sqlserver中加密的密码字段查询问题
  • ¥20 有谁能看看我coe文件到底哪儿有问题吗?
  • ¥20 我的这个coe文件到底哪儿出问题了
  • ¥15 matlab使用自定义函数时一直报错输入参数过多