//********************************************************************************************
//*程序作者:冰糖
//*完成日期:2019年3月8日
//*章 节:实验二
//*题 号:2
//*题 目: 身高预测:每个做父母的都关心自己孩子成人后的身高,
//* 据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、
//* 饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
//* 设faHeight为其父身高,moHeight为其母身高,身高预测公式为:
//* 男性成人时身高=(faHeight + moHeight)×0.54cm
//* 女性成人时身高=(faHeight×0.923 + moHeight)/2cm
//* 此外,如果喜爱体育锻炼,那么可增加身高2%;
//* 如果有良好的卫生饮食习惯,那么可增加身高1.5%。
//* 编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F表示女性,输入字符M表示男性)、
//* 父母身高(用实型变量存储,faHeight为其父身高,moHeight为其母身高)、
//* 是否喜爱体育锻炼(用字符型变量sports存储,输入字符Y表示喜爱,输入字符N表示不喜爱)、
//* 是否有良好的饮食习惯等条件(用字符型变量diet存储,输入字符Y表示良好,输入字符N表示不好),
//* 利用给定公式和身高预测方法对身高进行预测。
//* 编程要求:有用户输入输出提示信息。
//********************************************************************************************
#include<iostream>
using namespace std;
#include<iomanip>
int main()
{
char sex,sports,diet;
float kidHeight,faHeight,moHeight;
cout<<"请按相关提示输入信息:"<<endl;
cout<<"请输入小孩的性别(输入字符F表示女性,输入字符M表示男性):";
cin>>sex;
cout<<"请输入其父亲的身高:";
cin>>faHeight;
cout<<"请输入其母亲的身高:";
cin>>moHeight;
cout<<"他/她是否喜爱体育锻炼(输入字符Y表示喜爱,输入字符N表示不喜爱):";
cin>>sports;
cout<<"他/她是否有良好的饮食习惯等条件(输入字符Y表示良好,输入字符N表示不好):";
cin>>diet;
if(sex=='F') //女孩
{
kidHeight=(faHeight*0.923 + moHeight)/2; //计算初步预测的身高
if(sports=='Y') //若喜爱体育运动
{
kidHeight=kidHeight*1.02; //计算热爱体育运动时女孩身高
if(diet=='Y') //若既喜爱体育运动又有良好的饮食习惯
kidHeight=kidHeight*1.015; //计算此时女孩身高
else
kidHeight=kidHeight; //计算喜爱体育运动但没有良好的饮食习惯时女孩身高
}
else
{
kidHeight=kidHeight; //计算不热爱体育运动时女孩身高
if(diet=='Y') //若不喜爱体育运动但有良好的饮食习惯
kidHeight=kidHeight*1.015; //计算喜此时女孩身高
else
kidHeight=kidHeight; //计算不喜爱体育运动又没有良好的饮食习惯时女孩身高
}
}
else //男孩
{
kidHeight=(faHeight + moHeight)*0.54;
if(sports=='Y') //若喜爱体育运动
{
kidHeight=kidHeight*1.02; //计算热爱体育运动时男孩身高
if(diet=='Y') //若既喜爱体育运动又有良好的饮食习惯
kidHeight=kidHeight*1.015; //计算此时男孩身高
else
kidHeight=kidHeight; //计算喜爱体育运动但没有良好的饮食习惯时男孩身高
}
else
{
kidHeight=kidHeight; //计算不热爱体育运动时男孩身高
if(diet=='Y') //若不喜爱体育运动但有良好的饮食习惯
kidHeight=kidHeight*1.015; //计算喜此时男孩身高
else
kidHeight=kidHeight; //计算不喜爱体育运动又没有良好的饮食习惯时男孩身高
}
}
cout<<"预测的身高为:"<<fixed<<setprecision(2)<<kidHeight;
}