要怎么改才能输出预期的结果希望有人能解答一下

问题遇到的现象和发生背景

依次输入F 182 162 N Y 输入的结果是165.0cm预期结果应该是167.5cm,要怎么改才能输出预期的结果希望有人能解答一下

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include
#define fh faHeight
#define mh moHeight
#define s sports
#define d diet
int main()
{
    float fh, mh, H;
    char sex, s, d;
    scanf("%c%f%f%c%c", &sex, &fh, &mh, &s, &d);
    if (sex == 'M' || sex == 'm') {
        H = (fh + mh) * 0.54;
    }
    else if (sex == 'F' || sex == 'f'){
        H = (fh * 0.923 + mh) / 2.0;
}
if (s == 'Y' || s == 'y') {
    H *= 1.02;
}
if (d == 'Y' || d == 'y') {
    H *= 1.015;
}
printf("%.1fcm\n", H);
}

运行结果及详细报错内容
我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

输入改为F 182 162NY
162 N Y之间的空格要删掉
或者输入不变,但scanf语句改为
scanf("%c%f%f %c %c", &sex, &fh, &mh, &s, &d);

scanf("%c%f%f%c%c", &sex, &fh, &mh, &s, &d);
改成
scanf("%c", &sex);
getchar();
scanf("%f", &fh);
getchar();
scanf("%f", &mh);
getchar();
scanf("%c", &s);
getchar();
scanf("%c", &d);
getchar();