C语言 身高预测的问题

题目描述:

每个做父母的都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后身高的因素有遗传、饮食习惯与坚持体育锻炼等。小孩成人后身高与其父母身高和自身性别密切相关。设faHeight为其父身高,moHeight为其母身高,身高预测公式为: ? 男性成人时身高 = (faHeight + moHeight) * 0.54(cm) ? 女性成人时身高 = (faHeight * 0.923 + moHeight) / 2(cm) 此外,如果喜爱体育锻炼,那么可增加身高2%,如果有良好的卫生饮食习惯,那么可增加身高1.5%。编程从键盘输入你的性别(用字符型变量存储,输入字符f表示女性,输入字符m表示男性)、父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、是否喜爱体育锻炼(用字符型变量存储,输入字符y表示喜爱,输入字符n表示不喜爱)、是否有良好的饮食习惯等条件(用字符型变量存储,输入字符y表示喜爱,输入字符n表示不喜爱),利用给定公式和身高预测方法对你的身高进行预测。

输入描述:

从键盘输入性别、父母身高、是否喜爱体育锻炼、是否有良好的饮食习惯等条件。

输出描述:

身高(cm)。

样式输入:

f 165 155 y y

样式输出:

159.07

问题描述
#include <stdio.h>
void main()
{
float faHeight=0,moHeight=0;
float Height=0;
char sex,sport,food;

getchar(sex);
scanf("%f",&faHeight);
scanf("%f",&moHeight);
getchar(sport);
scanf("%c",&sport);
getchar(food);
scanf("%c",&food);
if (sex=='f')
Height=(faHeight * 0.923 + moHeight)/2;
else if (sex=='m')
Height=(faHeight + moHeight) * 0.54;

// (sex=='f')?(Height=faHeight * 0.923 + moHeight) / 2:(Height=(faHeight + moHeight) * 0.54)
// (sport=='y')?(Height*0.02):(Height=Height);
// (food=='y')?(Height*0.015):(Height=Height);/*问题2*/
if (sport=='y')
Height=Height*0.02;

if (food=='y')
Height=Height*0.015;

printf("%.2f",Height);

}
那么问题来了
getchar()怎么用啊
问题二处,如果想使用条件运算符,不想用if怎么修改。
程序应该怎么修改才正确

getchar(sport);应该是sport= getchar();

不用if判断会很麻烦,用了if判断更简单。
if(food=='y') Height *=0.015;追问

会用if,但是想用条件运算符写。上面的三个if怎么用条件运算符表示啊????2.问题是OJ说答案错误啊?…

还有输入的时候最后的y

y回车怎么打啊

用scanf(/*)??

追答

可以用条件运算符,不知道你说的是是将三个if组合在一起用三目运算符还是分开?

追问

可以都说一下不,不怎么懂,总是出错……

追答

说第一个吧

if (sex=='f')
Height=(faHeight * 0.923 + moHeight)/2;
else if (sex=='m')
Height=(faHeight + moHeight) * 0.54;

(sex<='f')?(Height=(faHeight * 0.923 + moHeight)/2):(Height=(faHeight + moHeight) * 0.54)

温馨提示:答案为网友推荐,仅供参考
相似回答