PTA——身高预测
每个父母都关心自己孩子成人后的身高,据有关生理卫生知识与数理统计分析表明,影响小孩成人后的身高的因素包括遗传、饮食习惯与体育锻炼等。小孩成人后的身高与其父母的身高和自身的性别密切相关。
设 faHeight为父亲的身高,moHeight为母亲的身高,身高预测公式为: 男性成人时身高=( faHeight+moHeight)×0.54 女性成人时身高=( faHeight×0.923+ moHeight)/2cm 此外,如果喜爱体育锻炼,那么身高可增加2%;如果有良好的卫生饮食习惯,那么身高可增加1.5%。
试编程从键盘输入用户的性别(用字符型变量sex存储,输入字符F或f表示女性,输入字符M或m表示男性)、父母身高(用实型变量存储,faHeight为父亲的身高,moHeight为母亲的身高)、是否喜爱体育锻炼(用字符型变量 sports存储,输入字符Y或y表示喜爱,输入字符N或n表示不喜爱)、是否有良好的饮食习惯(用字符型变量diet存储,输入字符Y或y表示良好,输人字符N或n表示不好)等条件,利用给定公式和身高预测方法对身高进行预测。
输入格式:
在一行中给出性别、父亲身高、母亲身高、是否喜爱体育锻炼、是否有良好饮食习惯,数据间以空格分隔。
输出格式:
输出预测的身高,保留一位小数。
做此题之前需明确ASCII码的使用
#include<stdio.h>
int main()
{
printf("%d", 'a');//输出的是a所对应ASCII码的十进制数
}
此方法可用检索字符所对应的ASCII码
//编写一个程序,读入一个字母,输出与之对应的ASCII 码值
#include<stdio.h>
int main( )
{
char a;//定义字符型变量a
a=getchar();//此函数不需要输入scanf
//可以理解为将输入的字符放在此储存单元中
printf("%d",a);
return 0;
}
思路:
首先预测身高在大类上分成预测男性身高和预测女性身高,选定性别后,再判断是否有运动和饮食的影响,最后就是注意细节!!!
此题代码如下
#include<stdio.h>
int main()
{
double faHeight, moHeight, height, x, y;
//此处之所以设置双精度数据,是因为接下来有小数
char sex, sports, diet;//注意定义变量的类型
scanf("%c %lf %lf %c %c", &sex, &faHeight, &moHeight, &sports, &diet);
if (sex == 'F' || sex == 'f')//女性
{
height = (faHeight * 0.923 + moHeight) / 2.0;
if (sports == 'Y' || sports == 'y')//是否运动
x = height * 0.02;
if (diet == 'Y' || diet == 'y')//是否健康饮食
y = height * 0.015;
}
if (sex == 'M' || sex == 'm')//男性
{
height = (faHeight + moHeight) * 0.54;
if (sports == 'Y' || sports == 'y')//是否运动
x = height * 0.02;
if (diet == 'Y' || diet == 'y')//是否健康饮食
y = height * 0.015;
}
printf("%.1lfcm", height + x + y);
//注意由于运动和健康饮食产生的影响是在原始身高上,最后再加和
return 0;
}