敲一行 2020-09-21 12:45 采纳率: 0%
浏览 70

新手练习C语言,如图代码,为什么会跳过sports的输入?

#include
int main()
{
float faHeight,moHeight,x,y;
char sex,sports,diet;
printf("小孩的性别(M为男,F为女):");scanf("%c",&sex);
printf("父母各自的身高:");scanf("%f,%f",&faHeight,&moHeight);
x=(faHeight+moHeight)*0.54;
y=(faHeight*0.923+moHeight)/2;
printf("是否喜爱体育锻炼(Y喜爱,N不喜爱):");sports=getchar();

if(sports=='Y')
{x=x*1.02;y=y*1.02;}
printf("是否有良好的饮食习惯(Y是,N不是):");diet=getchar();
if(diet=='Y')
{x=x*1.015;y=y*1.015;}
printf("预测的身高为:") ;
if(sex=='M')
printf("%4.3f",x);
else
printf("%4.3f",y);
return 0;
}
图片说明
如图,输入完父母的身高后再按回车就跳过了对sports的输入,请问这是哪里出错了呢?

  • 写回答

2条回答 默认 最新

  • jingluan666 2020-09-21 13:55
    关注

    调试你会发现,在输入身高按回车后,换行符\n直接赋给了getchar()

    所以这里还是要使用scanf

    评论

报告相同问题?

悬赏问题

  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆
  • ¥15 arbotix没有/cmd_vel话题
  • ¥15 odoo17的分包重新供应路线如何设置?可从销售订单中实时直接触发采购订单或相关单据